衡水信远 發表於 2008-10-8 19:04:25

手动脱壳入门第十八篇 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 -&gt; Virogen<br />

【保护方式】 PC Shrinker压缩壳<br />

【脱壳声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:)<br />

-------------------------------------------------------------------------------- <br />

【脱壳内容】 <br />

这个程序的压缩选项是非常丰富的,从界面中也没有加密选项,无效隐藏OD和设置异常。<br />

先看看它加壳的记事本<br />

本地下载<br />

NOTEPAD.rar<br />

首先Peid查壳,为PC Shrinker 0.71 -&gt; Virogen,OD载入运行,无任何异常,判断其为压缩壳。<br />

0040AAFB &gt;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&gt;<br />

0040AB31    5F            POP EDI<br />

0040AB32    FFE7            JMP EDI<br />

..................................................<br />

命令行 dd 12ffa0<br />

下硬件访问-Dword断点。<br />

F9运行<br />

硬件中断。<br />

标签1<br />

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★<br />

0040AAFB &gt;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,点&ldquo;Get Import&rdquo;,函数都是有效的。FixDump,正常运行,记事本脱壳完毕。<br />

脱壳主程序<br />

继续OD载入它的主程序。<br />

004066F8 &gt;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&gt;<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]
查看完整版本: 手动脱壳入门第十八篇 PC Shrinker 0.71