Advanced WMA Workshop 2.04b简单脱壳破解
程序用asp1.24rc4加壳,并用壳的时间保护
作者:lordor QQ:88378557 Mail:lordor#163.com 来自:www.digitalnuke.com 说明:asp1.24RC4的Stolen code的寻找方法,这个方法对于1.3以上的是否管用,还在研究中。 自由转载请保
一、寻找伪OEP 用od载入程序,设置内存不打钩,其它都 打钩,隐藏od,到如下: AWMAWork.>PUSH AWMAWork.00632001 ==>先停在这里,看一下寄存器的值 -------------- ECX 0012FFB0 EDX 7FFE0304 EBX 7FFDF000 ESP 0012FFC4 ==>注意这个 EBP 0012FFF0 ==> ESI 00000024 EDI 00000000 EIP 00401000 AWMAWork.<ModuleEntryPoint> --------------
经过26个seh后,到这里的特征代码: 00CB39EC XOR DWORD PTR DS:[EAX],EAX ==>停在这里 00CB39EE POP DWORD PTR FS:[0] 00CB39F5 POP EAX 00CB39F6 CMP DWORD PTR DS:[CB7EB0],0 00CB39FD JE SHORT 00CB3A13 00CB39FF PUSH 0C 00CB3A01 MOV ECX,0CB7EB0 00CB3A06 LEA EAX,DWORD PTR SS:[EBP-8] 00CB3A09 MOV EDX,4 00CB3A0E CALL 00CB0B40 00CB3A13 PUSH DWORD PTR SS:[EBP-4] 00CB3A16 PUSH DWORD PTR SS:[EBP-8] 00CB3A19 MOV EAX,DWORD PTR SS:[EBP-C] 00CB3A1C CMP DWORD PTR DS:[EAX],0 00CB3A1F JE SHORT 00CB3A23 00CB3A21 PUSH DWORD PTR DS:[EAX] 00CB3A23 PUSH DWORD PTR SS:[EBP-10] 00CB3A26 PUSH DWORD PTR SS:[EBP-14] 00CB3A29 RETN ==>这里下断,shift+F9运行到这里
打开"Memory Map"窗口 在AWMAWorkshop的"code"段下“Set break-on access”(即按F2),这样当执行完壳的代码后,再执行解压后代码段的内容就会停下来。 置完后,按F9,会到这里 0047DB94 PUSH AWMAWork.0047DCEC ; JMP to MSVCR70._except_handler3 0047DB99 MOV EAX,DWORD PTR FS:[0] 0047DB9F PUSH EAX 0047DBA0 MOV EAX,DWORD PTR SS:[ESP+10] 0047DBA4 MOV DWORD PTR SS:[ESP+10],EBP 0047DBA8 LEA EBP,DWORD PTR SS:[ESP+10] 0047DBAC SUB ESP,EAX ==>这里为stack分配局部地址,eax为压入的立即数 0047DBAE PUSH EBX *** 0047DBAF PUSH ESI *** 0047DBB0 PUSH EDI *** 0047DBB1 MOV EAX,DWORD PTR SS:[EBP-8] 0047DBB4 MOV DWORD PTR SS:[EBP-18],ESP 0047DBB7 PUSH EAX *** 0047DBB8 MOV EAX,DWORD PTR SS:[EBP-4] 0047DBBB MOV DWORD PTR SS:[EBP-4],-1 0047DBC2 MOV DWORD PTR SS:[EBP-8],EAX 0047DBC5 LEA EAX,DWORD PTR SS:[EBP-10] 0047DBC8 MOV DWORD PTR FS:[0],EAX 0047DBCE RETN ==>停在这里 0047DBCF MOV ECX,DWORD PTR SS:[EBP-10] 0047DBD2 MOV DWORD PTR FS:[0],ECX 0047DBD9 POP ECX 0047DBDA POP EDI 0047DBDB POP ESI 0047DBDC POP EBX 0047DBDD LEAVE 0047DBDE PUSH ECX
可以看到这个是VC7的第一个call的代码,看一下寄存器的值,并注意***上面压入了几句(这里只有四句),后面会用到: ------------ ECX 0012FFB0 EDX 7FFE0304 EBX 7FFDF000 ESP 0012FF30 ==>注意这里 EBP 0012FFC0 ESI 00000000 EDI 00000000 EIP 0047DBCE AWMAWork.0047DBCE
------------ F8一步,到这里 0047D8C5 RETN 10 0047D8C8 ADD BYTE PTR DS:[EAX],AL 0047D8CA ADD BYTE PTR DS:[EAX],AL 0047D8CC ADD BYTE PTR DS:[EAX],AL 0047D8CE NOP ==>花指令,nop掉 0047D8CF CALL AWMAWork.0047DB94 0047D8D4 XOR EBX,EBX ===>到这里,伪OEP,可以看到上一个call(0047DB94)已经在壳中运行了 0047D8D6 PUSH EBX 0047D8D7 MOV EDI,DWORD PTR DS:[4820FC] 0047D8DD CALL EDI 0047D8DF CMP WORD PTR DS:[EAX],5A4D 0047D8E4 JNZ SHORT AWMAWork.0047D905 0047D8E6 MOV ECX,DWORD PTR DS:[EAX+3C] 0047D8E9 ADD ECX,EAX
[1] [2] 下一页 |