当前位置: 移动技术网 > 网络运营>安全>加解密 > 手动脱壳入门第十八篇 PC Shrinker 0.71

手动脱壳入门第十八篇 PC Shrinker 0.71

2019年05月25日  | 移动技术网网络运营  | 我要评论
【脱文标题】 手动脱壳入门第十八篇 pc shrinker 0.71
【脱文作者】 weiyi75[dfcg]
【作者邮箱】 weiyi75@sohu.com
【作者主页】 dfcg官方大本营
【使用工具】 peid,ollydbg,importrec
【脱壳平台】 win2k/xp
【软件名称】 pcshrink.exe
【软件简介】 phrozen crew pe shrinker is an windows 9x/nt executable file compressor, allowing compressed executables to run, functionally,the same as always, but occupy a significantly less amount of disk space.
【软件大小】 15 kb
【下载地址】 本地下载
pc shrinker 0.71.rar
【加壳方式】 pc shrinker 0.71 -> virogen
【保护方式】 pc shrinker压缩壳
【脱壳声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:)
--------------------------------------------------------------------------------
【脱壳内容】
这个程序的压缩选项是非常丰富的,从界面中也没有加密选项,无效隐藏od和设置异常。
先看看它加壳的记事本
本地下载
notepad.rar
首先peid查壳,为pc shrinker 0.71 -> virogen,od载入运行,无任何异常,判断其为压缩壳。
0040aafb > 9c pushfd //记事本外壳入口。
0040aafc 60 pushad //仍然是esp定律
0040aafd bd b7710000 mov ebp,71b7 //这里的esp为12ffa0
0040ab02 01ad 543a4000 add dword ptr ss:[ebp 403a54],ebp
0040ab08 ffb5 503a4000 push dword ptr ss:[ebp 403a50]
0040ab0e 6a 40 push 40
0040ab10 ff95 883a4000 call dword ptr ss:[ebp 403a88]
0040ab16 50 push eax
0040ab17 50 push eax
0040ab18 2d 7d394000 sub eax,notepad.0040397d
0040ab1d 8985 7e394000 mov dword ptr ss:[ebp 40397e],eax
0040ab23 5f pop edi
0040ab24 8db5 7d394000 lea esi,dword ptr ss:[ebp 40397d]
0040ab2a b9 fc000000 mov ecx,0fc
0040ab2f f3:a5 rep movs dword ptr es:[edi],dword ptr ds>
0040ab31 5f pop edi
0040ab32 ffe7 jmp edi
..................................................
命令行 dd 12ffa0
下硬件访问-dword断点。
f9运行
硬件中断。
标签1
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
0040aafb > 9c pushfd //记事本外壳入口。
0040aafc 60 pushad //
解压缩过程,就是我们以前慢慢跟踪的一下循环圈。
00132dc6 61 popad //堆栈平衡,完全工整对应。
00132dc7 9d popfd //这里是出口,我们断在这里。
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
00132dc6 61 popad
00132dc7 9d popfd //这里是出口,我们断在这里。转标签1看看
00132dc8 ba cc104000 mov edx,4010cc
00132dcd ffe2 jmp edx //edx=4010cc,这个是地球人都只道的记事本的oep
004010cc 55 push ebp //在这里用loadpe直接脱壳
004010cd 8bec mov ebp,esp
004010cf 83ec 44 sub esp,44
004010d2 56 push esi //我们看到加密表没有破坏,往下看到kernel32.getcommandlinea
004010d3 ff15 e4634000 call dword ptr ds:[4063e4] ; kernel32.getcommandlinea
004010d9 8bf0 mov esi,eax
004010db 8a00 mov al,byte ptr ds:[eax]
004010dd 3c 22 cmp al,22
004010df 75 1b jnz short notepad.004010fc
004010e1 56 push esi
004010e2 ff15 f4644000 call dword ptr ds:[4064f4] ; user32.charnexta
004010e8 8bf0 mov esi,eax
004010ea 8a00 mov al,byte ptr ds:[eax]
004010ec 84c0 test al,al
004010ee 74 04 je short notepad.004010f4
004010f0 3c 22 cmp al,22
004010f2 ^ 75 ed jnz short notepad.004010e1
...........................................................
运行importrec,选择这个进程。把oep改为000010cc,点it autosearch,点“get import”,函数都是有效的。fixdump,正常运行,记事本脱壳完毕。
脱壳主程序
继续od载入它的主程序。
004066f8 > 9c pushfd //主程序外壳入口。
004066f9 60 pushad //从这这句过后用esp定律吧,
004066fa bd b42d0000 mov ebp,2db4 //到这里esp=19ffa0
004066ff 01ad 543a4000 add dword ptr ss:[ebp 403a54],ebp
00406705 ffb5 503a4000 push dword ptr ss:[ebp 403a50]
0040670b 6a 40 push 40
0040670d ff95 883a4000 call dword ptr ss:[ebp 403a88]
00406713 50 push eax
00406714 50 push eax
00406715 2d 7d394000 sub eax,pcshrink.0040397d
0040671a 8985 7e394000 mov dword ptr ss:[ebp 40397e],eax
00406720 5f pop edi
00406721 8db5 7d394000 lea esi,dword ptr ss:[ebp 40397d]
00406727 b9 fc000000 mov ecx,0fc
0040672c f3:a5 rep movs dword ptr es:[edi],dword ptr ds>
0040672e 5f pop edi
0040672f ffe7 jmp edi
................................................................................
dd 19ffa0
下硬件访问-dword断点。
f9运行
硬件中断。
001a2dd6 61 popad
001a2dd7 9d popfd //堆栈平衡
001a2dd8 ba 00104000 mov edx,401000
001a2ddd ffe2 jmp edx //edx=401000是主程序的oep
00401000 e8 db e8 //这种情况大家应该见多了,点右键-分析-清除分析。
00401001 05 db 05
00401002 16 db 16
00401003 00 db 00
00401004 00 db 00
00401005 a3 db a3
00401006 df db df
00401007 37 db 37 ; char '7'
00401008 40 db 40 ; char '@'
00401009 00 db 00
0040100a e8 db e8
0040100b bf db bf
0040100c 15 db 15

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网