WPE|52wpe|我爱WPE

 找回密码
 注册会员
搜索
  • 3843查看
  • 6回复

主题

好友

604

积分

高级会员

发表于 2011-11-29 13:58:31 |显示全部楼层
----------------------------------------------------------------------------------------------
【文章简介】

呵呵,说实在的,脱壳文章真的很难写,因为我对脱壳的基本知识了解的并不多,现在只能依葫芦画瓢脱几个壳而已,而且还是压缩类的壳
所以这篇文章只能是写脱壳的过程了,可能很简单,因为是第一次写脱壳的文章,如果有什么不明白的第方,或希望在文章里增加一些知识点
请在下面帖出.第一篇就先写一个简单的upx壳吧.

这个壳现在使用的还是满多的,不过有的用UPX加壳的软件用脱壳机脱不下来,只能用手动脱壳来脱.

----------------------------------------------------------------------------------------------
【破解过程】
用OllyDbg载入后,点击否
00414850 j> 60 pushad<---大部分被加壳的程序第一条指令都是pushad
00414851 BE 00F04000 mov esi,j!m_kgm#.0040F000
.......
.......
00414866 90 nop
00414867 90 nop
00414868 8A06 mov al,byte ptr ds:[esi]<---------
0041486A 46 inc esi |
0041486B 8807 mov byte ptr ds:[edi],al |
0041486D 47 inc edi |
0041486E 01DB add ebx,ebx |
00414870 75 07 jnz short j!m_kgm#.00414879 |
00414872 8B1E mov ebx,dword ptr ds:[esi] |
00414874 83EE FC sub esi,-4 |
00414877 11DB adc ebx,ebx |
00414879 ^ 72 ED jb short j!m_kgm#.00414868<-------- 一个小循环
0041487B B8 01000000 mov eax,1<---使光标移到这一行,然后按F4(F4的作用是让程序运行到光标处,这里是一个循环,所以用F4来跳出循环)
00414880 01DB add ebx,ebx
00414882 75 07 jnz short j!m_kgm#.0041488B
00414884 8B1E mov ebx,dword ptr ds:[esi]
00414886 83EE FC sub esi,-4
00414889 11DB adc ebx,ebx
0041488B 11C0 adc eax,eax
0041488D 01DB add ebx,ebx
.......
.......
00414987 FF96 98400100 call dword ptr ds:[esi+14098]
0041498D 09C0 or eax,eax
0041498F 74 07 je short j!m_kgm#.00414998
00414991 8903 mov dword ptr ds:[ebx],eax
00414993 83C3 04 add ebx,4
00414996 ^ EB E1 jmp short j!m_kgm#.00414979<---这是一个循环,你可以在0041499E处按F4
00414998 FF96 9C400100 call dword ptr ds:[esi+1409C]<---执行到这里时程序会执行,所以不要在这里下断点或按F4
0041499E 61 popad<---运行到这里后用F8来单步执行
0041499F - E9 5CC6FEFF jmp j!m_kgm#.00401000<---这里跳到入口点<---其实不用这么麻烦,在这里按F4,再按F8,用插件ollydump出程序
就可以了


----------------------------------------------------------------------------------------------
【破解心得】
不少脱壳的教程都说壳和程序有很明显的界限,但是大部分菜鸟好像并不了解界限是什么,其实这个界限是程序外面的壳对程序解密完毕,跳转到
程序的入口点(oep),就是跳转到真正程序那里.
据个例子
程序加壳时
500000(内存地址):外壳解压缩程序
5*****:外壳解压缩程序的代码
510000:解压完毕,跳转到解压后程序的地址
..........
400000:程序解压后所放到内存的地方<---程序的入口点,因为程序已经全部解密完毕,所以现在的内存里的程序就是真正的程序,把它用工具取出就是程序了
******:程序代码.(自己认为是这样,如果不对,请高手指点)
用这个程序举例
0041C9BE 61 popad<--- 一般的程序入口点都在popad旁边
0041C9BF - E9 C0CAFEFF jmp keyge456.00409484<---看到0041C9BF和00409484了么,这个跳转很,而且这个跳转到的地方还是在这个
内存范围之外,就可以判断出是程序的oep了(多数壳壳可以这样判断)

UPX壳脱起来很简单,看见跳到上面的跳转,找到跳转的下一行按F4来跳出循环.一点一点直到到popad指令的下面的jmp.

其实脱壳应该挪到前面学,因为不脱壳,程序就很难破解,所以大家应多多练习脱壳
这里留一个作业,就是自己手脱aspack的壳,试一试,下篇文章我就会讲aspack的脱壳方法.
----------------------------------------------------------------------------------------------
【破解声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:)

【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
----------------------------------------------------------------------------------------------
文章写于2005-01-05 00:00:00

本来早就想把这篇文章帖在论坛上,不过看了几遍,都认为很简单,就一直没有帖出.让网友看了看,说可以就鼓足勇气帖了出来,各位脱壳高手不要笑我

主题

好友

3194

积分

论坛元老

发表于 2011-11-29 19:59:45 |显示全部楼层
楼主这是你写得  ??????????????????????
回复

使用道具 举报

主题

好友

24

积分

新手上路

发表于 2011-12-29 18:43:05 |显示全部楼层
这都是05年的文章了,看过了,转载。
回复

使用道具 举报

主题

好友

162

积分

注册会员

发表于 2012-1-1 21:27:35 |显示全部楼层
看看,学习学习
回复

使用道具 举报

主题

好友

22

积分

新手上路

发表于 2012-7-13 13:09:34 |显示全部楼层
路过学知识
回复

使用道具 举报

主题

好友

3712

积分

论坛元老

发表于 2013-1-6 11:54:57 |显示全部楼层
楼主这是你写得,我估计是复制粘贴的吧
回复

使用道具 举报

主题

好友

8

积分

新手上路

发表于 2013-2-16 13:00:27 |显示全部楼层
我根本就什么都不明白
回复

使用道具 举报

快速发帖

您需要登录后才可以回帖 登录 | 注册会员

手机版|Archiver|WPE|52wpe|我爱WPE ( 闽ICP备15009081号 )

GMT+8, 2024-5-4 08:11 , Processed in 0.058379 second(s), 17 queries .

返回顶部