Apri la cartella del progetto
Scegli una cartella di lavoro che contenga il tuo sorgente C, una copia del file compilato e, più avanti, il listing esportato.
Scegli una piccola funzione di un programma C che hai compilato tu e studiala dalla prima istruzione al return finale. Leggi e condizioni di licenza cambiano da paese a paese, quindi usa solo codice tuo o file di prova. Seguono quattro passi.
Scegli una cartella di lavoro che contenga il tuo sorgente C, una copia del file compilato e, più avanti, il listing esportato.
Lascia che Shell esegua il comando di esportazione del tuo disassemblatore sulla copia, oppure salva tu il listing, così il risultato è un file di testo.
Chiedi all'agente di leggere il listing e di spiegare la funzione riga per riga, poi salva gli appunti con write_file.
Confronta gli appunti con il tuo sorgente e con il listing, leggi il diff in Ask first e prova il risultato in laboratorio se è legale.
add_numbers.asmtesto lettoedx add_numbers.asm2 corrispondenzenotes/add_numbers.mdsalvatonotes/add_numbers.md+4 righe; add_numbers.asm - teaching listing, x64 Windows
; Returns the sum of its first two integer arguments.
; Argument 1 arrives in ecx (low half of rcx).
; Argument 2 arrives in edx (low half of rdx).
add_numbers:
mov eax, ecx ; copy argument 1 into eax
add eax, edx ; add argument 2, the sum stays in eax
ret ; return to the caller, result in eaxQuesta funzione somma due interi. Secondo la convenzione Windows x64, gli argomenti arrivano in ecx e edx, la somma si forma in eax e ret restituisce il controllo al chiamante.
Una domanda comune dei principianti è come iniziare con l'assembly, e la risposta è una funzione che hai scritto tu. Scrivi una breve funzione C, compilala ed esporta il listing come testo. read_file apre il listing e l'agente spiega ogni istruzione: quale registro contiene ogni argomento, cosa fa lo stack e dove torna il risultato. write_file salva queste spiegazioni in notes/begin.md. In Plan only, l'agente elenca prima questi passi. Ancora non viene eseguito nulla. Poi passa ad Ask first e leggi il diff prima di ogni salvataggio. Infine confronta gli appunti con il tuo sorgente e, se è legale, prova la funzione compilata in laboratorio.
Un buon esercizio di reverse engineering di API è elencare le funzioni che la tua libreria espone e annotare cosa fa ogni argomento. Salva come testo l'elenco delle funzioni importate ed esposte dal tuo strumento, poi l'agente usa grep per trovare ogni chiamata a una funzione e read_file per aprire le righe intorno. Prepara una tabella in notes/api.md, e edit_file mostra ogni modifica come diff. Parti da una funzione. Lo stesso metodo ti aiuta a recuperare come funzionava il tuo vecchio codice. L'agente può sbagliare un tipo o uno scopo, quindi confronta ogni riga con il tuo sorgente e con un tuo test prima di accettarla.