Chuyển đến nội dung chính
Hướng dẫn AI

Xác minh phân tích nhị phân có AI hỗ trợ với Reverify

Tìm hiểu cách cài đặt Reverify, kiểm tra tệp nhị phân, xác minh các nhận định về cấu trúc và hành vi, tự động hóa việc kiểm tra, đồng thời cung cấp các công cụ đảo ngược kỹ thuật có tính tất định cho tác nhân AI thông qua MCP.

Xác minh phân tích nhị phân có AI hỗ trợ với Reverify

Reverify thực hiện những gì

Reverify là bộ công cụ kỹ thuật đảo ngược có hỗ trợ AI, được thiết kế để giảm hiện tượng bịa thông tin trong quá trình phân tích nhị phân. Thay vì tin vào bản tái dựng của mô hình ngôn ngữ, Reverify coi đó là một giả thuyết và đối chiếu với tệp nhị phân thực tế.

Quy trình rất đơn giản: mô hình đề xuất, còn các công cụ xác định sẽ kiểm chứng. Reverify có thể dịch ngược byte, quét mẫu, phân tích định dạng tệp thực thi, trích xuất chuỗi, mô phỏng mã và kiểm tra các định dạng giao thức. Mỗi khẳng định được kiểm tra sẽ nhận một trong ba kết quả: VERIFIED, REFUTED hoặc INCONCLUSIVE, kèm theo bằng chứng quan sát được.

Chỉ sử dụng Reverify cho hoạt động kỹ thuật đảo ngược được cấp phép, chẳng hạn như phân tích phần mềm độc hại, thử thách CTF, nghiên cứu khả năng tương tác và phần mềm do bạn sở hữu hoặc được phép kiểm tra.

Tính năng chính

  • Kiểm chứng xác định: Các khẳng định được đánh giá dựa trên byte quan sát được trong tệp nhị phân mục tiêu, thay vì được chấp nhận từ lời giải thích do AI tạo ra.
  • Phân tích tệp thực thi: Kiểm tra tệp PE, ELF và Mach-O, bao gồm kiến trúc, điểm vào, các section, import và export nếu được hỗ trợ.
  • Dịch ngược và mô phỏng: Phân tích mã x86, x64, ARM và ARM64, với khả năng tùy thuộc vào backend đang hoạt động.
  • Phân tích mẫu và chuỗi: Quét mẫu AOB với ký tự đại diện ?? và trích xuất chuỗi ASCII hoặc UTF-16LE cùng offset.
  • Kiểm tra giao thức: Giải mã dữ liệu Protobuf và TLV mà không cần schema.
  • Tiện ích kỹ thuật đảo ngược: Tạo hook Frida, tạo hex dump được căn chỉnh và sinh diff hoặc bản vá nhị phân.
  • Tích hợp agent: Chạy Reverify dưới dạng máy chủ Model Context Protocol cho các công cụ như Claude Code và Cursor.
  • Phương án dự phòng thuần Python: Gói cơ sở hoạt động mà không cần Ghidra hoặc các engine phân tích native bắt buộc.

Cài đặt và thiết lập

Cài đặt lõi thuần Python

Cài đặt CLI và máy chủ MCP từ PyPI:

pip install reverify

Lệnh này cung cấp lõi thuần Python và là cách đơn giản nhất để bắt đầu.

Cài đặt các engine tùy chọn đã hoàn thiện

Để tăng cường khả năng phân tích, dịch ngược và mô phỏng, hãy cài đặt extra đầy đủ:

pip install "reverify[full]"

Bản cài đặt đầy đủ cho phép Reverify sử dụng Capstone để dịch ngược, Unicorn để mô phỏng CPU và LIEF để phân tích PE, ELF và Mach-O. Nếu các gói này không khả dụng, Reverify sẽ chuyển sang triển khai thuần Python.

Kiểm tra các engine đang hoạt động:

reverify backends

Chạy trực tiếp từ bản checkout

Bạn cũng có thể sử dụng repository mà không cần cài đặt gói:

python reverify/cli.py auto sample.bin --json
python reverify/cli.py parse-pe sample.exe --json
python reverify/cli.py disasm 90505831C0C3 --arch x86_64

Phân loại nhị phân cơ bản

Bắt đầu với lệnh auto để phát hiện định dạng tệp và kiến trúc, kiểm tra các section cũng như báo cáo những chuỗi đáng chú ý:

reverify auto sample.bin --json

Tùy chọn --json hữu ích khi một script khác, tác vụ CI hoặc agent AI cần sử dụng kết quả theo cách lập trình.

Để phân tích tệp thực thi có trọng tâm, hãy dùng parse cho các tệp PE, ELF hoặc Mach-O:

reverify parse sample.bin --json

Đối với tệp thực thi Windows, trình phân tích PE chuyên dụng có thể kiểm tra header PE32 hoặc PE32+, import và export:

reverify parse-pe sample.exe --json

Dịch ngược byte thô

Lệnh disasm có thể giải mã mã máy dạng hệ thập lục phân. Ví dụ này phân tích một chuỗi x86-64 ngắn:

reverify disasm 90505831C0C3 --arch x86_64

Dịch ngược hữu ích để kiểm tra xem chuỗi lệnh được đề xuất có khớp với các byte hay không. Reverify cũng có thể dịch ngược mã từ một section của tệp nhị phân, giúp gắn các khẳng định với nội dung tệp thay vì một cách diễn giải riêng lẻ do mô hình tạo ra.

Sử dụng vòng lặp kiểm chứng

Khẳng định Reverify là một giả thuyết có cấu trúc về tệp nhị phân. Lệnh verify đánh giá khẳng định và trả về trạng thái cùng bằng chứng mà bộ công cụ quan sát được.

Kiểm chứng chuỗi lệnh

Khẳng định sau kiểm tra xem các byte tại offset 4096 có được giải mã thành phần mở đầu hàm bắt đầu bằng push, mov và sub hay không:

reverify verify sample.bin --claim '{
  "kind": "instructions",
  "offset": 4096,
  "mnemonics": ["push", "mov", "sub"],
  "note": "function prologue"
}'

Reverify không chỉ lặp lại cách diễn giải được đề xuất. Công cụ đọc và dịch ngược các byte liên quan, sau đó báo cáo liệu chuỗi mnemonic được yêu cầu có được hỗ trợ hay không.

Kiểm chứng kết quả mô phỏng

Bạn cũng có thể kiểm tra một khẳng định về hành vi bằng cách thực thi mã máy trong trình mô phỏng và kiểm tra các thanh ghi sau cùng:

reverify verify - --claim '{
  "kind": "emulate_result",
  "code": "b805000000b90300000001c8c3",
  "arch": "x86",
  "expect_registers": {"eax": 8}
}'

Thao tác này xác minh rằng routine được cung cấp để lại eax bằng 8. Đây là một phép kiểm tra chặt chẽ hơn so với việc chấp nhận mô tả của mô hình về kết quả mà các lệnh dường như tính toán.

Các loại khẳng định khả dụng

Reverify hỗ trợ các loại khẳng định sau:

  • bytes_at kiểm tra các byte tại một vị trí được chỉ định.
  • pattern_present kiểm tra xem một mẫu byte có tồn tại hay không.
  • string_present kiểm tra sự hiện diện của một chuỗi trong tệp nhị phân.
  • instructions kiểm tra một chuỗi lệnh được đề xuất.
  • emulate_result kiểm tra kết quả thanh ghi dự kiến sau khi mô phỏng.
  • protobuf_field kiểm tra một xác nhận về trường Protobuf.
  • pe_import kiểm tra một xác nhận về thư viện import PE.

Xác minh hàng loạt và kiểm soát CI

Đối với các cuộc điều tra lớn hơn, hãy đặt nhiều xác nhận trong một tệp JSON và xác minh chúng cùng lúc:

reverify verify sample.bin --claims-file claims.json

CLI sẽ thoát với trạng thái khác 0 nếu bất kỳ xác nhận nào bị bác bỏ. Hành vi này khiến công cụ phù hợp với các pipeline CI và quy trình tự động của tác tử: một cấu trúc hoặc thủ tục đã được tái dựng có thể bị từ chối trước khi được công bố hoặc sử dụng ở bước tiếp theo.

Một quy trình thực tế gồm:

  1. Sử dụng auto, parse, strings hoặc disasm để thu thập bằng chứng ban đầu.
  2. Để chuyên gia phân tích hoặc mô hình đưa ra các xác nhận có phạm vi hẹp.
  3. Lưu các xác nhận liên quan trong một tệp JSON.
  4. Chạy verify và kiểm tra mọi kết quả REFUTED hoặc INCONCLUSIVE.
  5. Điều chỉnh bản tái dựng và lặp lại cho đến khi các xác nhận được hỗ trợ có cơ sở từ bằng chứng quan sát được.

Các lệnh phân tích bổ sung

Reverify cung cấp một số lệnh chuyên biệt có thể hỗ trợ quá trình xác minh:

  • Quét mẫu: Sử dụng pattern-scan cho các tìm kiếm AOB chứa byte chính xác và ký tự đại diện ??.
  • Trích xuất chuỗi: Sử dụng strings để định vị các chuỗi ASCII và UTF-16LE, đồng thời giữ lại offset của chúng.
  • Mô phỏng vi mô: Sử dụng emulate để kiểm tra hoạt động của thanh ghi CPU và ngăn xếp.
  • Phân tích wire format: Sử dụng decode-protobuf hoặc decode-tlv để phân tích dữ liệu không có lược đồ.
  • Tích hợp Frida: Sử dụng gen-hook để tạo một script interceptor.
  • Kiểm tra thô: Sử dụng hexdump để xem dữ liệu nhị phân theo bố cục căn chỉnh.
  • Phân tích thay đổi: Sử dụng diff-patch để tạo khác biệt và bản vá cho tệp nhị phân.
  • Kiểm tra ranh giới: Sử dụng audit-boundary để kiểm tra phòng thủ các ranh giới filesystem và SSRF.

Khép kín vòng lặp với quá trình tái dựng

Lệnh reconstruct triển khai phương pháp khép kín vòng lặp của Reverify: mô hình đề xuất các xác nhận, các công cụ xác định đánh giá chúng, và quy trình lặp lại để hướng tới một kết quả có cơ sở. Cách này tốt hơn việc yêu cầu mô hình đưa ra một cấu trúc hoặc thuật toán hoàn chỉnh rồi xem phản hồi đầu tiên của nó là đúng tuyệt đối.

Để có kết quả đáng tin cậy, hãy giữ các xác nhận nhỏ và có thể kiểm thử. Một xác nhận về các byte chính xác, một chuỗi lệnh ngắn, một hàm được import hoặc một kết quả thanh ghi sẽ dễ xác minh và điều chỉnh hơn một diễn giải rộng về toàn bộ tệp nhị phân.

Kết nối Reverify với các tác tử AI

Khởi động máy chủ MCP từ bản sao của repository bằng lệnh:

python reverify/mcp_server.py

Sau đó, bạn có thể cấu hình một ứng dụng tương thích với MCP như Claude Code hoặc Cursor để khởi chạy máy chủ. Tác tử có thể gọi trực tiếp các công cụ phân tích cú pháp, dịch ngược, quét và xác minh của Reverify.

Công cụ MCP re_verify_claim cung cấp cùng vòng lặp xác minh cho các tác tử. Nhờ đó, tác tử có thể gửi một giả thuyết, nhận kết quả VERIFIED, REFUTED hoặc INCONCLUSIVE, rồi điều chỉnh phân tích trước khi báo cáo kết luận.

Mẹo nâng cao

  • Kiểm tra backend đang hoạt động trước: Chạy reverify backends trước khi phân tích để biết Capstone, Unicorn và LIEF có khả dụng hay không.
  • Ưu tiên đầu ra JSON: Sử dụng --json khi kết quả sẽ được phân tích bởi script, tác tử hoặc hệ thống CI.
  • Tách biệt quan sát và diễn giải: Ghi lại offset, byte, lệnh đã giải mã và trạng thái thanh ghi trước khi viết giải thích cấp cao hơn.
  • Diễn giải trung thực các kết quả không kết luận: Kết quả INCONCLUSIVE không phải là xác minh. Hãy thu thập thêm bằng chứng hoặc thu hẹp xác nhận.
  • Gộp các khẳng định liên quan: Đưa các kiểm tra cấu trúc và hành vi vào một tệp xác nhận để một giả định bị bác bỏ có thể dừng quá trình tái dựng tự động.
  • Dùng mô phỏng cho các xác nhận về hành vi: Nếu một xác nhận mô tả kết quả mà một thủ tục tính toán, hãy xác minh trạng thái thanh ghi dự kiến thay vì chỉ dựa vào kết quả dịch ngược.
  • Dùng phương án dự phòng thuần Python để tăng tính linh động: Bắt đầu với gói cơ sở, sau đó cài đặt reverify[full] khi cần các engine native hoàn thiện.

Kết luận

Reverify giúp kỹ thuật dịch ngược có AI hỗ trợ trở nên đáng tin cậy hơn bằng cách yêu cầu các xác nhận quan trọng vượt qua những kiểm tra xác định đối với tệp nhị phân. CLI của công cụ hỗ trợ phân loại nhanh, phân tích cú pháp, dịch ngược, quét mẫu, mô phỏng và xác minh hàng loạt, trong khi máy chủ MCP cung cấp cho các tác tử AI quyền truy cập vào cùng quy trình dựa trên bằng chứng. Kết quả là quá trình phân tích dựa trên các byte quan sát được thay vì những phỏng đoán đầy tự tin.

Reverify được cấp phép MIT và có sẵn trên PyPI.