【脱壳作者】 CCDebuger
【使用工具】 PEiD 0.94,OllyDBG 1.10 汉化版(用AutoPath.dll打过补丁),LordPE 1.4 看雪兄修改版,ImportREC 1.6 修正版本
【脱壳平台】 WinXP_SP2
【软件名称】 WinInnoUnp v0.17a
【软件简介】 InnoUnp Windows 用户界面程序。InnoUnp 为Inno Setup制作的安装程序的解包程序。
InnoUnp 可到下面站点获取: http://innounp.sourceforge.net
智能,绿色,不会有残余文件。
【软件大小】 19k
【加壳方式】 我不知道
【脱壳声明】 不好意思,我应该是只老菜鸟,只是不知道这是什么东西加的壳,想请教一下。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【脱壳内容】
这个工具是在汉化新世纪论坛上下载的,主要是我看这个软件很小,以为是用Masm32编的,就用PEiD查了一下,竟然没检测出来是什么壳!区段表名称都是些乱码,输入表全部显示为“错误”。用Fi检测了一下,也没识别出来。没办法,手脱一下。用OD载入,跳出一个对话框:32 位可执行文件格式错误或格式未知。点确定后又跳出一个对话框:无法在内存中分配1766617072字节。点确定进入,停在这里:
00401018 > BE B0114000 MOV ESI,WinInnoU.004011B0
0040101D AD LODS DWORD PTR DS:[ESI]
0040101E 50 PUSH EAX
0040101F FF76 34 PUSH DWORD PTR DS:[ESI+34]
00401022 EB 7C JMP SHORT WinInnoU.004010A0
00401024 48 DEC EAX
下断: BP VirtualAlloc,F9 运行断下,看堆栈窗口:
0012E9B8 77BFA85B /CALL 到 VirtualAlloc 来自 msvcrt.77BFA855
0012E9BC 00000000 |Address = NULL
0012E9C0 00100000 |Size = 100000 (1048576.)
0012E9C4 00002000 |AllocationType = MEM_RESERVE
0012E9C8 00000004 \Protect = PAGE_READWRITE
0012E9A4 77BFA8ED /CALL 到 VirtualAlloc 来自 msvcrt.77BFA8E7
0012E9A8 00900000 |Address = 00900000
0012E9AC 00008000 |Size = 8000 (32768.)
0012E9B0 00001000 |AllocationType = MEM_COMMIT
0012E9B4 00000004 \Protect = PAGE_READWRITE
0012F858 66001D1B /CALL 到 VirtualAlloc 来自 MSVBVM60.66001D19
0012F85C 00000000 |Address = NULL
0012F860 00400000 |Size = 400000 (4194304.)
0012F864 00002000 |AllocationType = MEM_RESERVE
0012F868 00000004 \Protect = PAGE_READWRITE
按F9经过4次中断后堆栈窗口如下:
0012F858 66001D34 /CALL 到 VirtualAlloc 来自 MSVBVM60.66001D32
0012F85C 00A00000 |Address = 00A00000
0012F860 00010000 |Size = 10000 (65536.)
0012F864 00001000 |AllocationType = MEM_COMMIT
0012F868 00000004 \Protect = PAGE_READWRITE
这时取消断点,ALT+F9 返回,来到这里:
00414BCD 93 XCHG EAX,EBX ; WinInnoU.00414BFC
00414BCE AC LODS BYTE PTR DS:[ESI]
00414BCF 84C0 TEST AL,AL
00414BD1 ^ 75 FB JNZ SHORT WinInnoU.00414BCE
00414BD3 3806 CMP BYTE PTR DS:[ESI],AL
00414BD5 ^ 74 EA JE SHORT WinInnoU.00414BC1
00414BD7 8BC6 MOV EAX,ESI
00414BD9 79 05 JNS SHORT WinInnoU.00414BE0
00414BDB 46 INC ESI
00414BDC 33C0 XOR EAX,EAX
00414BDE 66:AD LODS WORD PTR DS:[ESI]
00414BE0 50 PUSH EAX
00414BE1 53 PUSH EBX
00414BE2 FFD5 CALL EBP
00414BE4 AB STOS DWORD PTR ES:[EDI]
00414BE5 ^ EB E7 JMP SHORT WinInnoU.00414BCE
00414BE7 C3 RETN ; 返回到程序入口点
把光标停在00414BE7这一行上,按F4运行到这一行,再按F8到达程序OEP:
00401504 68 C42E4000 PUSH WinInnoU.00402EC4 ; ASCII "VB5!6&vb6chs.dll"
00401509 E8 F0FFFFFF CALL WinInnoU.004014FE ; JMP 到 MSVBVM60.ThunRTMain
0040150E 0000 ADD BYTE PTR DS:[EAX],AL
00401510 0000 ADD BYTE PTR DS:[EAX],AL
00401512 0000 ADD BYTE PTR DS:[EAX],AL
00401514 3000 XOR BYTE PTR DS:[EAX],AL
00401516 0000 ADD BYTE PTR DS:[EAX],AL
这时用LordPE完全转存这个进程,另存为dumped.exe。现在关掉OD,运行原程序,在ImportREC中填入OEP:00001504,选自动查找IAT,再点获取输入表,没有错误。修复一下脱壳的文件dumped.exe,运行一下,一切OK!再用PEiD检测一下,显示是Microsoft Visual Basic 5.0 / 6.0。稍作优化,脱壳后大小为108 KB。
后来发现PEiD可以找到真正入口点,这样就更简单了,用OD载入程序,CTRL+G填入入口点地址,到达后按F4就可停于程序的真正入口点。
到此脱壳完成,只是我不知道这到底是什么壳,请知道的兄弟告知一下。非常感谢!
原程序包在此:
附件:wininnounp.v0.17a.rar
脱壳后文件在此:
附件:dumped.rar
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课