CJK Workbench
Pracovní postupy

Praktický reverse engineering, funkci po funkci

03
Scénář

Jak začít s praktickým reverse engineeringem

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.

01

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.

02

Exportuj textový 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.

03

Požádej o vysvětlení

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.

04

Ověř odpověď

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í.

Výukový výpis ke čtení

add_numbers.asm
; 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 eax

Tato 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.

Dvě cvičení pro hodinu reverse engineeringu

Začni funkcí, kterou jsi napsal sám

Č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.

Zdokumentuj funkce vlastní knihovny

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.

CJK Workbench pro Windows

Projdi si vlastní příklad

Stáhnout CJK Workbench ↗