Deschide folderul proiectului
Alege un folder de lucru care conține codul tău sursă C, o copie a fișierului compilat și, mai târziu, listing-ul exportat.
Alege o funcție mică dintr-un program C compilat de tine și studiaz-o de la prima instrucțiune până la return-ul final. Legea și condițiile de licență diferă de la o țară la alta, deci folosește doar cod propriu sau fișiere de exercițiu. Urmează patru pași.
Alege un folder de lucru care conține codul tău sursă C, o copie a fișierului compilat și, mai târziu, listing-ul exportat.
Lasă Shell să ruleze comanda de export a disassembler-ului tău pe copie sau salvează tu listing-ul, ca rezultatul să fie un fișier text.
Cere agentului să citească listing-ul și să explice funcția linie cu linie, apoi salvează notele cu write_file.
Compară notele cu codul tău sursă și cu listing-ul, citește diff-ul în Ask first și testează rezultatul într-un laborator dacă este legal.
add_numbers.asmtext cititedx add_numbers.asm2 potrivirinotes/add_numbers.mdsalvatnotes/add_numbers.md+4 linii; 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 eaxAceastă funcție adună două numere întregi. După convenția Windows x64, argumentele sosesc în ecx și edx, suma se formează în eax, iar ret returnează controlul apelantului.
O întrebare frecventă a începătorilor este cum să înceapă cu assembly, iar răspunsul este o funcție scrisă chiar de tine. Scrie o funcție scurtă în C, compilează-o și exportă listing-ul ca text. read_file deschide listing-ul, iar agentul explică fiecare instrucțiune: ce registru ține fiecare argument, ce face stiva și unde se întoarce rezultatul. write_file salvează aceste explicații în notes/begin.md. În Plan only, agentul listează mai întâi acești pași. Încă nu rulează nimic. Apoi treci la Ask first și citește diff-ul înainte de fiecare salvare. La final, compară notele cu codul tău sursă și, dacă este legal, testează funcția compilată într-un laborator.
Un exercițiu bun de reverse engineering pentru API-uri este să listezi funcțiile pe care le expune propria ta bibliotecă și să notezi ce face fiecare argument. Salvează ca text lista funcțiilor importate și expuse din propria ta unealtă, apoi agentul folosește grep ca să găsească fiecare apel al unei funcții și read_file ca să deschidă liniile din jur. Redactează un tabel în notes/api.md, iar edit_file arată fiecare schimbare ca diff. Începe cu o singură funcție. Aceeași metodă te ajută să reconstitui cum funcționa propriul tău cod vechi. Agentul poate greși un tip sau un scop, așa că înainte să accepți compară fiecare rând cu codul tău sursă și cu un test propriu.