手动脱壳入门第十八篇 PC Shrinker 0.71
【脱文标题】 手动脱壳入门第十八篇 PC Shrinker 0.71<br />【脱文作者】 weiyi75 <br />
【作者邮箱】 weiyi75@sohu.com <br />
【作者主页】 Dfcg官方大本营 <br />
【使用工具】 Peid,Ollydbg,ImportREC<br />
【脱壳平台】 Win2K/XP<br />
【软件名称】 Pcshrink.exe<br />
【软件简介】 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. <br />
【软件大小】 15 KB <br />
【下载地址】 本地下载<br />
PC Shrinker 0.71.rar<br />
【加壳方式】 PC Shrinker 0.71 -> Virogen<br />
【保护方式】 PC Shrinker压缩壳<br />
【脱壳声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:)<br />
-------------------------------------------------------------------------------- <br />
【脱壳内容】 <br />
这个程序的压缩选项是非常丰富的,从界面中也没有加密选项,无效隐藏OD和设置异常。<br />
先看看它加壳的记事本<br />
本地下载<br />
NOTEPAD.rar<br />
首先Peid查壳,为PC Shrinker 0.71 -> Virogen,OD载入运行,无任何异常,判断其为压缩壳。<br />
0040AAFB >9C PUSHFD //记事本外壳入口。<br />
0040AAFC 60 PUSHAD//仍然是ESP定律<br />
0040AAFD BD B7710000 MOV EBP,71B7//这里的ESP为12FFA0<br />
0040AB02 01AD 543A4000 ADD DWORD PTR SS:,EBP<br />
0040AB08 FFB5 503A4000 PUSH DWORD PTR SS:<br />
0040AB0E 6A 40 PUSH 40<br />
0040AB10 FF95 883A4000 CALL DWORD PTR SS:<br />
0040AB16 50 PUSH EAX<br />
0040AB17 50 PUSH EAX<br />
0040AB18 2D 7D394000 SUB EAX,NOTEPAD.0040397D<br />
0040AB1D 8985 7E394000 MOV DWORD PTR SS:,EAX<br />
0040AB23 5F POP EDI<br />
0040AB24 8DB5 7D394000 LEA ESI,DWORD PTR SS:<br />
0040AB2A B9 FC000000 MOV ECX,0FC<br />
0040AB2F F3:A5 REP MOVS DWORD PTR ES:,DWORD PTR DS><br />
0040AB31 5F POP EDI<br />
0040AB32 FFE7 JMP EDI<br />
..................................................<br />
命令行 dd 12ffa0<br />
下硬件访问-Dword断点。<br />
F9运行<br />
硬件中断。<br />
标签1<br />
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★<br />
0040AAFB >9C PUSHFD //记事本外壳入口。<br />
0040AAFC 60 PUSHAD//<br />
解压缩过程,就是我们以前慢慢跟踪的一下循环圈。<br />
00132DC6 61 POPAD //堆栈平衡,完全工整对应。<br />
00132DC7 9D POPFD//这里是出口,我们断在这里。<br />
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★<br />
00132DC6 61 POPAD<br />
00132DC7 9D POPFD//这里是出口,我们断在这里。转标签1看看<br />
00132DC8 BA CC104000 MOV EDX,4010CC<br />
00132DCD FFE2 JMP EDX//EDX=4010CC,这个是地球人都只道的记事本的OEP<br />
004010CC 55 PUSH EBP //在这里用Loadpe直接脱壳<br />
004010CD 8BEC MOV EBP,ESP<br />
004010CF 83EC 44 SUB ESP,44<br />
004010D2 56 PUSH ESI //我们看到加密表没有破坏,往下看到KERNEL32.GetCommandLineA<br />
004010D3 FF15 E4634000 CALL DWORD PTR DS: ; KERNEL32.GetCommandLineA<br />
004010D9 8BF0 MOV ESI,EAX<br />
004010DB 8A00 MOV AL,BYTE PTR DS:<br />
004010DD 3C 22 CMP AL,22<br />
004010DF 75 1B JNZ SHORT NOTEPAD.004010FC<br />
004010E1 56 PUSH ESI<br />
004010E2 FF15 F4644000 CALL DWORD PTR DS: ; USER32.CharNextA<br />
004010E8 8BF0 MOV ESI,EAX<br />
004010EA 8A00 MOV AL,BYTE PTR DS:<br />
004010EC 84C0 TEST AL,AL<br />
004010EE 74 04 JE SHORT NOTEPAD.004010F4<br />
004010F0 3C 22 CMP AL,22<br />
004010F2^ 75 ED JNZ SHORT NOTEPAD.004010E1<br />
...........................................................<br />
运行ImportREC,选择这个进程。把OEP改为000010cc,点IT AutoSearch,点“Get Import”,函数都是有效的。FixDump,正常运行,记事本脱壳完毕。<br />
脱壳主程序<br />
继续OD载入它的主程序。<br />
004066F8 >9C PUSHFD //主程序外壳入口。<br />
004066F9 60 PUSHAD//从这这句过后用ESP定律吧,<br />
004066FA BD B42D0000 MOV EBP,2DB4//到这里ESP=19ffa0<br />
004066FF 01AD 543A4000 ADD DWORD PTR SS:,EBP <br />
00406705 FFB5 503A4000 PUSH DWORD PTR SS:<br />
0040670B 6A 40 PUSH 40<br />
0040670D FF95 883A4000 CALL DWORD PTR SS:<br />
00406713 50 PUSH EAX<br />
00406714 50 PUSH EAX<br />
00406715 2D 7D394000 SUB EAX,PCSHRINK.0040397D<br />
0040671A 8985 7E394000 MOV DWORD PTR SS:,EAX<br />
00406720 5F POP EDI<br />
00406721 8DB5 7D394000 LEA ESI,DWORD PTR SS:<br />
00406727 B9 FC000000 MOV ECX,0FC<br />
0040672C F3:A5 REP MOVS DWORD PTR ES:,DWORD PTR DS><br />
0040672E 5F POP EDI<br />
0040672F FFE7 JMP EDI<br />
................................................................................<br />
dd 19ffa0<br />
下硬件访问-Dword断点。<br />
F9运行<br />
硬件中断。<br />
001A2DD6 61 POPAD<br />
001A2DD7 9D POPFD//堆栈平衡<br />
001A2DD8 BA 00104000 MOV EDX,401000<br />
001A2DDD FFE2 JMP EDX//EDX=401000是主程序的OEP<br />
00401000 E8 DB E8//这种情况大家应该见多了,点右键-分析-清除分析。<br />
00401001 05 DB 05<br />
00401002 16 DB 16<br />
00401003 00 DB 00<br />
00401004 00 DB 00<br />
00401005 A3 DB A3<br />
00401006 DF DB DF<br />
00401007 37 DB 37 ;CHAR '7'<br />
00401008 40 DB 40 ;CHAR '@'<br />
00401009 00 DB 00<br />
0040100A E8 DB E8<br />
0040100B BF DB BF<br />
0040100C 15 DB 15<br />
<br />
頁:
[1]