Reverse engineering, con il tuo agente di codifica
Scopri come
funziona il software.
REA fornisce al tuo agente di programmazione gli strumenti per esaminare un programma e spiegarne il funzionamento.
Sai già RE? Vai alle guide di analisi →
Vuoi andare più a fondo? Leggi il Blog →
Impostare REA
Copia questo prompt nel tuo agente di programmazione:
Installa REA e collegalo a questo agente di programmazione usando npx rea-agents@latest setup. Mostrami prima le modifiche previste e attendi la mia approvazione. Poi verifica l’installazione.
Oppure esegui questo comando nel terminale:
npx rea-agents@latest setup
Controlla e approva le modifiche previste, poi riavvia il tuo agente.
Prima volta, o mancante Node.js o un agente di codifica? Seguire la guida di installazione passo-passo →
Che cos’è il reverse engineering?
Capire come funziona un software esaminando il programma stesso.
L'obiettivo: capire una caratteristica abbastanza bene per spiegalo, cambialo o ricostruiscilo.
Per esempio: perché la calcolatrice restituisce 220 per 200 + 10%?
Prima di REA · Indaghi da solo
Originale x64 * istruzioni selezionate
0x180124945: MOV EAX, dword ptr [R13 + 0x18]
0x180124949: CMP EAX, 0x5c
0x18012494c: JZ 0x180124aba
0x180124952: CMP EAX, 0x5b
0x180124955: JZ 0x180124aba
0x18012495b: MOV EDX, 0x64
0x180124960: LEA RCX, [RSP + 0x160]
0x180124968: CALL 0x180122650
0x18012496e: LEA RDX, [R13 + 0x160]
0x180124975: LEA RCX, [RSP + 0x78]
0x18012497a: CALL 0x180109720
0x18012497f: MOV RSI, RAX
0x180124982: MOV qword ptr [RSP + 0x28], RAX
0x180124987: LEA RDX, [RSP + 0x160]
0x18012498f: MOV RCX, RAX
0x180124992: CALL 0x180123190
; … value-copy instructions omitted …
0x180124a14: MOV RDX, RDI
0x180124a17: LEA RCX, [RSP + 0xf8]
0x180124a1f: CALL 0x180109720
0x180124a24: LEA R8, [RSP + 0x30]
0x180124a29: MOV RDX, RAX
0x180124a2c: LEA RCX, [RSP + 0xb8]
0x180124a34: CALL 0x180123c10
Si decodificano le istruzioni, si seguono le chiamate di funzione e si ricostruisce il calcolo.
Con REA · Chiedi al tuo agente
Un solo prompt.
Fai una domanda al tuo agente con parole semplici.
Utilizzare REA ispezionare Windows Calcolatore. Perché 200 + 10% dà 220?
Dopo +, il pulsante % prende percentuale del primo numero.
10% of 200 = 20200 + 20 = 220
- REA fornisce
- Istruzioni del gestore, codice decompilato e chiamate.
- Il tuo agente spiega
- Quale ramo si applica, cosa calcola e come ricostruirlo.
Proviamo due esempi. Modificare la velocità di un gioco, quindi tornare a Calcolatrice e ricostruire il suo pulsante%.
Esempio 01 * Gioco di dinosauri di Chrome
Perché il dinosauro diventa più veloce?
- Obiettivo
- Ricostruisci il gioco con velocità regolabile.
- Perché il reverse engineering?
- Per riprodurre la sua accelerazione, abbiamo bisogno di la regola nel gioco in esecuzione: quanto velocemente inizia, quanto aumenta e quando si ferma.
Gioca alla ricostruzione
Regola originale: inizia da 6, quindi aumenta verso 13.
REA ha restituito
Lo script effettivamente in esecuzione nella pagina. L'agente legge la sua funzione di aggiornamento e le impostazioni di velocità, quindi utilizza tale regola in un nuovo gioco.
Usa REA per ispezionare questo gioco di dinosauri. Perché diventa più veloce? Mostra la regola della velocità, quindi costruisci una versione piccola con una velocità regolabile.
Obiettivo ispezionato: edizione del browser derivata da Chromium di wayou.
if (this.currentSpeed < this.config.MAX_SPEED) {
this.currentSpeed += this.config.ACCELERATION;
}
Inizia alle 6. Aggiungere 0.001 ogni aggiornamento senza una collisione, mentre la velocità è inferiore 13.
Apri lo speed labCosa fa ogni parte
- 01 * REA Leggi lo script del gioco in esecuzioneRestituisce il codice e le impostazioni effettivi all'agente.
- 02 * Il tuo agenteRicostruire la regola, aggiungere un controlloUsa l'accelerazione recuperata in un piccolo gioco con un cursore di velocità.
- 03 * TuCambiare la velocità e giocareProva l'accelerazione originale, quindi scegli il tuo ritmo.
Vedi lo script, i controlli e come provare l'analisi
REA ispezionato l'edizione del browser HTTP tramite una connessione di debug locale e restituito il caricato index.js, compresa la sua fonte e digest.
ACCELERATION: 0.001,
MAX_SPEED: 13,
SPEED: 6
Abbiamo chiamato la funzione di aggiornamento del gioco originale in un controllo controllato del browser, con ostacoli e programmazione automatica disabilitati. Dopo 4.000 aggiornamenti, la velocità era 10.0; dopo 10.000, era 13.0, arrotondato a un decimale.
Il nuovo mini-gioco mantiene quella regola di velocità. Il suo codice di disegno, salto e collisione sono una piccola implementazione didattica. Apri il laboratorio per vedere il nuovo codice ed eseguire lo stesso controllo di velocità.
Per ispezionare il bersaglio da soli, seguire il passaggi di connessione del browser servendosi la pagina dei dinosauri. Fornisci all'agente l'URL della pagina e l'endpoint di debug locale, quindi copia il prompt sopra.
Codice di velocità ispezionato · Autori Chromium * Licenza BSD
Esempio 02 * Calcolatrice Windows
Ricrea il pulsante % della calcolatrice.
Abbiamo visto perché 200 + 10% dà 220. Ora recuperiamo le regole per + e × e provale.
- Obiettivo
- Costruire una piccola calcolatrice che gestisce sia + che × correttamente.
- Perché il reverse engineering?
- Lo stesso pulsante utilizza regole diverse dopo + e ×. Controlliamo l'app installata per trovare a quale numero viene applicata la percentuale.
Prova il calcolo
10% di 200 = 20. Quindi 200 + 20 = 220.
REA ha restituito
Un ramo si divide per 100. L'altro si moltiplica anche per il primo numero. L'agente utilizza entrambi per ricreare il pulsante%.
Per questo esempio, previous = 200 e current = 10.
Utilizzare REA per ispezionare il pulsante % della calcolatrice Windows. Recuperare le regole dopo + e×, quindi costruire una piccola calcolatrice che utilizza entrambi.
if (operation == multiply || operation == divide) {
percent = current / 100;
} else {
percent = current * previous / 100;
}
- Con +
-
Prendi il 10% del primo numero.
10% of 200 = 20 → 200 + 20 = 220 - Con ×
-
Trasforma il 10% in 0,1.
200 × 0.1 = 20
Dall'app installata a un pulsante % funzionante
-
01 · REA legge calc.exeLancia l'app CalcolatriceIl codice si apre
ms-calculator:. L'agente seleziona quindi la libreria dell'app installata. -
02 * REA legge la libreriaRestituisce il codice del gestore % La funzione controlla l'operatore e utilizza la costante
100. - 03 * Il tuo agente lo interpretaSpiegare e riprodurre le regoleCrosscheck il ramo con la fonte di Microsoft, quindi provare + e × sopra.
Vedi il codice reale e come è stata controllata la risposta
0x180124945: MOV EAX, dword ptr [R13 + 0x18]
0x180124949: CMP EAX, 0x5c
0x18012494c: JZ 0x180124aba
0x180124952: CMP EAX, 0x5b
0x180124955: JZ 0x180124aba
0x18012495b: MOV EDX, 0x64
#define IDC_MUL 92 // 0x5c
#define IDC_DIV 91 // 0x5b
#define IDC_PERCENT 118 // 0x76
0x64 = 100
Ispezionato con REA 4.1.0: Calcolatrice Windows 11.2508.4.0, x64. Il riepilogo leggibile utilizza i nomi della fonte pubblica di Microsoft per spiegare il ramo recuperato.
Percentuale di attuazione · I test case di Microsoft · Guida all'installazione nativa
La tua prima indagine
Prova REA su una piccola app.
Scarica il nostro esempio di Note, traccia la sua esportazione CSV e controlla un input modificato.
Vuoi approfondire?
Dì al tuo agente cosa vuoi capire o costruire. Con REA, è possibile lavorare insieme su qualsiasi cosa, da clonazione di questo sito web per ricostruire un gioco dal suo eseguibile.
Utilizzare REA per ispezionare https://rea.tools/. Clonare questo sito per me.
Sì, questa.
Usa REA per ricostruire questo gioco dal suo eseguibile. Recuperare la logica di gioco in C e testarlo contro l'originale.
Per le fasi di configurazione e analisi, scegli il tuo target:
Programmi a codice macchina
Ispezionare funzioni, stringhe, riferimenti e relazioni di chiamata di funzione in eseguibili e librerie.
Guida all'analisi dei programmi di codice macchinaJavaScript & Electron
Mappa moduli, percorsi, IPC e dipendenze native da una cartella dell'applicazione o da un archivio ASAR.
Flussi di lavoro delle applicazioniAttività del browser e runtime
Cattura l'attività del browser o del processo selezionata, quindi confronta i risultati tra le varie esecuzioni.
Guida all'osservazione del browserHai domande?
Leggi le FAQ, chatta con noi su Discord , o aprire un problema GitHub per bug e richieste di funzionalità.
Unisciti alla community
Condividi le indagini e ottenere aiuto da altri utenti REA su Discord . Seguire REA su X per gli aggiornamenti del progetto.