sjh717142 发表于 2009-11-8 23:59:55

脱壳ZProtect 1.4.9.2 记事本默认保护

文章标题】: 脱壳ZProtect 1.4.9.2 记事本默认保护
【文章作者】: Eddy
【作者邮箱】: [email protected]
【作者主页】: http://www.rrgod.com
【作者QQ号】: 860822214
【软件名称】: NotePad
【下载地址】: 大家都有……
【加壳方式】: ZProtect 1.4.9.2
【保护方式】: Free
【编写语言】: VC
【使用工具】: OD
【操作平台】: XP SP2
【作者声明】: 学习脱壳……
--------------------------------------------------------------------------------
【详细过程】
关于ZP加壳的程序如何到OEP,很简单。F7单步到pushad,然后利用ESP定律即可到达OEP。

到OEP后我们来修复IAT。关于ZP如何处理IAT的,可以去看hyperchem的脱文,那个版本和1.4.9.2的基本一样,不同之处看完我这个就明白了。

随便跟进一个call,观察一下 引用:
0040E684    68 50276710   PUSH 10672750
0040E689^ E9 96FFFFFF   JMP 0040E624
0040E624- E9 13425600   JMP 0097283C
0097283C    60            PUSHAD
0097283D    FF7424 20       PUSH DWORD PTR SS:
00972841    E8 DCF8FFFF   CALL 00972122
00972122    A1 44669700   MOV EAX,DWORD PTR DS:
00972127    8078 34 00      CMP BYTE PTR DS:,0
0097212B    74 57         JE SHORT 00972184
0097212D    FF15 E8109600   CALL DWORD PTR DS:               ; kernel32.GetTickCount
00972133    8BC8            MOV ECX,EAX
00972135    2B0D 10659700   SUB ECX,DWORD PTR DS:
0097213B    81F9 88130000   CMP ECX,1388
00972141    76 41         JBE SHORT 00972184
00972143    FF35 14659700   PUSH DWORD PTR DS:
00972149    A3 10659700   MOV DWORD PTR DS:,EAX
0097214E    FF15 58109600   CALL DWORD PTR DS:               ; kernel32.ResumeThread
00972154    833D 9C6C9700 0>CMP DWORD PTR DS:,3
0097215B    7C 08         JL SHORT 00972165
0097215D    6A 00         PUSH 0
0097215F    FF15 EC109600   CALL DWORD PTR DS:               ; kernel32.ExitProcess
00972165    803D 90669700 0>CMP BYTE PTR DS:,0
0097216C    74 08         JE SHORT 00972176
0097216E    FF05 9C6C9700   INC DWORD PTR DS:
00972174    EB 07         JMP SHORT 0097217D
00972176    8325 9C6C9700 0>AND DWORD PTR DS:,0
0097217D    C605 90669700 0>MOV BYTE PTR DS:,1
00972184    56            PUSH ESI
00972185    FF7424 08       PUSH DWORD PTR SS:
00972189    FF15 2C659700   CALL DWORD PTR DS:
0097218F    8BF0            MOV ESI,EAX
00972191    A1 646C9700   MOV EAX,DWORD PTR DS:
00972196    2B05 606C9700   SUB EAX,DWORD PTR DS:
0097219C    C1F8 02         SAR EAX,2
0097219F    3BF0            CMP ESI,EAX
009721A1    72 05         JB SHORT 009721A8
009721A3    E8 7649FFFF   CALL 00966B1E
009721A8    A1 606C9700   MOV EAX,DWORD PTR DS:
009721AD    8B04B0          MOV EAX,DWORD PTR DS:          //这里出现真实的API地址
009721B0    894424 2C       MOV DWORD PTR SS:,EAX
009721B4    5E            POP ESI
009721B5    C2 0400         RETN 4
修复IAT代码: 引用:009F0000    B8 D3104000   MOV EAX,4010D3               搜索FF15 查找第一个位置
009F0005    8038 FF         CMP BYTE PTR DS:,0FF
009F0008    75 3F         JNZ SHORT 009F0049
009F000A    8078 01 15      CMP BYTE PTR DS:,15   判断是不是FF15
009F000E    75 45         JNZ SHORT 009F0055
009F0010    8B58 02         MOV EBX,DWORD PTR DS:
009F0013    807B 03 00      CMP BYTE PTR DS:,0
009F0017    75 30         JNZ SHORT 009F0049
009F0019    8B0B            MOV ECX,DWORD PTR DS:
009F001B    50            PUSH EAX
009F001C    FF71 01         PUSH DWORD PTR DS:
009F001F    FF15 2C659700   CALL DWORD PTR DS:   壳处理IAT函数
009F0025    8BF0            MOV ESI,EAX
009F0027    A1 646C9700   MOV EAX,DWORD PTR DS:
009F002C    2B05 606C9700   SUB EAX,DWORD PTR DS:
009F0032    C1F8 02         SAR EAX,2
009F0035    3BF0            CMP ESI,EAX
009F0037    72 05         JB SHORT 009F003E
009F0039    E8 E06AF7FF   CALL 00966B1E
009F003E    A1 606C9700   MOV EAX,DWORD PTR DS:
009F0043    8B3CB0          MOV EDI,DWORD PTR DS:
009F0046    893B            MOV DWORD PTR DS:,EDI
009F0048    58            POP EAX
009F0049    83C0 01         ADD EAX,1
009F004C    3D 00005000   CMP EAX,500000                      搜索终点位置
009F0051^ 72 B2         JB SHORT 009F0005
009F0053    EB 08         JMP SHORT 009F005D
009F0055    8078 01 25      CMP BYTE PTR DS:,25          判断是不是FF25
009F0059 >^ 75 EE         JNZ SHORT 009F0049
009F005B^ EB B3         JMP SHORT 009F0010
009F005D- E9 6A10A1FF   JMP notepad_.004010CC
修复完后,然后用LordPE来DUMP,Import REC修复,全部有效^_修复转存文件,成功运行脱壳后文件。

收工!

加壳文件和脱壳后的文件下载见附件。



--------------------------------------------------------------------------------
【经验总结】
学习自己写代码来修复IAT,学习ZP……

--------------------------------------------------------------------------------
【版权声明】: 转载请注明作者并保持文章的完整, 谢谢!
                                                       2009年11月08日 23:40:25

Nisy 发表于 2009-11-9 13:00:16

Eddy 是老兄的马甲 ?

sjh717142 发表于 2009-11-9 15:28:09

原帖由 Nisy 于 2009-11-9 13:00 发表 https://www.chinapyg.com/images/common/back.gif
Eddy 是老兄的马甲 ?
本论坛有Eddy这个用户?Eddy是后来给自己整的个代号,sjh717142是原来一直用的……/:013

YUEN 发表于 2009-11-9 19:30:46

高手,如果能有个自动脱壳机就好了

550676503 发表于 2009-11-10 21:59:05

希望能做个视频教程那就好了,对了,还有就是有注册框的,如果不能试用的话如何跳到OEP哪,有试用的可以到OEP,没有的过不去注册框,还有不会修复,还望大牛指教,谢谢了

a2006 发表于 2009-11-20 09:29:12

不会这么简单吧

sjh717142 发表于 2009-11-20 10:53:36

原帖由 a2006 于 2009-11-20 09:29 发表 https://www.chinapyg.com/images/common/back.gif
不会这么简单吧
看着很简单 是吧^_

xie83544109 发表于 2009-11-28 22:30:00

/:010 高手就是不一样

mantou 发表于 2009-11-30 18:26:17

楼主能出个视频教程给我们学习下么

thinkfox 发表于 2009-12-1 20:02:52

相当深奥。。。。
页: [1] 2 3
查看完整版本: 脱壳ZProtect 1.4.9.2 记事本默认保护