IDA Pro Cheat Sheet

IDA Pro là công cụ phân dịch (Disassembler) có tính tương tác cao và tích hợp trình dịch ngược (Decompiler) Hex-Rays mạnh mẽ.


1. Quy trình phân tích (Standard Workflow)

Hiểu trình tự làm việc chuyên nghiệp để không bị lạc trong hàng triệu dòng mã.

graph TD A[Load Binary] --> B[Initial Auto-Analysis] B --> C{View Selection} C --> D[Graph View - Logic Flow] C --> E[Text View - Detailed Assembly] D & E --> F[Identification: Strings/Imports] F --> G[Xrefs Analysis - Tracking Data] G --> H[Decompilation - F5] H --> I[Variable Renaming & Struct Definition] I --> J[Scripting/Patching/Debugging]

2. Phím tắt điều hướng & View (Navigation & Interface)

IDA Pro dựa cực kỳ nhiều vào phím tắt. Nắm vững bộ phím này là điều kiện tiên quyết để trở thành chuyên gia.

Phím tắtChức năngGiải thích chi tiết
SpacebarSwitch ViewChuyển đổi giữa Graph view (sơ đồ) và Text view (danh sách).
GJump to AddressNhảy đến một địa chỉ (Virtual Address) hoặc tên hàm.
EscJump BackQuay lại vị trí trước đó (giống nút Back trên trình duyệt).
Ctrl + EnterJump ForwardĐi tới vị trí tiếp theo trong lịch sử điều hướng.
F5DecompileChuyển đổi hàm hiện tại sang mã C (yêu cầu Hex-Rays).
TabSwitch CodeChuyển nhanh giữa cửa sổ Disassembly và Decompiler.
NRenameĐổi tên hàm, biến, nhãn hoặc tham số.
XCross-ReferencesXem các nơi tham chiếu tới địa chỉ/hàm hiện tại.
Ctrl + PFunctions ListMở danh sách tất cả các hàm trong file.
Shift + F12Strings WindowMở danh sách tất cả các chuỗi (strings) tìm thấy.

3. Thao tác với dữ liệu và mã (Data Manipulation)

Phím tắt dùng để định nghĩa lại cách IDA hiểu các byte dữ liệu.

  • C (Code): Ép IDA hiểu vùng nhớ này là tập hợp các lệnh thực thi.
  • D (Data): Chuyển đổi vùng nhớ thành dữ liệu (nhấn nhiều lần để đổi byte -> word -> dword -> qword).
  • A (ASCII): Chuyển vùng nhớ thành chuỗi ký tự (String).
  • U (Undefine): Xóa định nghĩa tại địa chỉ hiện tại (biến về byte thô).
  • * (Asterisk): Định nghĩa mảng (Array).
  • H (Hex): Hiển thị giá trị ở dạng thập lục phân.
  • Q (Octal): Hiển thị ở dạng bát phân.
  • B (Binary): Hiển thị ở dạng nhị phân.
  • R (Char): Chuyển giá trị số sang ký tự tương ứng (ví dụ 0x41 thành ‘A’).
  • _ (Underscore): Hiển thị giá trị ở dạng hằng số symbolic (nếu có).

4. Phân tích Cross-References (Xrefs)

Cách sử dụng: Chọn tên hàm hoặc địa chỉ biến -> Nhấn X. Kết quả sẽ hiển thị danh sách tất cả các điểm truy cập. Đây là cách chính để lần ra logic của malware hoặc tìm lỗ hổng phần mềm.


5. Làm việc với Structures & Enums

Để mã Decompiler dễ đọc hơn, bạn cần định nghĩa lại các cấu trúc dữ liệu.


6. Hex-Rays Decompiler Tips

Khi đã ở trong giao diện mã C (nhấn F5), các phím tắt sau sẽ giúp ích:

Phím tắtChức năng
YSet Item Type
/ (Forward Slash)Add Comment
InsertAdd/Edit Comment
= (Equal)Map variable
Ctrl + Shift + WGenerate Static View

7. Scripting với IDAPython

IDA hỗ trợ Python cực mạnh để tự động hóa các tác vụ lặp đi lặp lại.

import idautils
import idc

# Ví dụ: Liệt kê tất cả các hàm và địa chỉ bắt đầu
for func in idautils.Functions():
    print(f"Function {idc.get_func_name(func)} at {hex(func)}")

# Ví dụ: Tìm các byte cụ thể (Pattern matching)
pattern = "48 89 5C 24" # Một đoạn opcodes phổ biến
addr = idc.find_binary(0, idc.SEARCH_DOWN, pattern)
if addr != idc.BADADDR:
    print(f"Pattern found at {hex(addr)}")

8. Interactive Debugging

IDA Pro tích hợp trình gỡ lỗi mạnh mẽ cho nhiều nền tảng (Windows, Linux, Android, iOS, GDB).

  • F2: Đặt Breakpoint (điểm dừng).
  • F9: Bắt đầu chạy chương trình (Run).
  • F7: Step Into (Đi vào chi tiết bên trong hàm).
  • F8: Step Over (Chạy qua hàm, không đi vào trong).
  • Ctrl + F2: Kết thúc phiên debug.
  • Ctrl + F7: Chạy cho đến khi thoát khỏi hàm hiện tại (Run until return).

9. Sửa đổi mã (Patching)

  1. Tại dòng lệnh cần sửa: Edit -> Patch program -> Assemble...
  2. Nhập lệnh mới (ví dụ: nop hoặc jmp <addr>).
  3. Để áp dụng vào file vật lý: Edit -> Patch program -> Apply patches to input file...

10. Các phím tắt bổ trợ khác

Phím tắtChức năng
; (Semicolon)Add Manual Comment
: (Colon)Add Regular Comment
Alt + TSearch Text
Alt + BSearch Bytes
Shift + F4Names Window