首页
社区
课程
招聘
[原创]四种方法手脱PCSHRINK动画教学
发表于: 2005-5-15 11:19 3730

[原创]四种方法手脱PCSHRINK动画教学

2005-5-15 11:19
3730
大家好今天给大家讲的是《四种方法手脱PCSHRINK》,给大家一种思路而已。例子是PCSHRINK加壳的98记事本

首先查壳,PC Shrinker 0.29 - 0.71 -> Virogen

OD载入,隐藏插件。。。。

方法一:单步法(忽略所有异常),比较基础的方法~大家得掌握!

0040AC3B PCS>  9C              pushfd           //停在这里了,继续F8单步
0040AC3C       60              pushad
0040AC3D       BD FF720000     mov ebp,72FF
0040AC42       01AD 4C3A4000   add dword ptr ss:[ebp+403>
0040AC48       FFB5 483A4000   push dword ptr ss:[ebp+40>
0040AC4E       6A 40           push 40
0040AC50       FF95 803A4000   call dword ptr ss:[ebp+40>    //这里也是F8,不要用F7啦
0040AC56       50              push eax
0040AC57       50              push eax
0040AC58       2D 75394000     sub eax,PCSHRINK.00403975
0040AC5D       8985 76394000   mov dword ptr ss:[ebp+403>
0040AC63       5F              pop edi
0040AC64       8DB5 75394000   lea esi,dword ptr ss:[ebp>
0040AC6A       B9 FC000000     mov ecx,0FC
0040AC6F       F3:A5           rep movs dword ptr es:[ed>
0040AC71       5F              pop edi
0040AC72       FFE7            jmp edi          //跳转
。。。。。。。。。。
00142990       BD 1BF0D3FF     mov ebp,FFD3F01B //来到这,继续单步~
00142995       8BF7            mov esi,edi
00142997       81C6 60010000   add esi,160
0014299D       81C7 EC030000   add edi,3EC
001429A3       57              push edi
001429A4       56              push esi
001429A5       57              push edi

。。。。。。。。。。这种方法是蛮简单的。。。。。。。。。。详细见动画。。。。。。。

方法二:ESP定律脱壳(忽略所有异常)
0040AC3B PCS>  9C              pushfd       //停在这里啦~单步F8,
0040AC3C       60              pushad        //ESP突现,0012FFC0
0040AC3D       BD FF720000     mov ebp,72FF
0040AC42       01AD 4C3A4000   add dword ptr ss:[ebp+403>
0040AC48       FFB5 483A4000   push dword ptr ss:[ebp+40>
下命令行,hr 0012FFC0,回车,F9运行
77F69ECD       FF40 10         inc dword ptr ds:[eax+10]         //停在这了,提示有异常,记得取消硬件断点
77F69ED0       8B45 FC         mov eax,dword ptr ss:[ebp>
77F69ED3       83E0 01         and eax,1
我们Shift+F9过
00142BB0       BA CC104000     mov edx,4010CC     //来到这里了,继续单步
00142BB5       FFE2            jmp edx            //跳到了OEP
00142BB7       8BB5 593C4000   mov esi,dword ptr ss:[ebp>
。。。。。。。。。。。。。。。
004010CC       55              push ebp        //在这里dump就可以了
004010CD       8BEC            mov ebp,esp
004010CF       83EC 44         sub esp,44

方法三:模拟跟踪法(不忽略内存访问异常,因为在这样的配制下,一开始按下F9程序就运行的)
ALT+M,打开内存镜像
内存镜像,项目 15
地址=00407000
大小=0000B000 (45056.)
Owner=PCSHRINK 00400000
区段=pcs2
包含=SFX,imports,resources   //要的就是这个区段。。。。
类型=Imag 01001002
访问=R
初始访问=RWE
命令行下tc eip<00407000,回车。
00142990       BD 1BF0D3FF     mov ebp,FFD3F01B     //停在这里了,单步继续。
00142995       8BF7            mov esi,edi
00142997       81C6 60010000   add esi,160
0014299D       81C7 EC030000   add edi,3EC
001429A3       57              push edi
001429A4       56              push esi
。。。。。。。。。。
篇幅问题省略一些代码,使用单步或者如果遇到往回跳的时候F4,就可以了
。。。。。。。。。。
注意这里了
00142B6C       F3:AA           rep stos byte ptr es:[edi>   
00142B6E       5F              pop edi
00142B6F     ^ EB D2           jmp short 00142B43      //要往回跳
00142B71       E8 41000000     call 00142BB7           //F4在这里,F8单步,进入系统领空
00142B76       73 36           jnb short 00142BAE
00142B78       8D9D 3E3C4000   lea ebx,dword ptr ss:[ebp>
。。。。。。。。。。。。。。。。。
77F75DB0       8B1C24          mov ebx,dword ptr ss:[esp>  //来到这里,提示有异常。
77F75DB3       51              push ecx
77F75DB4       53              push ebx
77F75DB5       E8 BC1A0200     call ntdll.77F97876
shift+F9过
00142B76      /73 36           jnb short 00142BAE             //到这里了,跳
00142B78      |8D9D 3E3C4000   lea ebx,dword ptr ss:[ebp>
。。。。。。。。。。。。。。。。。。
00142BAE       61              popad              //跳到了这里,F8单步继续
00142BAF       9D              popfd
00142BB0       BA CC104000     mov edx,4010CC
00142BB5       FFE2            jmp edx        //跳到了OEP
00142BB7       8BB5 593C4000   mov esi,dword ptr ss:[ebp>

其实后面就和上种方法差不多了~~。。。。。。。

方法四:内存镜像法(忽略所有异常)
ALT+M打开内存镜像,找到第一个.rsrc
内存镜像,项目 19
地址=77EBA000
大小=0008E000 (581632.)
Owner=kernel32 77E40000
区段=.rsrc
包含=resources
类型=Imag 01001002
访问=R
初始访问=RWE

F2下断,F9运行

继续,ALT+M打开内存镜像,找到code段
内存镜像,项目 20
地址=00401000
大小=00006000 (24576.)
Owner=PCSHRINK 00400000
区段=pcs1
包含=code
类型=Imag 01001002
访问=R
初始访问=RWE

F2下断,Shift+F9运行
00142C0C       8B19            mov ebx,dword ptr ds:[ecx>  //来到这。继续单步
00142C0E       0BDB            or ebx,ebx
00142C10       74 2D           je short 00142C3F
00142C12       F7C3 00000080   test ebx,80000000
00142C18       75 04           jnz short 00142C1E
00142C1A       03DA            add ebx,edx
。。。。。。。。。。。。。
篇幅问题省略一些代码,使用单步或者如果遇到往回跳的时候F4,就可以了
。。。。。。。。。。。。。
00142B6E       5F              pop edi
00142B6F     ^ EB D2           jmp short 00142B43     //要回跳了
00142B71       E8 41000000     call 00142BB7       //F4
00142B76       73 36           jnb short 00142BAE
00142B78       8D9D 3E3C4000   lea ebx,dword ptr ss:[ebp>
00142B7E       53              push ebx
00142B7F       FF95 783A4000   call dword ptr ss:[ebp+40>
00142B85       0BC0            or eax,eax
00142B87       74 1D           je short 00142BA6
00142B89       8D9D 493C4000   lea ebx,dword ptr ss:[ebp>
00142B8F       53              push ebx
00142B90       50              push eax
00142B91       FF95 7C3A4000   call dword ptr ss:[ebp+40>
00142B97       8D9D 283C4000   lea ebx,dword ptr ss:[ebp>
00142B9D       6A 30           push 30
00142B9F       6A 00           push 0
00142BA1       53              push ebx
00142BA2       6A 00           push 0
00142BA4       FFD0            call eax
00142BA6       6A 00           push 0
00142BA8       FF95 843A4000   call dword ptr ss:[ebp+40>
00142BAE       61              popad
00142BAF       9D              popfd
00142BB0       BA CC104000     mov edx,4010CC
00142BB5       FFE2            jmp edx         //跳到OEP了~

--------------------------------------------------------------------------------------
由于本人使用的是XP SP1系统,所以在一些代码问题上显示的不一样,但是,方法是通用的。。大家可以试下

最后大家可以尝试下最后一次异常法~看能够不能够脱。。。。算是课后作业啦~~应该是没问题了~由于我
的时间有限~大家自己研究下

886

在这里下载,因为本人没地方放动画,所以只有放这里了。
http://www.chinadev.net/bbs/viewthread.php?tid=325&fpage=1
解压之后55M

-------------------------------------------------------------------------------------------
By wynney
Email:mcoffe@sina.com
我的小站
http://bbs.chinadev.net
欢迎大家来玩。。。天空发布区有每日动画更新

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 266
活跃值: (191)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
支持的说,写动画教程很辛苦的,呵呵
2005-5-15 12:40
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
3
辛苦
鼓励一下
2005-5-15 21:39
0
雪    币: 224
活跃值: (147)
能力值: ( LV9,RANK:970 )
在线值:
发帖
回帖
粉丝
4
呵呵~~好像每次老大都来了~~谢谢fly老大!
2005-5-16 00:35
0
游客
登录 | 注册 方可回帖
返回
//