找回密码
 注册
搜索
热搜: 回贴

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

2010-1-30 18:24| 发布者: admin| 查看: 83| 评论: 0|原作者: 青鸾峰


手动脱壳入门第十八篇 PC Shrinker 0.71,手动脱壳,脱壳技术
2008年06月23日 星期一 下午 07:27
手动脱壳入门第十八篇 PC Shrinker 0.71



【脱文标题】 手动脱壳入门第十八篇 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 -> Virogen



【保护方式】 PC Shrinker压缩壳



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



--------------------------------------------------------------------------------



【脱壳内容】



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



先看看它加壳的记事本



本地下载



首先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

0040100D 00 DB 00

0040100E 00 DB 00

0040100F 0B DB 0B

00401010 C0 DB C0

...................................................................



00401000 E8 05160000 CALL PCSHRINK.0040260A //从文件大小也知道是汇编语言写的壳,Loadpe脱壳吧

00401005 A3 DF374000 MOV DWORD PTR DS:[4037DF],EAX

0040100A E8 BF150000 CALL PCSHRINK.004025CE ; JMP to KERNEL32.GetCommandLineA

0040100F 0BC0 OR EAX,EAX

00401011 74 39 JE SHORT PCSHRINK.0040104C

00401013 96 XCHG EAX,ESI

00401014 803E 00 CMP BYTE PTR DS:[ESI],0

00401017 74 33 JE SHORT PCSHRINK.0040104C

00401019 C1E0 08 SHL EAX,8

0040101C AC LODS BYTE PTR DS:[ESI]

0040101D 3D 6B6E6972 CMP EAX,72696E6B

00401022 75 05 JNZ SHORT PCSHRINK.00401029

00401024 803E 2E CMP BYTE PTR DS:[ESI],2E

00401027 75 0E JNZ SHORT PCSHRINK.00401037

00401029 3D 6578652E CMP EAX,2E657865

0040102E 74 07 JE SHORT PCSHRINK.00401037

...................................................................



运行ImportREC,选择这个进程。把OEP改为00001000,点IT AutoSearch,点“Get Import”,函数都是有效的。FixDump,正常运行。


最新评论

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-29 19:16 , Processed in 0.449210 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

返回顶部