Keby niekto chcel, tak vás pochytá u? dávno...
otázkou je, ako by uspeli, na?e zákony sú výsmechom.
No, nič, idem späť ku crackme. Keby ste ich videli, tak sa zasmejete, ale nejako sa musí začínať i v tejto oblasti. Mo?nosti RE sú rozsiahle.
Momentálne som spravil keygen pre
Cruehead's CrackMe 1 a e?te si skú?am tú jeho rutinu na prevod reťazca obsahujúceho čísla do DWORD hodnoty. Inak AT&T syntax je pekný humus, ale čo narobím, keď LCC nepodporuje Intel zápis?
DWORD str_to_num(char *pcNum)
{
DWORD dwNum = 0;
while (*pcNum)
{
dwNum *= 10;
dwNum += *pcNum - 0x30;
pcNum++;
}
return (dwNum);
}
DWORD __declspec(naked) str_to_num_asm(char *pcNum)
{
_asm("xorl %eax, %eax");
_asm("xorl %ebx, %ebx");
_asm("xorl %edi, %edi");
_asm("movl 4(%esp), %esi");
_asm("start:");
_asm("movb $0x0A, %al");
_asm("movb (%esi), %bl");
_asm("testb %bl, %bl");
_asm("je end");
_asm("subb $0x30, %bl");
_asm("imull %eax, %edi");
_asm("addl %ebx, %edi");
_asm("incl %esi");
_asm("jmp start");
_asm("end:");
_asm("movl %edi, %eax");
_asm("ret");
}
Master: U? sa preorientovávam na OllyDbg... :cool:
004013D8 /$ 33C0 XOR EAX,EAX
004013DA |. 33FF XOR EDI,EDI
004013DC |. 33DB XOR EBX,EBX
004013DE |. 8B7424 04 MOV ESI,DWORD PTR SS:[ESP+4]
004013E2 |> B0 0A /MOV AL,0A
004013E4 |. 8A1E |MOV BL,BYTE PTR DS:[ESI]
004013E6 |. 84DB |TEST BL,BL
004013E8 |. 74 0B |JE SHORT CRACKME1.004013F5
004013EA |. 80EB 30 |SUB BL,30
004013ED |. 0FAFF8 |IMUL EDI,EAX
004013F0 |. 03FB |ADD EDI,EBX
004013F2 |. 46 |INC ESI
004013F3 |.^EB ED \JMP SHORT CRACKME1.004013E2
[COLOR=DimGray]004013F5 |> 81F7 34120000 XOR EDI,1234[/COLOR]
004013FB |. 8BDF MOV EBX,EDI
004013FD \. C3 RETN