Calcola il posizionamento del suono stereo sinistro / destro
In DX-Ball, un mattone colpito fornisce una posizione dello schermo orizzontale. Il codice audio lo trasforma in un valore di panning sinistro/destro.
La funzione di partenza, 0x00406400, ha un risultato di decompiler corto: una chiamata a __ftol(). REA restituisce anche le sue istruzioni e i chiamanti, che danno all'agente un modo per indagare sull'aritmetica mancante.
Nuovo a questi termini?
-
Istruzione: i passaggi eseguiti dal processore, mostrati in forma leggibile come
MOVoADD. - Risultato decompilatore / pseudocodice: il tentativo di uno strumento di analisi di trasformare le istruzioni in codice simile a C. Può perdere parti, come in questo esempio.
- Chiamante: una funzione che chiama questo. Mostra quali valori vengono passati.
-
Indirizzo: una posizione nel programma, scritta in esadecimale, come
0x00406400. - Costante: numeri fissi memorizzati nel programma, letti come byte grezzi e decodificati.
Tre prove, un calcolo
- 01 * IstruzioniUn input interoUna lettura dello stack fornisce il valore utilizzato dalle istruzioni in virgola mobile.
-
02 * ChiamanteUna coordinata dello schermoIl mattone-hit caller passa
20 + 30 × tile_x. -
03 * Byte di datiLe costanti numericheI byte di riferimento decodificano a
1.5625,500.0e un valore di scala.
pan = (x × 1.5625 − 500.0) × scale
Chiedi del comportamento
Dopo collegamento di REA al tuo agente e impostazione di uno strumento di analisi dei programmi di codice macchina, fornisca l'eseguibile locale e una domanda:
Quale strumento di analisi dovrei usare?
REA ha bisogno di uno di questi per leggere i programmi nativi:
- Hopper ( macOS o Linux): la configurazione di REA lo rileva o offre di installarlo. Su macOS, apri Hopper una volta e scegli la modalità demo o attiva una licenza prima della tua prima analisi.
- Ghidra (macOS o Linux ; sperimentale su Windows): gratuito, ma richiede un Ghidra 12.1 esistente.x installazione e un 64-bit JDK 21 o più recente.
- IDA ( Windows): per una configurazione IDA esistente con una registrazione MCP.
Vedere Impostare l'analisi dei programmi di codice macchina per i passi.
Utilizzare REA per scoprire come DX-Ball calcola il posizionamento del suono stereo. Spiega il calcolo e mostra il codice.
Esempio prompt. Fornisci al tuo agente il percorso dell'eseguibile DX-Ball 1.07 locale. REA non include DX-Ball, quindi usa la tua copia o fai lo stesso tipo di domanda su un altro piccolo programma Windows che hai.
Come ottengo il percorso completo di un file?
- Windows : in Esplora file, fare clic con il pulsante destro del mouse sul file e scegliere Copia come percorso. Su Windows 10, tenere premuto Maiusc mentre si fa clic con il pulsante destro del mouse.
- macOS : nel Finder, fare clic destro sul file, tenere premuto Opzione e scegliere Copia " ... " come percorso.
- Qualsiasi sistema: trascinare il file in una finestra di terminale e il suo percorso appare.
Leggi i risultati di REA
Leggi l'input
MOV EAX, dword ptr [EBP + 0x8]
MOV dword ptr [EBP + -0xc], EAX
FILD dword ptr [EBP + -0xc]
Le istruzioni caricano un argomento intero e lo convertono per l'aritmetica in virgola mobile. Questo è l'input assente dalla prima vista pseudocodice.
Segui il chiamante
ADD EAX, 0x14
PUSH EAX
CALL 0x00406400
REA identifica il chiamante brick-hit. Le sue istruzioni precedenti moltiplicano la coordinata tile per 30; aggiunta 0x14 (20) dà la posizione dello schermo del mattone.
Leggi le costanti di riferimento
0x420068 000000000000f93f → 1.5625
0x420070 0000000000407f40 → 500.0
0x4210a0 000000000000f03f → 1.0
L'aritmetica fa riferimento a questi indirizzi. La lettura dei byte fornisce i valori effettivi; l'ordine di istruzioni indica all'agente come vengono utilizzati.
Scrivi e controlla la funzione recuperata
pan = (double)x;
pan = pan * 1.5625;
pan = pan - 500.0;
pan = pan * dxball_pan_scale;
return (DxBallInt)pan;
Con una scala di 1.0, le posizioni dello schermo 0, 320 e 640 mappano a -500, 0 e 500 prima della conversione intera. Il calcolo mette il centro dello schermo al centro del campo stereo.
L'agente ha utilizzato i risultati di REA per scrivere il C. Controlli separati hanno confrontato 3.205 input con la funzione x86 originale e riprodotto tutti i 63 byte compilati della funzione completa.
Provalo con il tuo binario
Collegare un'analisi del fornitore di programmi di codice macchina, poi dia al Suo agente un eseguibile locale o una biblioteca e una caratteristica per investigare. Domande di partenza utili includono " Come viene analizzato questo file?"o" Quale funzione gestisce questa azione del menu?”
Se si conosce già il nome o l'indirizzo di una funzione, è possibile interrogarlo dal terminale. Per un'installazione Ghidra configurata:
npx -y rea-agents@latest function /absolute/path/to/program main \
--provider ghidra --json
Sostituire il percorso di destinazione e main con il proprio nome o indirizzo della funzione. Ogni invocazione CLI importa e analizza il binario, quindi chiude la sua sessione. Le query MCP dell'agente riutilizzano il binario importato mentre la sessione è aperta.
Leggi lo pseudocodice insieme a istruzioni e riferimenti. Quando un risultato lascia una chiamata o un valore irrisolto, utilizzare tale posizione come domanda successiva.