cxx17 发表于 2009-8-8 20:38:55

ExeInfo PE ver. 0.0.2.4 正式版 脱壳+资源优化+去自校验

【破文标题】ExeInfo PE ver. 0.0.2.4 正式版 脱壳+资源优化+去自校验
【破文作者】cxx17
【作者主页】NO
【作者邮箱】NO
【破解工具】peid,OD
【破解平台】Win XP SP3
【软件名称】ExeInfo PE ver. 0.0.2.4 正式版
【软件大小】557kb
【原版下载】http://users.cjb.net/exeinfo/exeinfope.zip
【保护方式】壳 + 自校验
【软件简介】一个不错的查壳软件!
【破解声明】只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
-----------------------------------------------------
【破解过程】-----------------------------------------

1、查壳。
用PEID深度扫描,发现是“UPX V2.00-V3.X -> Markus Oberhumer & Laszlo Molnar & John Reiser   * Sign.By.fly *”加的壳。

2、脱壳。
od载入程序,停在下面:

065933AB > /EB 0A         JMP SHORT exeinfop.065933B7            ; 停在这里,F8单步走
065933AD   |EB 01         JMP SHORT exeinfop.065933B0
065933AF   |68 60E80000   PUSH 0E860
065933B4   |0000            ADD BYTE PTR DS:,AL
065933B6   |8B90 90909090   MOV EDX,DWORD PTR DS:
065933BC    90            NOP
065933BD    90            NOP
065933BE    90            NOP
065933BF    90            NOP
065933C0    90            NOP
065933C1    90            NOP
065933C2    90            NOP
065933C3    90            NOP
065933C4    90            NOP
065933C5    90            NOP
065933C6    90            NOP
065933C7    90            NOP
065933C8    90            NOP
065933C9    90            NOP
065933CA    90            NOP
065933CB    90            NOP
065933CC    90            NOP
065933CD    EB 04         JMP SHORT exeinfop.065933D3            ; 到这里,继续F8

065933D3    90            NOP                                    ; 来到这里,继续F8
065933D4^ E9 07F4FFFF   JMP exeinfop.065927E0                  ; F8

065927E0    60            PUSHAD                                 ; F8
065927E1    BE 00B05006   MOV ESI,exeinfop.0650B000                ; 命令行下断点 hr esp 然后F9运行

0659336C    8D4424 80       LEA EAX,DWORD PTR SS:            ; 来到这里取消硬件断点
06593370    6A 00         PUSH 0
06593372    39C4            CMP ESP,EAX
06593374^ 75 FA         JNZ SHORT exeinfop.06593370
06593376    83EC 80         SUB ESP,-80
06593379- E9 0667F8F9   JMP exeinfop.00519A84                  ; 这里F2下断,F9运行断下后,取消断点,单步F8一下就跳到了OEP

00519A84    55            PUSH EBP                                 ; OEP
00519A85    8BEC            MOV EBP,ESP
00519A87    B9 07000000   MOV ECX,7
00519A8C    6A 00         PUSH 0
00519A8E    6A 00         PUSH 0
00519A90    49            DEC ECX
00519A91^ 75 F9         JNZ SHORT exeinfop.00519A8C
00519A93    53            PUSH EBX
00519A94    56            PUSH ESI
00519A95    57            PUSH EDI
00519A96    B8 4C825100   MOV EAX,exeinfop.0051824C
00519A9B    E8 C4DAEEFF   CALL exeinfop.00407564

来到OEP后,用OD插件脱壳,在OD插件上注意选择“重建输入表”-->“方式2”,脱壳后就能运行。

2、资源优化。
脱壳后程序有“97.5MB”,用软件“Resource Binder 2.6”重构一下资源,在软件“Resource Binder 2.6”界面“选项”上勾选所以项目,选择文件后,点击“重构”,文件大小变为“1.90MB”,运行重构后的资源,出现错误提示,用"ImpREC"修复下输入表。
修复输入表时,先运行脱壳后的软件,用“ImpREC”选中脱壳后的软件,点“自动查找IAT”-->“获取输入表”-->“转储到文件”,选中优化后的文件,修复一下就能运行了。软件大小变为“1.91MB”。

3、去自校验。
脱壳后的软件有错误提示“Exeinfo was corrupted - Please download new”。
OD载入修复好的程序,命令行下断点“bp CreateFileA”,F9运行,断在下面:
7C801A28 >8BFF            MOV EDI,EDI                              ; 断在这里,取消断点,ALT + F9 返回
7C801A2A    55            PUSH EBP
7C801A2B    8BEC            MOV EBP,ESP
7C801A2D    FF75 08         PUSH DWORD PTR SS:
7C801A30    E8 DFC60000   CALL kernel32.7C80E114
7C801A35    85C0            TEST EAX,EAX
7C801A37    74 1E         JE SHORT kernel32.7C801A57

00403D48    83F8 FF         CMP EAX,-1                               ; 返回到这里,F8往下走
00403D4B    74 24         JE SHORT unpack_.00403D71
00403D4D    8903            MOV DWORD PTR DS:,EAX
00403D4F    EB 30         JMP SHORT unpack_.00403D81
00403D51    C743 24 BC33400>MOV DWORD PTR DS:,unpack_.004033>
00403D58    83FF 03         CMP EDI,3
00403D5B    74 04         JE SHORT unpack_.00403D61
00403D5D    6A F6         PUSH -0A
00403D5F    EB 02         JMP SHORT unpack_.00403D63
00403D61    6A F5         PUSH -0B
00403D63    E8 CCD4FFFF   CALL <JMP.&kernel32.GetStdHandle>
00403D68^ EB DE         JMP SHORT unpack_.00403D48
00403D6A    B8 66000000   MOV EAX,66
00403D6F    EB 0B         JMP SHORT unpack_.00403D7C
00403D71    66:C743 04 B0D7 MOV WORD PTR DS:,0D7B0
00403D77    E8 40D5FFFF   CALL <JMP.&kernel32.GetLastError>
00403D7C    E8 0BF1FFFF   CALL unpack_.00402E8C
00403D81    5F            POP EDI
00403D82    5E            POP ESI
00403D83    5B            POP EBX
00403D84    C3            RETN

005035AC    803D BE4D5306 0>CMP BYTE PTR DS:,3            ; F8来到这里后,把这句改为:CMP BYTE PTR DS:,6
005035B3    75 12         JNZ SHORT unpack_.005035C7
005035B5    A1 B0135300   MOV EAX,DWORD PTR DS:
005035BA    8B80 60030000   MOV EAX,DWORD PTR DS:
005035C0    B2 01         MOV DL,1
005035C2    E8 2DEFF4FF   CALL unpack_.004524F4
005035C7    B2 02         MOV DL,2
005035C9    8BC3            MOV EAX,EBX
005035CB    E8 6CFDFFFF   CALL unpack_.0050333C
005035D0    EB 07         JMP SHORT unpack_.005035D9

改好后保存文件,发现没有错误提示了。
用修改后的程序查壳,发现会退出,说明还有校验。
继续用OD载入程序,下断点“bp ExitProcess”,F9运行后,查壳,一会程序断在下面:
7C81CB12 >8BFF            MOV EDI,EDI                              ; 断在这里,取消断点
7C81CB14    55            PUSH EBP
7C81CB15    8BEC            MOV EBP,ESP
7C81CB17    6A FF         PUSH -1
7C81CB19    68 B0F3E877   PUSH 77E8F3B0
7C81CB1E    FF75 08         PUSH DWORD PTR SS:
7C81CB21    E8 46FFFFFF   CALL kernel32.7C81CA6C
7C81CB26    E9 9ACF0100   JMP kernel32.7C839AC5

这里断下后,看堆栈窗口:
0012FA0C   004053D5/CALL 到 ExitProcess 来自 unpack_1.004053D0
0012FA10   00000000\ExitCode = 0

我们直接到004053D0看看:
004053D0    E8 AFBEFFFF   CALL <JMP.&kernel32.ExitProcess>
004053D5    8B03            MOV EAX,DWORD PTR DS:

然后在这段代码的段首看看:
00405310    53            PUSH EBX                                 ; 这里下断
00405311    56            PUSH ESI
00405312    57            PUSH EDI
00405313    55            PUSH EBP
00405314    BB C4075200   MOV EBX,unpack_1.005207C4
00405319    BF 44E05100   MOV EDI,unpack_1.0051E044
0040531E    807B 28 00      CMP BYTE PTR DS:,0
00405322    75 14         JNZ SHORT unpack_1.00405338
00405324    833F 00         CMP DWORD PTR DS:,0
00405327    74 0F         JE SHORT unpack_1.00405338



运行程序,查壳,断下后看堆栈窗口:
0012FA24   0050231B返回到 unpack_1.0050231B 来自 unpack_1.00405310
0012FA28   0012FB94指向下一个 SEH 记录的指针
0012FA2C   005023DFSE 处理器

我们在堆栈的第一行上点右键,点击“跟随到反汇编窗口”,来到这里:
0050231B    33C0            XOR EAX,EAX                              ; 来到这里往上看

005022BC    E8 B7C4FFFF   CALL unpack_1.004FE778
005022C1    3D 9CD30000   CMP EAX,0D39C
005022C6    74 53         JE SHORT unpack_1.0050231B               ; 发现这个跳比较可疑,改为:Jmp SHORT 0050231B
005022C8    B8 20345000   MOV EAX,unpack_1.00503420
005022CD    E8 A6C4FFFF   CALL unpack_1.004FE778
005022D2    33D2            XOR EDX,EDX
005022D4    52            PUSH EDX
005022D5    50            PUSH EAX
005022D6    8D95 B4FEFFFF   LEA EDX,DWORD PTR SS:
005022DC    B8 08000000   MOV EAX,8
005022E1    E8 6678F0FF   CALL unpack_1.00409B4C
005022E6    8B95 B4FEFFFF   MOV EDX,DWORD PTR SS:
005022EC    A1 B0135300   MOV EAX,DWORD PTR DS:
005022F1    8B80 68030000   MOV EAX,DWORD PTR DS:
005022F7    E8 0803F5FF   CALL unpack_1.00452604
005022FC    A1 B0135300   MOV EAX,DWORD PTR DS:
00502301    8B80 68030000   MOV EAX,DWORD PTR DS:
00502307    E8 D008F5FF   CALL unpack_1.00452BDC
0050230C    68 4C040000   PUSH 44C
00502311    E8 3ACCF0FF   CALL <JMP.&kernel32.Sleep>
00502316    E8 F52FF0FF   CALL unpack_1.00405310
0050231B    33C0            XOR EAX,EAX                              ; 来到这里往上看

改好后,保存,发现不退出了。

【破解总结】-----------------------------------------

本文是在观看了 RegKiller 老大的动画教程“exeinfope脱壳+减肥+去效验+去暗桩”的基础上完成,在此表示感谢!


-----------------------------------------------------
【版权声明】菜鸟之作,可以自由转载, 转载请注明作者并保持文章的完整, 谢谢!
-----------------------------------------------------

Nisy 发表于 2009-8-8 21:07:12

不错 /:good

冬天的雷雨 发表于 2009-8-9 08:31:18

小弟再这里向老兄学习了,谢谢~!

chn-2000 发表于 2009-8-15 07:27:35

感谢LZ分享的脱壳文章,收藏学习!

老万 发表于 2009-8-21 07:32:35

005035AC    803D BE4D5306 0>CMP BYTE PTR DS:,3            ; F8来到这里后,把这句改为:CMP BYTE PTR DS:,6
楼主,为什么把3改为6?能否告知,谢谢!

backboy 发表于 2009-9-10 21:09:41

学习壳,基本壳盲!

MyCracker 发表于 2009-9-11 14:21:32

来学习下,谢谢分享

开心啦 发表于 2012-6-30 15:05:46

菜鸟来学习了,收藏了,感谢分享了

Kinney 发表于 2012-6-30 19:27:10

写的很好,学习了。

决胜千里 发表于 2014-2-10 09:16:18

方法很好学习仿照
页: [1] 2
查看完整版本: ExeInfo PE ver. 0.0.2.4 正式版 脱壳+资源优化+去自校验