首页
社区
课程
招聘
[原创]菜鸟必看的破解文章(5)-脱壳篇-upx
发表于: 2005-3-16 23:01 4269

[原创]菜鸟必看的破解文章(5)-脱壳篇-upx

2005-3-16 23:01
4269
【破文作者】   小弟[RPCG]

【文章题目】   菜鸟必看的破解文章(5)-脱壳篇-upx

【软件名称】   crackme

【破解工具】   OllyDbg v1.10b

【破解平台】   XP SP2

----------------------------------------------------------------------------------------------
【文章简介】

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

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

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

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 229
活跃值: (70)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
---------------------------
" 本来早就想把这篇文章帖在论坛上,不过看了几遍,都认为很简单,就一直没有帖出.让网友看了看,说可以就鼓足勇气帖了出来,各位脱壳高手不要笑我 "
--------------------------
我不是高手,也没有笑话的意思,只是觉得这种贴子,很多教程上都有,确实没必要贴上来嘛。
2005-3-16 23:45
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
3
鼓励一下
有些东西自己做一次会了解的更多
2005-3-17 13:20
0
雪    币: 223
活跃值: (101)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
我晕
集体的步骤  我还是不怎么清楚
2005-3-17 13:31
0
雪    币: 217
活跃值: (81)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
使用高手总结的经验:对于UPX、ASPACK采用ESP定律直达。
谢谢高手们的毫无保留
2005-3-17 13:45
0
雪    币: 398
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
6
好文,正是我需要的
2005-3-17 19:42
0
游客
登录 | 注册 方可回帖
返回
//