Otwórz folder projektu
Wybierz folder roboczy z twoim kodem źródłowym w C, kopią skompilowanego pliku i, później, wyeksportowanym listingiem.
Wybierz jedną małą funkcję z programu w C, który sam skompilowałeś, i zbadaj ją od pierwszej instrukcji do końcowego return. Prawo i warunki licencji różnią się w zależności od kraju, więc używaj tylko własnego kodu lub plików ćwiczebnych. Poniżej cztery kroki.
Wybierz folder roboczy z twoim kodem źródłowym w C, kopią skompilowanego pliku i, później, wyeksportowanym listingiem.
Pozwól, by Shell uruchomił polecenie eksportu twojego dezasemblera na kopii, albo zapisz listing sam, aby wynikiem był plik tekstowy.
Poproś agenta, aby przeczytał listing i wyjaśnił funkcję linijka po linijce, a potem zapisz notatki przez write_file.
Porównaj notatki z kodem źródłowym i listingiem, przeczytaj diff w Ask first i przetestuj wynik w laboratorium, jeśli jest to legalne.
add_numbers.asmtekst odczytanyedx add_numbers.asm2 trafienianotes/add_numbers.mdzapisanonotes/add_numbers.md+4 linie; 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 eaxTa funkcja dodaje dwie liczby całkowite. Zgodnie z konwencją Windows x64 argumenty trafiają do ecx i edx, suma powstaje w eax, a ret oddaje sterowanie wywołującemu.
Częste pytanie początkujących brzmi, jak zacząć z asemblerem, a odpowiedzią jest funkcja, którą sam napisałeś. Napisz krótką funkcję w C, skompiluj ją i wyeksportuj listing jako tekst. read_file otwiera listing, a agent wyjaśnia każdą instrukcję: który rejestr przechowuje który argument, co robi stos i dokąd wraca wynik. write_file zapisuje te wyjaśnienia w notes/begin.md. W Plan only agent najpierw wypisuje te kroki. Nic jeszcze nie jest uruchamiane. Potem przełącz się na Ask first i przeczytaj diff przed każdym zapisem. Na końcu porównaj notatki z własnym kodem i, jeśli jest to legalne, przetestuj skompilowaną funkcję w laboratorium.
Dobrym ćwiczeniem z reverse engineeringu API jest wypisanie funkcji, które udostępnia twoja własna biblioteka, i zapisanie, co robi każdy argument. Zapisz jako tekst listę funkcji importowanych i udostępnianych przez twoje własne narzędzie, a potem agent używa grep do znalezienia każdego wywołania jednej funkcji i read_file do otwarcia linii wokół niego. Przygotowuje tabelę w notes/api.md, a edit_file pokazuje każdą zmianę jako diff. Zacznij od jednej funkcji. Ta sama metoda pomaga odtworzyć, jak działał twój własny stary kod. Agent może się pomylić co do typu lub przeznaczenia, więc porównaj każdy wiersz z kodem źródłowym i własnym testem, zanim go zaakceptujesz.