黑客防线,在攻与防的对立统一中寻求突破!2001年创刊的黑客技术专业刊物!

设为首页
收藏本站
联系我们
网站导航

黑客文章 - 加密解密 - 浏览 - 寻找Asp1.2X的Stolen code的另一种方法

寻找Asp1.2X的Stolen code的另一种方法

黑客 发布日期:2008-1-24 3:56:31 共有 357 人次浏览
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页次 第1页 第2页 下一页 最后一页
所属分类: 加密解密     网摘收藏: Google 雅虎 百度 POCO 365key 和讯 天极