此文动画教程http://cnxhacker.net/download/show/663.html
简介:
Petite2.2具有10级的压缩级别,可以同时压缩 PE 文件的输入/输出表,去除重定位表,并且加上检测病毒的功能,即可以用来给 PE 文件减肥,也可以用来保护自己的程序。评价:压缩级别选9级很费时间,压缩比同Upx和Aspack差不多,优点是具备病毒检测功能,病毒修改未脱壳后会有发现病毒警告,使用了结构化异常处理SEH反跟踪调试,正常运行时没影响。属入门级加密壳,关于SEH知识参考相关文章,本论坛有两篇简介。
软件截图
下载地址
本地下载
Petite2.2.rar
脱壳目标,Petite2.2加壳Win98的记事本。
下载地址
本地下载
Notepad.rar
软件后用Fi测Notepad.exe的壳为PEtite 2.2 -> Ian Luck
手动脱壳建议大家用Ollydbg,工作平台Win2000,WinXp,Win9x不推荐。
手动脱壳时,用Olldbg载入程序,脱壳程序里面会有有好多循环。对付循环时,只能让程序往前运行,基本不能让它往回跳,要想法跳出循环圈。不要用Peid查入口,单步跟踪,提高手动找入口能力。
从本文开始,我们把Od中的选项-调试选项-异常选项卡中
除了忽略在KERNEL32 中的内存访问异常打勾,其余一个勾都不打,请检查自己的Od设置。
用OD载入程序后。
确定一个入口警告,Od提示程序加壳,选不继续分析。
0040D042 > B8 00D04000 mov eax, Notepad.0040D000 中断在这里。
0040D047 68 4C584000 push Notepad.0040584C 填充ERR结构的Hander,当发生异常时系统会自动调用这里。
0040D04C 64:FF35 0000000>push dword ptr fs:[0] 填充ERR结构的Prev
0040D053 64:8925 0000000>mov dword ptr fs:[0], esp 建立SEH链,呵,异常后就会到40584C处的代码继续运行。
0040D05A 66:9C pushfw 关键字1
0040D05C 60 pushad 关键字2
0040D05D 50 push eax
0040D05E 68 00004000 push Notepad.00400000
0040D063 8B3C24 mov edi, dword ptr ss:[esp]
0040D066 8B30 mov esi, dword ptr ds:[eax]
0040D068 66:81C7 8007 add di, 780
0040D06D 8D7406 08 lea esi, dword ptr ds:[esi+eax+8]
0040D071 8938 mov dword ptr ds:[eax], edi
0040D073 8B5E 10 mov ebx, dword ptr ds:[esi+10]
0040D076 50 push eax
0040D077 56 push esi
0040D078 6A 02 push 2
0040D07A 68 80080000 push 880
0040D07F 57 push edi
0040D080 6A 12 push 12
0040D082 6A 06 push 6
0040D084 56 push esi
0040D085 6A 04 push 4
.....................................................
0040D0AB 8B0A mov ecx, dword ptr ds:[edx]
0040D0AD 0FBAF1 1F btr ecx, 1F
0040D0B1 73 16 jnb short Notepad.0040D0C9
0040D0B3 8B0424 mov eax, dword ptr ss:[esp]
0040D0B6 FD std
0040D0B7 8BF0 mov esi, eax
0040D0B9 8BF8 mov edi, eax
0040D0BB 0372 04 add esi, dword ptr ds:[edx+4]
0040D0BE 037A 08 add edi, dword ptr ds:[edx+8]
0040D0C1 F3:A5 rep movs dword ptr es:[edi], dword ptr d>
0040D0C3 83C2 0C add edx, 0C
0040D0C6 FC cld
0040D0C7 ^ EB E2 jmp short Notepad.0040D0AB 循环。
0040D0C9 83C2 10 add edx, 10 F4到这里。
0040D0CC 8B5A F4 mov ebx, dword ptr ds:[edx-C]
0040D0CF 85DB test ebx, ebx
0040D0D1 ^\74 D8 je short Notepad.0040D0AB
0040D0D3 8B0424 mov eax, dword ptr ss:[esp]
0040D0D6 8B7A F8 mov edi, dword ptr ds:[edx-8]
0040D0D9 03F8 add edi, eax
0040D0DB 52 push edx
0040D0DC 8D3401 lea esi, dword ptr ds:[ecx+eax]
0040D0DF EB 17 jmp short Notepad.0040D0F8 跳。
0040D0F8 81FB 00000100 cmp ebx, 10000 到这里。
0040D0FE 73 0E jnb short Notepad.0040D10E
0040D100 68 60C0FFFF push -3FA0
0040D105 68 60FCFFFF push -3A0
0040D10A B6 05 mov dh, 5
0040D10C EB 22 jmp short Notepad.0040D130 跳。
0040D130 6A 00 push 0 到这里。
0040D132 32D2 xor dl, dl
0040D134 4B dec ebx
0040D135 A4 movs byte ptr es:[edi], byte ptr ds:[esi>
0040D136 33C9 xor ecx, ecx
0040D138 83FB 00 cmp ebx, 0
0040D13B ^ 7E A4 jle short Notepad.0040D0E1
0040D13D E8 AAFFFFFF call Notepad.0040D0EC F8步过。
0040D142 72 17 jb short Notepad.0040D15B
0040D144 A4 movs byte ptr es:[edi], byte ptr ds:[esi>
0040D145 305F FF xor byte ptr ds:[edi-1], bl
0040D148 4B dec ebx
0040D149 ^ EB ED jmp short Notepad.0040D138 循环。
0040D14B 41 inc ecx F4到这里。
0040D14C E8 9BFFFFFF call Notepad.0040D0EC
0040D151 13C9 adc ecx, ecx
0040D153 E8 94FFFFFF call Notepad.0040D0EC
0040D158 ^ 72 F2 jb short Notepad.0040D14C
0040D15A C3 retn
0040D162 83E9 03 sub ecx, 3 到这里。
0040D165 73 06 jnb short Notepad.0040D16D 跳。
0040D16D 8BC1 mov eax, ecx 到这里。
0040D16F 0FB6CE movzx ecx, dh
0040D172 E8 75FFFFFF call Notepad.0040D0EC
0040D177 13C0 adc eax, eax
0040D179 49 dec ecx
0040D17A ^ 75 F6 jnz short Notepad.0040D172 循环。
0040D17C 83F0 FF xor eax, FFFFFFFF F4下来。
0040D17F 3B4424 04 cmp eax, dword ptr ss:[esp+4]
0040D183 83D5 01 adc ebp, 1
0040D186 3B4424 08 cmp eax, dword ptr ss:[esp+8]
.....................................................
0040D19E /75 08 jnz short Notepa
[1] [2] [3] [4] 下一页