本文只是适合新手手动脱壳的入门和爆破入门,高手们不要笑小弟呀! (可以多多提意见,我是很谦虚的!).
用到的工具:
1.)softice 4.05
2.)icedump v6.0.1.6
3.)filemon v245
4.)peditor v1.7
5.)ImportREC v 1.2beta2
我没有用trw2000,因为这个软件解密时检查Trw2000,我看是因为这软件是中国人写的吧!!(比较了解国情).
一)脱壳部分:
1.)首先我们用filemon来检查文件的类型:
相信大家都会用吧:烤,怎么是petite2.2 ,没搞过呀!!!.别急.
2.)当然是检查程序的pe结构了:
打开peditor,选中程序,用笔记录以下几个数据:
Entry Point:169042.
Image base :400000
size of image:16a000.
3.)寻找入口点(OEP):先运行icedump->再运行softice loader--> 再Ctrl+d
好了准备工作完成了,该选择断点了.一般大家脱壳时用bpx loadlibrarya do "dd esp->4"(经验,好好看看Pe结构并懂一些Win32编程即知)
再Ctrl+d-->再load program.
断了吧这是loadlibrary函数的入口,该函数是Dll中的不用理.
bc *,按F12 n下,注意领空的变化呀!,到了主程序的领空后停下.
当前代码如下:0167:004E7679 JZ 004E76830167:004E767B ADD ESP,2A0167:004E767E JMP 005690150167:004E7683 MOV ESI,000E50000167:004E7688 ADD ESI,EBP0167:004E768A LEA ECX,[EBP+00000800]0167:004E7690 MOV EBX,EAX0167:004E7692 CMP DWORD PTR [ESI],000167:004E7695 JZ 004E78A9 --->注意这是个捷径.0167:004E769B PUSH ECX0167:004E769C PUSH ECX0167:004E769D CALL [EBP+00000790]0167:004E76A3 TEST EAX,EAX ---->注意这是用F12跳到的第一条指令.0167:004E76A5 JZ 004E778A0167:004E76AB MOV EDI,EAX0167:004E76AD ADD EAX,[EAX+3C]0167:004E76B0 MOV EAX,[EAX+78]0167:004E76B3 PUSH DWORD PTR [EDI+EAX+18]0167:004E76B7 MOV ECX,[EDI+EAX+24]0167:004E76BB ADD ECX,EDI0167:004E76BD PUSH ECX------------------------CPKCBJB!.petite+2679----------------
程序第一次来到004e76a3,正常的话用F10开道(用F12就出去了),可是我参考了精华3上的如下文章:
那上说在这时应向上找入口点的捷径.所以我直接用指令g 004e78a9来到:
(当然,你有耐心的话不用捷径用F10最后也可以来到这地方) 0167:004E78A4 SUB EBX,060167:004E78A7 JMP 004E786E0167:004E78A9 POP ECX --->g 指令来到的点.0167:004E78AA POP ESI0167:004E78AB STD0167:004E78AC XOR EAX,EAX0167:004E78AE MOV ECX,000003560167:004E78B3 CALL 00569039 --->F8进入.0167:004E78B8 ADD [EAX],AL0167:004E78BA ADD [EAX],AL0167:004E78BC ADD [EAX],AL0167:004E78BE ADD [EAX],AL0167:004E78C0 ADD [EAX],AL------------------------CPKCBJB!.petite+288F----------------------
必须进入不然又掉了.来到:0167:00569039 POP EDI0167:0056903A REPZ STOSB0167:0056903C POPAD0167:0056903D POPF0167:0056903F ADD ESP,080167:00569042 JMP 004C3E28 --->很关键的跳(OEP的跳).0167:00569047 JMP KERNEL32!GetCurrentThreadId0167:0056904C JMP KERNEL32!VirtualFree0167:00569051 JMP KERNEL32!LocalFree------------------------CPKCBJB!+0039----------------------
接着来到OEP.:
0167:004C3E28 PUSH EBP --->程序的入口点0167:004C3E29 MOV EBP,ESP0167:004C3E2B ADD ESP,-0C0167:004C3E2E PUSH EBX0167:004C3E2F MOV EAX,004C3B600167:004C3E34 CALL 004061A80167:004C3E39 MOV EBX,[004C6B34] -----------------------CPKCBJB!+000C2E28------------------------
呵呵,OEP找到了,成功一半了.
下指令/dump 400000 16da000 1.exe
退出softice和icedump.