Otevři složku projektu
Vyber pracovní složku, ve které je tvůj zdrojový kód v C, kopie přeloženého souboru a později exportovaný výpis.
Vyber jednu malou funkci z programu v C, který jsi sám přeložil, a prostuduj ji od první instrukce po závěrečný return. Zákony a licenční podmínky se liší podle země, proto používej jen vlastní kód nebo cvičné soubory. Následují čtyři kroky.
Vyber pracovní složku, ve které je tvůj zdrojový kód v C, kopie přeloženého souboru a později exportovaný výpis.
Nech Shell spustit exportní příkaz tvého disassembleru na kopii, nebo výpis ulož sám, aby výsledkem byl textový soubor.
Požádej agenta, aby výpis přečetl a vysvětlil funkci řádek po řádku, a poznámky pak ulož přes write_file.
Porovnej poznámky se zdrojovým kódem a výpisem, přečti diff v Ask first a výsledek otestuj v laboratoři, pokud je to legální.
add_numbers.asmtext přečtenedx add_numbers.asm2 shodynotes/add_numbers.mduloženonotes/add_numbers.md+4 řádky; 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 eaxTato funkce sčítá dvě celá čísla. Podle konvence Windows x64 přicházejí argumenty v ecx a edx, součet vzniká v eax a ret vrací řízení volajícímu.
Častá otázka začátečníků zní, jak začít s assemblerem, a odpověď je funkce, kterou jsi napsal sám. Napiš krátkou funkci v C, přelož ji a exportuj výpis jako text. read_file výpis otevře a agent vysvětlí každou instrukci: který registr drží který argument, co dělá zásobník a kam se vrací výsledek. write_file uloží tato vysvětlení do notes/begin.md. V Plan only agent nejdřív tyto kroky vypíše. Zatím se nic nespouští. Pak přepni na Ask first a před každým uložením si přečti diff. Nakonec porovnej poznámky se svým zdrojovým kódem a pokud je to legální, otestuj přeloženou funkci v laboratoři.
Dobré cvičení z reverse engineeringu rozhraní API je vypsat funkce, které tvá vlastní knihovna zpřístupňuje, a zapsat, co dělá každý argument. Ulož jako text seznam importovaných a zpřístupněných funkcí z vlastního nástroje, potom agent pomocí grep najde každé volání jedné funkce a přes read_file otevře řádky kolem něj. Navrhne tabulku v notes/api.md a edit_file ukáže každou změnu jako diff. Začni jednou funkcí. Stejná metoda ti pomůže zjistit, jak fungoval tvůj vlastní starý kód. Agent se může splést v typu nebo účelu, proto před přijetím porovnej každý řádek se zdrojovým kódem a s vlastním testem.