왼쪽/오른쪽 스테레오 사운드 위치 계산
그 안에 DX-Ball,벽돌 타격은 수평 화면 위치를 제공합니다. 사운드 코드는 왼쪽/오른쪽 패닝 값으로 바뀝니다.
시작 기능, 0x00406400,짧은 디컴파일러 결과가 있습니다. __ftol(). REA 또한 지시 사항과 호출자를 반환합니다.이는 에이전트에게 누락된 계산을 조사하는 방법을 제공합니다.
이 약관에 새로운?
-
지침: 프로세서가 실행하는 단계는 다음과 같이 읽을 수 있는 형태로 표시됩니다.
MOV또는ADD. - 디 컴파일러 결과/의사 코드: 명령어를 다시 씨와 같은 코드로 바꾸려는 분석 도구의 시도. 이 예제에서와 같이 부품을 놓칠 수 있습니다.
- 호출자: 이 함수를 호출하는 함수입니다. 어떤 값이 전달되는지 보여줍니다.
-
주소: 프로그램에서 16 진수로 작성된 위치
0x00406400. - 상수: 프로그램에 저장된 고정 번호는 원시 바이트로 읽고 디코딩.
세 가지 증거,하나의 계산
- 01*지침정수 입력스택 읽기는 부동 소수점 명령에 사용되는 값을 제공합니다.
-
02*호출하는 함수스크린 좌표이 함수를 호출하는 브릭 히트 함수는
20 + 30 × tile_x. -
03*데이터 바이트숫자 상수참조된 바이트는
1.5625,500.0그리고 스케일 값.
pan = (x × 1.5625 − 500.0) × scale
행동에 대해 물어보십시오
그 후 연결 REA 당신의 대리인에게 그리고 기본 분석 도구 설정,로컬 실행 파일 및 질문을 제공합니다:
어떤 분석 도구를 사용해야합니까?
REA 기본 프로그램을 읽기 위해 이들 중 하나가 필요합니다:
- Hopper (macOS 또는 Linux): REA설치 프로그램에서 감지하거나 설치하도록 제안합니다. 시작 macOS,오픈 Hopper 한 번 데모 모드를 선택하거나 첫 번째 분석 전에 라이센스를 활성화하십시오.
- Ghidra (macOS 또는 Linux;실험적 Windows):무료,하지만 기존의 필요 Ghidra 12.1.64 비트 또는 그 이상.
- IDA (Windows):기존의 IDA 설치 MCP 등록.
보시다시피 기계 코드 프로그램 분석 설정 단계를 위해.
사용 REA 방법을 찾으려면 DX-Ball 사운드 패닝을 계산합니다. 계산을 설명하고 코드를 보여줍니다.
예 프롬프트. 너의 대리인에게 너의 지방 주민에 경로를 주십시요 DX-Ball 1.07 실행 파일. REA 포함하지 않습니다 DX-Ball,그래서 당신 신 사,또는 다른 대 문 같 류 Windows 당신이 가진 프로그램.
파일의 전체 경로를 어떻게 얻을 수 있습니까?
- Windows: 파일 탐색기에서 파일을 마우스 오른쪽 단추로 클릭하고 다음을 선택합니다 경로로 복사. 시작 Windows 10,마우스 오른쪽 버튼을 클릭하는 동안 이동을 누르고 있습니다.
- macOS: 파인더에서 파일을 마우스 오른쪽 단추로 클릭하고 옵션을 누른 다음 선택합니다 경로 이름으로"..."복사.
- 모든 시스템: 파일을 터미널 창으로 드래그하면 해당 경로가 나타납니다.
읽REA결과
입력 읽기
MOV EAX, dword ptr [EBP + 0x8]
MOV dword ptr [EBP + -0xc], EAX
FILD dword ptr [EBP + -0xc]
명령은 정수 인수를 로드하고 부동 소수점 계산으로 변환합니다. 이것은 첫 번째 유사 코드 뷰에서 없는 입력입니다.
호출하는 함수 팔로우
ADD EAX, 0x14
PUSH EAX
CALL 0x00406400
REA 브릭 히트 호출자를 식별합니다. 이전 명령은 타일 좌표에 30 을 곱합니다. 0x14 (20)벽돌의 화면 위치를 제공합니다.
참조된 상수 읽기
0x420068 000000000000f93f → 1.5625
0x420070 0000000000407f40 → 500.0
0x4210a0 000000000000f03f → 1.0
산술은 이러한 주소를 참조합니다. 바이트를 읽으면 실제 값이 제공되며,명령 순서는 에이전트에 어떻게 사용되는지 알려줍니다.
복구 된 기능 작성 및 확인
pan = (double)x;
pan = pan * 1.5625;
pan = pan - 500.0;
pan = pan * dxball_pan_scale;
return (DxBallInt)pan;
눈금이 1.0 인 경우 화면 위치 0,320 및 640 은 정수 변환 전에 -500,0 및 500 으로 매핑됩니다. 계산은 화면의 중심을 스테레오 필드의 중앙에 놓습니다.
사용 된 에이전트 REA3,205 개의 입력을 원래의 86 함수와 비교하고 전체 함수의 63 개의 컴파일된 바이트를 모두 재현했습니다.
자신의 바이너리 그것을 시도
기계 코드 프로그램 공급자의 분석을 연결,그런 다음 에이전트에 로컬 실행 파일 또는 라이브러리와 조사 할 기능을 제공하십시오. 유용한 시작 질문에는"이 파일은 어떻게 분석됩니까?"또는"이 메뉴 동작을 처리하는 기능은 무엇입니까?”
함수 이름 또는 주소를 이미 알고 있는 경우 터미널에서 쿼리할 수 있습니다. 구성된 Ghidra 설치:
npx -y rea-agents@latest function /absolute/path/to/program main \
--provider ghidra --json
대상 경로를 대체하고 main 자신의 함수 이름 또는 주소로. 각 CLI 호출은 바이너리를 가져오고 분석 한 다음 세션을 닫습니다. 귀하의 에이전트의 MCP 쿼리는 해당 세션이 열려 있는 동안 가져온 바이너리를 다시 사용합니다.
지침 및 참조와 함께 의사 코드를 읽으십시오. 결과에서 호출 또는 값이 해결되지 않으면 해당 위치를 다음 질문으로 사용합니다.