07.02.2015 Views

The Art of Reversing by Ap0x - Tutoriali.org

The Art of Reversing by Ap0x - Tutoriali.org

The Art of Reversing by Ap0x - Tutoriali.org

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Kao i drugi deo treci se svodi na ovo:<br />

e[7] = d[7] xor ESI xor t[3]<br />

e[8] = d[8] xor ESI xor t[3]<br />

e[9] = d[9] xor ESI xor t[3]<br />

Sledeca dva poddela se malo razlikuju u odnosu na dosadasnja tri.<br />

00407EC7 |. 8858 08 MOV BYTE PTR DS:[EAX+8],BL /*Sub 4-1<br />

00407ECA |. 8B45 FC<br />

MOV EAX,DWORD PTR SS:[EBP-4]<br />

00407ECD |. 33DB<br />

XOR EBX,EBX<br />

00407ECF |. 8A58 09<br />

MOV BL,BYTE PTR DS:[EAX+9]<br />

00407ED2 |. 33DE<br />

XOR EBX,ESI<br />

00407ED4 |. 335D F4<br />

XOR EBX,DWORD PTR SS:[EBP-C]<br />

00407ED7 |. 8D45 FC<br />

LEA EAX,DWORD PTR SS:[EBP-4]<br />

00407EDA |. E8 D9BAFFFF CALL NAG-RAR.004039B8<br />

00407EDF |. 8858 09 MOV BYTE PTR DS:[EAX+9],BL */<br />

00407EE2 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] /* Sub 4-2<br />

00407EE5 |. 33DB<br />

XOR EBX,EBX<br />

00407EE7 |. 8A58 0A<br />

MOV BL,BYTE PTR DS:[EAX+A]<br />

00407EEA |. 33DE<br />

XOR EBX,ESI<br />

00407EEC |. 335D EC<br />

XOR EBX,DWORD PTR SS:[EBP-14]<br />

00407EEF |. 8D45 FC<br />

LEA EAX,DWORD PTR SS:[EBP-4]<br />

00407EF2 |. E8 C1BAFFFF CALL NAG-RAR.004039B8<br />

00407EF7 |. 8858 0A MOV BYTE PTR DS:[EAX+A],BL */<br />

00407EFA |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] /* Sub 4-3<br />

00407EFD |. 33DB<br />

XOR EBX,EBX<br />

00407EFF |. 8A58 0B<br />

MOV BL,BYTE PTR DS:[EAX+B]<br />

00407F02 |. 33DE<br />

XOR EBX,ESI<br />

00407F04 |. 335D F0<br />

XOR EBX,DWORD PTR SS:[EBP-10]<br />

00407F07 |. 8D45 FC<br />

LEA EAX,DWORD PTR SS:[EBP-4]<br />

00407F0A |. E8 A9BAFFFF CALL NAG-RAR.004039B8<br />

00407F0F |. 8858 0B MOV BYTE PTR DS:[EAX+B],BL */<br />

Vidimo da je princip isti samo se malo razlikuju koraci 2 i 3 u odnosu na<br />

prethodne pododeljke. Za sledeca dva puta vaze sledece formule:<br />

e[10] = d[10] xor ESI xor t[1]<br />

e[11] = d[11] xor ESI xor t[2]<br />

e[12] = d[12] xor ESI xor t[3]<br />

e[13] = d[13] xor ESI xor t[1]<br />

e[14] = d[14] xor ESI xor t[2]<br />

e[15] = d[15] xor ESI xor t[3]<br />

I konacno imamo formulu po kojoj se dekriptuje enkriptovani d[x] string.<br />

Sledi deo koji se odnosi na proveru a nalazi se ovde:<br />

00407F5A |. 33D2 XOR EDX,EDX /* Check<br />

00407F5C |. B8 01000000 MOV EAX,1<br />

00407F61 |> 8B4D FC /MOV ECX,DWORD PTR SS:[EBP-4]<br />

00407F64 |. 0FB64C01 FF |MOVZX ECX,BYTE PTR DS:[ECX+EAX-1]<br />

00407F69 |. 03D1<br />

|ADD EDX,ECX<br />

00407F6B |. 40<br />

|INC EAX<br />

00407F6C |. 83F8 0A<br />

|CMP EAX,0A<br />

00407F6F |.^ 75 F0<br />

\JNZ SHORT NAG-RAR.00407F61<br />

00407F71 |. 81FA 24030000 CMP EDX,324<br />

00407F77 |. 75 2B JNZ SHORT NAG-RAR.00407FA4 */<br />

Kao sto se vidi ovaj loop se ponavlja 9 puta i unutar tog loopa se sabiraju sva<br />

slova iz “dekriptovanog” stringa i njihov zbir se poredi sa 0x324. Ovde se<br />

namece jedan problem... Naime sabiraju se samo 9 slova iz imena a string je<br />

dugacak 15 karaktera. Ovo znaci da ce postojati veliki broj tacnih serijskih<br />

brojeva ali da ce samo jedan dekriptovati string na bas pravi nacin. Ovo<br />

takodje znaci da ce program za neke serijske govoriti da su tacni iako to<br />

<strong>The</strong> <strong>Art</strong> <strong>of</strong> <strong>Reversing</strong> <strong>by</strong> <strong>Ap0x</strong> Page 278 <strong>of</strong> 293

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!