Open je projectmap
Kies een werkmap met je C-broncode, een kopie van het gecompileerde bestand en later de geëxporteerde listing.
Kies één kleine functie uit een C-programma dat je zelf hebt gecompileerd en bestudeer die van de eerste instructie tot de laatste return. Wetten en licentievoorwaarden verschillen per land, dus gebruik alleen je eigen code of oefenbestanden. Hieronder volgen vier stappen.
Kies een werkmap met je C-broncode, een kopie van het gecompileerde bestand en later de geëxporteerde listing.
Laat Shell het exportcommando van je disassembler op de kopie uitvoeren, of sla de listing zelf op, zodat het resultaat een tekstbestand is.
Vraag de agent de listing te lezen en de functie regel voor regel uit te leggen, en sla de notities op met write_file.
Vergelijk de notities met je broncode en de listing, lees de diff in Ask first en test het resultaat in een lab als dat legaal is.
add_numbers.asmtekst gelezenedx add_numbers.asm2 treffersnotes/add_numbers.mdopgeslagennotes/add_numbers.md+4 regels; 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 eaxDeze functie telt twee gehele getallen op. Volgens de Windows x64-conventie komen de argumenten binnen in ecx en edx, wordt de som opgebouwd in eax en geeft ret de controle terug aan de aanroeper.
Een veelgehoorde beginnersvraag is hoe je met assembly begint, en het antwoord is een functie die je zelf schreef. Schrijf een korte C-functie, compileer hem en exporteer de listing als tekst. read_file opent de listing en de agent legt elke instructie uit: welk register elk argument bevat, wat de stack doet en waar het resultaat terugkomt. write_file slaat die uitleg op in notes/begin.md. In Plan only somt de agent eerst deze stappen op. Er wordt nog niets uitgevoerd. Wissel dan naar Ask first en lees de diff vóór elke opslag. Vergelijk ten slotte de notities met je broncode en test de gecompileerde functie, als het legaal is, in een lab.
Een goede oefening in reverse engineering van API's is de functies opsommen die je eigen bibliotheek aanbiedt en opschrijven wat elk argument doet. Sla de lijst met geïmporteerde en aangeboden functies uit je eigen tool op als tekst, waarna de agent met grep elke aanroep van één functie vindt en met read_file de regels eromheen opent. Hij stelt een tabel op in notes/api.md, en edit_file toont elke wijziging als diff. Begin met één functie. Dezelfde methode helpt je achterhalen hoe je eigen oude code werkte. De agent kan zich vergissen in een type of doel, dus vergelijk elke rij met je broncode en met een eigen test voordat je hem accepteert.