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脱壳+减肥+去效验+去暗桩”的基础上完成,在此表示感谢!
-----------------------------------------------------
【版权声明】菜鸟之作,可以自由转载, 转载请注明作者并保持文章的完整, 谢谢!
----------------------------------------------------- 不错 /:good 小弟再这里向老兄学习了,谢谢~! 感谢LZ分享的脱壳文章,收藏学习! 005035AC 803D BE4D5306 0>CMP BYTE PTR DS:,3 ; F8来到这里后,把这句改为:CMP BYTE PTR DS:,6
楼主,为什么把3改为6?能否告知,谢谢! 学习壳,基本壳盲! 来学习下,谢谢分享 菜鸟来学习了,收藏了,感谢分享了 写的很好,学习了。 方法很好学习仿照
页:
[1]
2