Statically Reverse Engineering Shellcode - IDA to Ghidra

Oct 05 2020

Tôi đang cố gắng làm theo hướng dẫn sử dụng IDA trong ví dụ này. https://0ffset.net/reverse-engineering/malware-analysis/common-shellcode-techniques/

Băm: 9d7e34250477acf632c6c32fc2c50d3b

Trong ví dụ, sau khi giải mã giai đoạn 2, đây là kết quả:

Khi tôi lặp lại các bước tương tự với Ghidra, tôi nhận được kết quả sau:

Tôi đã theo dõi hội đồng để cố gắng xem liệu tôi có thể tìm ra những gì khi sai hoặc những gì đang xảy ra mà chưa có kết quả.

Trong khi tìm kiếm, tôi đã xem qua các tài liệu tham khảo sau: https://c9x.me/x86/html/file_module_x86_id_139.html https://en.wikipedia.org/wiki/HLT_(x86_instruction)

Sẽ được đánh giá cao nếu ai đó có thể chỉ cho tôi đi đúng hướng.

CHỈNH SỬA: Sau khi Paweł Łukasik chỉ ra lỗi của tôi, nó hoạt động:

Trả lời

2 PawełŁukasik Oct 05 2020 at 02:12

Bắt đầu từ địa chỉ, 0x56tất cả các hướng dẫn của bạn dường như bị tắt. Và nếu bạn nhìn kỹ thì sẽ thấy rằng chúng khác xa bao nhiêu so với bản gốc.

Ví dụ, tại offset 0x58, lẽ ra phải có push edxbyte như vậy 0x52, nhưng bạn có push espcái đó là như vậy 0x54. Vì bài viết đề cập rằng phần này được mã hóa bằng xor (với khóa một chữ số), hãy xem các giá trị đó tắt như thế nào

In [7]: 0x52 ^ 0x54
Out[7]: 6

Vì vậy, đây chính xác là chìa khóa được đề cập trong bài viết. Nếu chúng ta so sánh phần còn lại của những hướng dẫn sai lệch đó, chúng ta sẽ nhận thấy rằng chúng có cùng giá trị.

Kết luận - phần mã hiển thị trong Ghidra này không được giải mã và nên được xử lý trước trước khi phân tích.