Reversing : The Hacker's Guide to Reverse Engineering

(ff) #1
00401A07 LEA EAX,SS:[ESP+14] ;
00401A0B PUSH EAX ; pBytesRead
00401A0C PUSH 28 ; BytesToRead = 28 (40.)
00401A0E PUSH cryptex.00406058 ; Buffer = cryptex.00406058
00401A13 PUSH ESI ; hFile
00401A14 CALL DS:[<&KERNEL32.ReadFile>]
00401A1A MOV ECX,SS:[ESP+1C]
00401A1E MOV EDX,DS:[406064]
00401A24 PUSH ECX
00401A25 PUSH EDX
00401A26 PUSH ESI
00401A27 CALL cryptex.00401030
00401A2C MOV EBP,DS:[<&MSVCR71.printf>]
00401A32 MOV ESI,DS:[406064]
00401A38 PUSH cryptex.00403234 ; format = “ File Size File
Name”
00401A3D MOV DWORD PTR SS:[ESP+1C],cryptex.00405050
00401A45 CALL EBP ; printf
00401A47 ADD ESP,10
00401A4A TEST ESI,ESI
00401A4C JE SHORT cryptex.00401ACD
00401A4E PUSH EDI
00401A4F MOV EDI,SS:[ESP+24]
00401A53 JMP SHORT cryptex.00401A60
00401A55 LEA ESP,SS:[ESP]
00401A5C LEA ESP,SS:[ESP]
00401A60 MOV ESI,SS:[ESP+10]
00401A64 ADD ESI,8
00401A67 MOV DWORD PTR SS:[ESP+14],1A
00401A6F NOP
00401A70 MOV EAX,DS:[ESI]
00401A72 TEST EAX,EAX
00401A74 JE SHORT cryptex.00401A9A
00401A76 MOV EDX,EAX
00401A78 SHL EDX,0A
00401A7B SUB EDX,EAX
00401A7D ADD EDX,EDX
00401A7F LEA ECX,DS:[ESI+14]
00401A82 ADD EDX,EDX
00401A84 PUSH ECX
00401A85 SHR EDX,0A
00401A88 PUSH EDX
00401A89 PUSH cryptex.00403250 ; ASCII “ %10dK %s”
00401A8E CALL EBP
00401A90 MOV EAX,DS:[ESI]
00401A92 ADD DS:[EDI],EAX
00401A94 ADD ESP,0C
00401A97 ADD EBX,1

Listing 6.6 (continued)

220 Chapter 6

Free download pdf