Bud mi neco uniklo, nebo jsi popis toho, jak zjistit prvni cast SN (prvnich 5 znaku) naprosto odbyl. Pises ze jsi napred zadal naprosto nahodne SN 12345678901. To te tedy vykoplo hned pri prvni podmince na pomlcku. A pak uz hned pises ze jsi zadal 88451-78901. Divim se, ze se tady jeste ale nikdo neptal, jak si zjistil ze prvnich pet znaku je zrovna 88451. Opravdu jsi dite stesteny, jestli jsi tuto kombinaci zadal nahodne, ale o tom ale vazne pochybuji:) No dovolim si tedy strucne doplnit, kde se prvni cast SN vlastne vzala:
Dulezity je cyklus mezi intrukcemi
LEA EDX,DWORD PTR SS:[EBP-C]
a
JNZ SHORT sF_crmeR.0042F206 (obe vcetne)
tyto intrukce ohranicuji cyklus (ja vim ze to neni zrovna elegantni vyjadreni ale v OllyDbg to pekne vidite, intrukce v cyklu jsou zleva ohranicene "svorkou") Tento cyklus ma 5 prubehu (protoze prvni cast SN ma 5 znaku) a ridici "promennou" (spise regitrem) cyklu je registr BL, cili nizsich osm bitu registru BX. BL je jeste pred zacatkem cyklu nastaven na hodnotu jedna instrukci MOV BL,1. Ke konci cyklu je registr BL inkrementovan a kontrolovan na hodnotu 6 (CMP BL,6) - to dohromady zajisti 5 prubehu cyklu jak jiz bylo receno vyse. Druhym veledulezitym registrem tohoto cyklu je registr ESI. Ten spolu s registrem DS (DS:[ESI]) tvori adresu odkud se bere cislo, ktere porovnavame s nami zadanym cislem v SN. V kazdem pruhehu cyklu se hodnota v ESI zvysi o 1 (INC ESI), takze ukazatel na pamet se posune na dalsi srovnavane cislo. Kdyz toto vite staci si nastavit BP na instrukci CMP AL,BYTE PTR DS:[ESI] a Olly vam automaticky vypise hodnotu nachazejici se na adrese DS:[ESI], coz je hledana cislice SN. Staci si tedy vzdy cislo opsat, zadat serial jiz se zjistenym cislem, zjistit dalsi atd dokud nezjistite vsech 5 cisel. No to bylo asi vse co jsem mel na srdci, slo mi jen o to, ze podobna pasaz v tom clanku evidentne chybi. Ale pokud mi neco uteklo nebo je jednodussi metoda, tak sorry, uz je celkem pozde a vnimani neni na nejlepsi urovni:) Zatim.
|