Khôi PHỤC DX-Ball ' s
tính toán vị trí âm thanh trái/phải.

Kiểm Tra các hướng dẫn ban Đầu, xác Định đầu vào và hằng số, sau Đó kiểm Tra C đã khôi Phục.

Tính toán trái / phải định vị âm thanh stereo

TRONG DX-Ball, một cú đánh bằng gạch cung cấp vị trí màn hình nằm ngang. Mã âm thanh biến nó thành giá trị xoay trái/phải.

Chức năng bắt đầu, 0x00406400, có một kết quả dịch ngược ngắn: một cuộc gọi đến __ftol(). REA cũng trả về các hướng dẫn và hàm gọi của nó, cung cấp cho tác nhân một cách để điều tra số học bị thiếu.

Mới đối với các điều khoản này?
  • Hướng dẫn: các bước bộ xử lý chạy, được hiển thị ở dạng có thể đọc được như MOV hoặc ADD.
  • Kết quả dịch ngược / mã giả: nỗ lực của một công cụ phân tích để biến các hướng dẫn trở lại thành mã C-like. Nó có thể bỏ lỡ các bộ phận, như trong ví dụ này.
  • Người gọi: một hàm gọi cái này. Nó cho thấy những giá trị nào được truyền vào.
  • Địa chỉ: một vị trí trong chương trình, được viết bằng hệ thập lục phân, chẳng hạn như 0x00406400.
  • Hằng số: số cố định được lưu trữ trong chương trình, đọc như byte thô và giải mã.

Ba bằng chứng, một phép tính

  1. 01 * Hướng dẫnMột đầu vào số nguyênMột stack read cung cấp giá trị được sử dụng bởi các hướng dẫn dấu phẩy động.
  2. 02 * Người GọiTọa độ màn hìnhNgười gọi gạch-hit đi 20 + 30 × tile_x.
  3. 03 * Byte Dữ liệuCác hằng số sốTham chiếu byte giải mã để 1.5625, 500.0 và một giá trị quy mô.

pan = (x × 1.5625 − 500.0) × scale

REA cung cấp các hướng dẫn, mối quan hệ cuộc gọi chức năng và byte. Các agent giải thích chúng cùng nhau.

Hỏi về hành vi

Sau kết NỐI REA với agent của bạn và thiết lập phân tích công cụ chương trình mã máy, cung cấp thực thi cục bộ và một câu hỏi:

Tôi nên sử dụng công cụ phân tích nào?

REA cần một trong số này để đọc các chương trình gốc:

  • Hopper (macOS hoặc Linux ): THIẾT lập CỦA REA phát hiện nó hoặc đề nghị cài đặt nó. TRÊN macOS, mở Hopper một lần và chọn chế độ demo hoặc kích hoạt giấy phép trước khi phân tích đầu tiên của bạn.
  • Ghidra (macOS hoặc Linux ; thử nghiệm TRÊN Windows ): miễn phí, nhưng cần Ghidra 12.1 hiện có.x cài đặt và 64-bit JDK 21 hoặc mới hơn.
  • IDA (Windows): đối với THIẾT lập IDA hiện có với đăng ký MCP.

Xem Thiết lập phân tích các chương trình mã máy đối với các bước.

Agent mã hóa của bạn

SỬ dụng REA để tìm CÁCH DX-Ball tính toán định vị âm thanh nổi. Giải thích tính toán và hiển thị mã.

Ví dụ nhắc nhở. Cung cấp cho agent của bạn đường dẫn ĐẾN tệp THỰC thi DX-Ball 1.07 cục BỘ của bạn. REA không bao gồm DX-Ball , vì vậy hãy sử dụng bản sao của riêng bạn hoặc hỏi cùng một loại câu hỏi về một chương trình Windows nhỏ khác mà bạn có.

Làm cách nào để có được đường dẫn đầy đủ của tệp?
  • Windows : Trong File Explorer, nhấp chuột phải vào tệp và chọn Sao chép dưới dạng đường dẫn. TRÊN Windows 10, giữ Shift trong khi nhấp chuột phải.
  • macOS : trong Finder, nhấp chuột phải vào tệp, Giữ Tùy chọn và chọn Sao chép " ... " dưới Dạng Tên Đường Dẫn.
  • Bất kỳ hệ thống: kéo tệp vào cửa sổ đầu cuối và đường dẫn của nó xuất hiện.

Đọc KẾT QUẢ REA

Đọc đầu vào

TRÍCH ĐOẠN HƯỚNG dẫn REA · 0x406409
MOV EAX, dword ptr [EBP + 0x8]
MOV dword ptr [EBP + -0xc], EAX
FILD dword ptr [EBP + -0xc]

Các hướng dẫn tải một đối số nguyên và chuyển đổi nó cho số học dấu phẩy động. Đây là đầu vào vắng mặt từ chế độ xem mã giả đầu tiên.

Theo dõi hàm gọi

REA hàm gọi trích đoạn * 0x411f5b
ADD EAX, 0x14
PUSH EAX
CALL 0x00406400

REA xác định hàm gọi gạch-hit. Các hướng dẫn trước đó của nó nhân tọa độ gạch với 30; thêm 0x14 (20) cho vị trí màn hình của gạch.

Đọc các hằng số được tham chiếu

KẾT quả byte REA * được hiểu là đôi endian nhỏ
0x420068  000000000000f93f  → 1.5625
0x420070  0000000000407f40  → 500.0
0x4210a0  000000000000f03f  → 1.0

Số học tham chiếu các địa chỉ này. Đọc các byte cung cấp các giá trị thực tế; thứ tự hướng dẫn cho tác nhân biết cách chúng được sử dụng.

Viết và kiểm tra chức năng đã khôi phục

Phục Hồi C · trích Đoạn
pan = (double)x;
pan = pan * 1.5625;
pan = pan - 500.0;
pan = pan * dxball_pan_scale;
return (DxBallInt)pan;

Với tỷ lệ 1.0, vị trí màn hình 0, 320 và 640 bản đồ đến -500, 0 và 500 trước khi chuyển đổi số nguyên. Tính toán đặt trung tâm của màn hình ở trung tâm của trường âm thanh nổi.

Tác nhân đã sử dụng REA phát hiện của để viết C. Kiểm tra Riêng biệt so sánh 3.205 đầu vào với hàm x86 ban đầu và sao chép tất cả 63 byte được biên dịch của hàm hoàn chỉnh.

Xem điều tra đầy đủ và so sánh assembly-To-c

Hãy thử nó với nhị phân của riêng bạn

Kết nối phân tích nhà cung cấp chương trình mã máy, sau đó cung cấp cho agent của bạn một tệp thực thi hoặc thư viện cục bộ và một tính năng để điều tra. Các câu hỏi bắt đầu hữu ích bao gồm " tệp này được phân tích cú pháp Như thế nào?"hoặc" chức năng nào xử lý hành động menu này?”

Nếu bạn đã biết tên hoặc địa chỉ chức năng, bạn có thể truy vấn nó từ thiết bị đầu cuối. Để CÀI ĐẶT Ghidra được định cấu HÌNH:

Phân tích chức năng
npx -y rea-agents@latest function /absolute/path/to/program main \
  --provider ghidra --json

Thay thế đường dẫn mục tiêu và main với tên chức năng hoặc địa chỉ của riêng bạn. Mỗi LẦN NHẬP lệnh GỌI CLI và phân tích nhị phân, sau đó đóng phiên của NÓ. Các truy vấn MCP của agent của bạn sử dụng lại nhị phân đã nhập trong khi phiên đó đang mở.

Đọc mã giả cùng với hướng dẫn và tài liệu tham khảo. Khi một kết quả để lại một cuộc gọi hoặc giá trị chưa được giải quyết, hãy sử dụng vị trí đó làm câu hỏi tiếp theo.

Hàng đầu