arrow_backQuay lại ghi chép lĩnh vực
MALWARE ANALYSIS Đã đăng 6 Jul 2026

Practical Reverse Engineering: A Hands-On Starter Guide

Tìm hiểu quy trình cốt lõi của reverse engineering nhị phân, từ phân tích tĩnh đến gỡ lỗi động, với các mẹo công cụ thực tế.

Reverse engineering là quá trình phân tích phần mềm đã biên dịch để hiểu logic, hành vi và ý định của nó mà không cần truy cập mã nguồn. Cho dù bạn đang phân tích malware, kiểm toán nhị phân mã đóng hoặc nghiên cứu các thử thách CTF, cùng một quy trình cốt lõi áp dụng: thu thập thông tin một cách tĩnh, sau đó xác nhận giả thuyết của bạn một cách động. Hướng dẫn này hướng dẫn bạn qua quy trình đó với các bước thực tế, không phụ thuộc vào công cụ mà bạn có thể áp dụng ngay lập tức.

Thiết Lập Môi Trường Phân Tích An Toàn

Trước khi tiếp xúc với bất kỳ nhị phân không quen thuộc nào, hãy cách ly không gian làm việc của bạn. Sử dụng một máy ảo chuyên dụng không có kết nối mạng đến máy chủ của bạn, tạo ảnh chụp trước khi phân tích và tắt các thư mục được chia sẻ cũng như đồng bộ hóa clipboard. Các công cụ như Linux VM với radare2, Ghidra, gdbobjdump đáp ứng hầu hết các nhu cầu tĩnh và động, trong khi Windows VM với x64dbgProcess Monitor là cần thiết cho các tệp PE. Không bao giờ phân tích các mẫu đáng ngờ trên máy chính của bạn và luôn khôi phục ảnh chụp giữa các phiên để tránh ô nhiễm chéo.

Phân Tích Tĩnh: Đọc Mà Không Chạy

Bắt đầu bằng cách xác định loại tệp và kiến trúc bằng filereadelf -h (Linux) hoặc trình kiểm tra tiêu đề PE (Windows). Kiểm tra packing hoặc obfuscation bằng phân tích entropy — các công cụ như Detect It Easy đánh dấu các phần có entropy cao đáng ngờ gợi ý nén hoặc mã hóa.

Tiếp theo, tải nhị phân vào một disassembler như Ghidra hoặc IDA Free. Tập trung vào:

  • Imports và exports — các lệnh gọi API như CreateRemoteThread hoặc VirtualAllocEx gợi ý process injection; WSAStartup gợi ý mạng.
  • Strings — chạy strings -n 8 binary để xuất hiện các URL được mã hóa cứng, đường dẫn tệp hoặc tin nhắn gỡ lỗi tiết lộ chức năng.
  • Control flow graphs — chế độ decompiler của Ghidra chuyển assembly thô thành pseudo-C dễ đọc, tăng tốc độ hiểu các vòng lặp và điều kiện một cách đáng kể.

Thêm chú thích tên hàm khi bạn hiểu chúng. Đổi tên sub_401020 thành decrypt_config ngay lập tức làm cho phần còn lại của phân tích của bạn dễ theo dõi hơn.

Phân Tích Động: Quan Sát Nó Chạy

Phân tích tĩnh chỉ đi được xa, đặc biệt là đối với mã obfuscated hoặc packed. Tải nhị phân vào một trình gỡ lỗi và đặt các điểm dừng tại các lệnh gọi API đáng ngờ được xác định trước đó. Trong x64dbg, dừng lại ở VirtualAlloc hoặc WriteProcessMemory thường tiết lộ các thường trình unpacking khi chúng ghi mã được giải mã vào bộ nhớ ngay trước khi thực thi.

Sử dụng Process Monitor hoặc strace/ltrace trên Linux để ghi nhật ký hoạt động tệp, registry và mạng theo thời gian thực. Chế độ xem bên ngoài này bổ sung cho chế độ xem bên trong từ trình gỡ lỗi và thường tiết lộ hành vi khó phát hiện trong disassembly một mình, chẳng hạn như tạo tệp tạm thời hoặc tra cứu DNS.

Đối với các nhị phân có khả năng mạng, chạy chúng cùng với Wireshark hoặc một trình mô phỏng internet giả như INetSim để quan sát lưu lượng command-and-control mà không để mẫu thực sự tiếp cận internet.

Đối Phó Với Các Thủ Đoạn Chống Phân Tích

Manyad nhị phân — đặc biệt là malware — bao gồm các kiểm tra được thiết kế để phát hiện trình gỡ lỗi, máy ảo hoặc sandbox. Các kỹ thuật phổ biến bao gồm gọi IsDebuggerPresent, kiểm tra các khóa đăng ký cụ thể của VM hoặc đo thời gian thực thi để phát hiện single-stepping. Khi bạn phát hiện các kiểm tra này trong quá trình phân tích tĩnh, bạn có thể vá jump điều kiện trong trình gỡ lỗi để buộc

Viết với hỗ trợ của AI, được xem xét và đăng bởi Michal Pilch (CISSP), Korra Studio.

Sẵn sàng đi xa hơn?

Đây là một ghi chép từ cơ sở kiến thức Korra Studio — nền tảng kết hợp mỗi chủ đề với phiên hỗ trợ 1-kèm-1.

Bắt đầu miễn phíarrow_forward