首页
社区
课程
招聘
[原创]crackmegame游戏一下的[Overlay]脱壳步骤
发表于: 2008-1-21 18:46 10252

[原创]crackmegame游戏一下的[Overlay]脱壳步骤

2008-1-21 18:46
10252

【文章标题】: crackmegame游戏一下的[Overlay]脱壳步骤(初学脱壳请进)
【文章作者】: NBA2005
【作者邮箱】: STOCKFOX1699·126.COM
【软件名称】: crackmegame游戏一下 XINGCHAO
【下载地址】: http://webdisk.lbyc.cn/myfile/xingc119/Crackmegame/CREAKGAME.rar
【加壳方式】: UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo [Overlay]
【编写语言】: Microsoft Visual C++ 6.0 [Overlay]
【使用工具】: PEID、OLLYDBG、W32dasm8.93、Import Fix 1.6傲鳥修正版、WinHex_12.75_SR-6_HA
【操作平台】: WIN2000、XP
【软件介绍】: http://bbs.pediy.com/showthread.php?t=58118
【作者声明】: 看到许多人问,加上本人一向很懒,就弄个小题目写写。基本知识看http://www.pediy.com/bbshtml/bbs6/pediy6923.htm
--------------------------------------------------------------------------------
【详细过程】
  基本过程:
  脱壳 处理OverLay
  ESP定律+Cut OverLay+Paste OverLay
  为了便于分析,处理后的程序见附件。
  
  我只是具体步骤化。平台:【操作平台】: WIN2000
  
  
  1.PEID查壳。UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo [Overlay]。
  [Overlay]提示脱壳有难度。
  
  2.OLLYDBG手动脱壳。OLLYDBG载入Hackgbeta.exe:004AD1A0 >    60            pushad    典型的语句。
  老实的做法就是看跳转,然后按F4,直到POPAD+领空大跳转。
  快捷的做法就是右击--查找--所有命令--输入POPAD--
  找到的命令
  地址       反汇编                                    注释
  0041E3EC   popad
  0041EC3F   popad
  00420B2E   popad
  00421B1C   popad
  00421DAC   popad
  00423D54   popad
  004246D8   popad
  00425482   popad
  004260EB   popad
  00426832   popad
  0042826E   popad
  0042839E   popad
  00428761   popad
  00429F67   popad
  0042A076   popad
  0042BFA4   popad
  0042D7ED   popad
  0042E881   popad
  0042E9AA   popad
  0042F9CA   popad
  00430608   popad
  0043440E   popad
  0043473A   popad
  004357CB   popad
  00437A2F   popad
  0043A09F   popad
  0043ABD6   popad
  0043B7C3   popad
  0043D6F1   popad
  00442F5B   popad
  004430D7   popad
  00443ED4   popad
  004448B7   popad
  00444EFF   popad
  0044CAFA   popad
  00451C19   popad
  00456086   popad
  00456B36   popad
  00458441   popad
  00459AEE   popad
  0045AC8D   popad
  0045C0FC   popad
  0045C59C   popad
  0045E3A2   popad
  0045F4FF   popad
  00460792   popad
  00460F4D   popad
  004644A9   popad
  004658DD   popad
  004660D0   popad
  00466B6C   popad
  004675D9   popad
  0046790A   popad
  00469EA5   popad
  0046A82D   popad
  0046CD3C   popad
  0046D401   popad
  0046EE69   popad
  00472C60   popad
  00474037   popad
  00475B22   popad
  00476850   popad
  00478EB5   popad
  00479705   popad
  004797EF   popad
  0047B93C   popad
  004808F0   popad
  00480BE3   popad
  004818DC   popad
  00481B0B   popad
  004859FA   popad
  00485ABE   popad
  00487CD8   popad
  0048B83F   popad
  0048DBD3   popad
  0048E7F2   popad
  0049708F   popad
  00499884   popad
  0049B1E1   popad
  0049CBD8   popad
  0049E14E   popad
  0049EADE   popad
  004A27ED   popad
  004A36D3   popad
  004A5550   popad
  004A59ED   popad
  004A6376   popad
  004A7FD7   popad
  004AD07B   popad
  004AD1BD   inc     edi                               (初始 CPU 选择)
  004AD33D   popad
  在最后一个双击,
  004AD335   .  50            push    eax
  004AD336   .  54            push    esp
  004AD337   .  50            push    eax
  004AD338   .  53            push    ebx
  004AD339   .  57            push    edi
  004AD33A   .  FFD5          call    ebp
  004AD33C   .  58            pop     eax
  004AD33D   .  61            popad
  004AD33E   .  8D4424 80     lea     eax, dword ptr [esp-80]
  004AD342   >  6A 00         push    0
  004AD344   .  39C4          cmp     esp, eax
  004AD346   .^ 75 FA         jnz     short 004AD342
  004AD348   .  83EC 80       sub     esp, -80
  004AD34B   .- E9 4F65F5FF   jmp     0040389F
  
  看到了吧:    004AD33D   .  61            popad
  下面的大跳转:004AD34B   .- E9 4F65F5FF   jmp     0040389F
  
  记下OEP-- 0040389F,取389F。为什么?复习脱壳知识吧。
  来到原始程序领空:
  0040389F    55              push    ebp
  004038A0    8BEC            mov     ebp, esp
  004038A2    6A FF           push    -1
  004038A4    68 F8724000     push    004072F8
  004038A9    68 04554000     push    00405504
  004038AE    64:A1 00000000  mov     eax, dword ptr fs:[0]
  004038B4    50              push    eax
  004038B5    64:8925 0000000>mov     dword ptr fs:[0], esp
  004038BC    83EC 58         sub     esp, 58
  004038BF    53              push    ebx
  004038C0    56              push    esi
  
  在0040389F    55              push    ebp处选插件--OLLYDUMP-DUMP DEBUGGED PROGRESS
  点DUMP,保存为001Hackgbeta.exe。顺手点方式2保存为002Hackgbeta.exe,脱壳的习惯做法。
  
  3.W32dasm8.93确定最后区块的描述,即确定[Overlay]的起始位置。载入:
  Number of Objects = 0003 (dec), Imagebase = 00400000h
  
     Object01: CODE     RVA: 00001000 Offset: 00000400 Size: 00000000 Flags: 60000080
     Object02: DATA     RVA: 0001E000 Offset: 00000400 Size: 0008F400 Flags: E0000040
     Object03: .rsrc    RVA: 000AE000 Offset: 0008F800 Size: 00001400 Flags: C0000040
  
  
  +++++++++++++++++++ MENU INFORMATION ++++++++++++++++++
  Object03: .rsrc    RVA: 000AE000 Offset: 0008F800 Size: 00001400 Flags: C0000040是最后区块的信息。
  8F800+1400=90C00,就是[Overlay]的起始位置。
  4.Import Fix 1.6傲鳥修正版修复PE。
  双击Hackgbeta.exe。
  Import Fix 1.6傲鳥修正版打开运行,附加到一个活动进程--Hackgbeta.exe。
  OEP填389F,点自动查找ITA,点获取输入表,点修复转储文件,选001Hackgbeta.exe,保存成功。
  5.WinHex_12.75_SR-6_HA填加丢失的数据。
  打开Hackgbeta.exe--位置--转到偏移量--输入90C00--ALT+1--拉到最后--ALT+2---CTRL+C。
  打开001Hackgbeta_.exe--拉到最后---CTRL+V---保存。
  6.验证脱壳。双击001Hackgbeta_.exe,正常运行。
  
--------------------------------------------------------------------------------
【经验总结】
  其实许多人困惑的就是确定[Overlay]的起始位置。网上的相关文章难理解的地方在于:许多人把OLLYDBG中DUMP的虚拟区块
  的地址和数据区块的地址混淆了。
  自己的疑问:
  我脱壳后的文件与作者的文件大小有差异,如何产生?我是1691KB,作者的是1684KB。我怀疑和操作系统有关,所以我文章开头强调了系统。
  至于指针向前的例子不在本文讨论范围。
  
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2008年01月21日 下午 06:30:48


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 7
支持
分享
最新回复 (12)
雪    币: 485
活跃值: (12)
能力值: ( LV9,RANK:490 )
在线值:
发帖
回帖
粉丝
2
不错,学习了一下
2008-1-22 13:49
0
雪    币: 423
活跃值: (11)
能力值: ( LV9,RANK:230 )
在线值:
发帖
回帖
粉丝
3
已经验证了,我的疑问“脱壳后的文件与作者的文件大小不同”是由于操作系统的不同引起的。好象是在不同系统解压缩后的文件大小就不一样。
2008-1-23 08:06
0
雪    币: 485
活跃值: (12)
能力值: ( LV9,RANK:490 )
在线值:
发帖
回帖
粉丝
4
其实也可以这样,pushad 执行完后,hr esp,F9
程序断下后,OEP就近在眼前了
2008-1-23 09:30
0
雪    币: 423
活跃值: (11)
能力值: ( LV9,RANK:230 )
在线值:
发帖
回帖
粉丝
5
呵呵,你要求太高了,大虾。我的意思是将所有的步骤用简单的破解知识做出来,增强信心。
我本身也是个菜鸟,货真价实的菜鸟。菜鸟首要的要求就是先成功脱壳做出来,然后在灌输些相关理论知识。我也是看着看雪上诸多高手的附加数据相关文章成长过来的,在此感谢各位英雄好汉的无私爬格子。我写此文也是回报各位大虾的培养。大虾的招式往往神龙见首不见尾,经常轻描淡写的一句话,我们菜鸟往往回味好几天。其实我脱壳的重点是附加数据,我用最常用的W32DASM说明比较容易理解和使用。WINHEX的块复制的操作,各位大虾的文章里很少提及这种常识性的东西。我当初老实地按大虾吩咐,鼠标左键一拖到底,很麻烦,后来自己总结出来。我很佩服CCDEBUGER和Lenus,他们的许多细节讲得很到位,堪称经典的深入浅出。跑题了。

我就给大虾做个翻译吧:HR啥意思?Hr      addr             设置硬件访问断点
H
H       string           调用相关api函数string的帮助,前提是你已经选择了win32 sdk所在路径.
Hd      [addr]           删除硬件断点addr,没有写addr就调出硬件断点框
He      addr             设置硬件执行断点
Help    string           显示api函数string的帮助,如果没有string就显示cmdbar的帮助
Hr      addr             设置硬件访问断点
Hw      addr             设置硬件写断点

在命令行输入:hr esp 然后回车。
解释:ESP指向的是我们压入栈中的地址。ESP定律的原理就是“堆栈平衡”原理。根据ESP原理,我们知道多数壳在运行到OEP的时候ESP=0012FFC4(本程序是12FFA4,下面有)。这就是说程序的第一句是对0012FFC0进行写入操作!
  最后我们得到了广义的ESP定律,对只要在0012FFC0(ESP的具体化)下,硬件写入断点,我们就能停在OEP前面不远!!
注意点:
1.一定要F8运行过 PUSHAD,有时甚至要多运行几行或几十行指令后(防止OEP前含POPAD数据的加密,多运行几行或几十行指令的目的就是将OEP前含POPAD数据的加密进行解密,否则很容易迷失在多个PUSHAD、POPAD的壳中,瞎子点灯白费劲。),然后在命令行输入:hr esp 然后回车。因为PUSHAD后,ESP指向我们压入栈中的地址。

经验点滴1:第一或第二个PUSHAD很重要,不要偷懒直接HR ESP。这也是许多高手的盲区。

2。在F8运行过 PUSHAD后,看寄存器ESP值=12FFA4,也可以hr  12FFA4。同HR ESP效果是一样的。寄存器ESP值上右键选数据窗口中跟随,效果也是一样的。

经验点滴2:三种方法运用ESP定律脱壳。

3.用HR 设断脱壳成功后,记得HD回车,否则系统可能出错。
Hd      [addr]           删除硬件断点addr,没有写addr就调出硬件断点框。
2008-1-24 01:37
0
雪    币: 485
活跃值: (12)
能力值: ( LV9,RANK:490 )
在线值:
发帖
回帖
粉丝
6
你太谦虚了。
你学得很扎实,比我强多了。
向你学习。
2008-1-24 08:07
0
雪    币: 423
活跃值: (11)
能力值: ( LV9,RANK:230 )
在线值:
发帖
回帖
粉丝
7
感谢楼主的奖励。

我最近脱壳老是碰壁,激起了迎难而上的豪迈。

有些失败和成功的心得,想写下来。浏览了一下看学论坛上的相关文章,又觉得有拾人牙慧之嫌。

拟写一篇脱壳的细节的文章(似乎没人写过),记得前几天有位仁兄求助一个脱壳的问题,Import REC修复无效的,脱壳OD方式2成功的,感觉是个好例子。那位知道那个CRACK ME 在那下载?望给个链接
2008-1-28 14:24
0
雪    币: 485
活跃值: (12)
能力值: ( LV9,RANK:490 )
在线值:
发帖
回帖
粉丝
8
2008-1-29 15:04
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
问一下,那个Hackgbeta.exe第一关你们都是怎么过的呀?
我是先修改了Hackgbeta.exe的文件创建函数并且跳过了文件写入函数,然后又修改了krnln.fnr,跳过MessageBox
我怎么都觉得这样不够彻底,你们有什么好办法么?
2008-1-29 15:46
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
还没学到脱壳,看起来好高深,呵呵,补两天汇编再来。。。
2008-2-11 23:04
0
雪    币: 134
活跃值: (84)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
11
这贴都能加精?无语中。。。。
2008-2-12 13:08
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
第三关了
这个东东太麻烦了,有没有高手指点指点什么简单方法?
2008-2-12 21:14
0
雪    币: 88
活跃值: (25)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
13
黑客游戏1.31破解大赛正在进行中
为了提高大家玩黑客游戏的兴趣,为了让我们交到更多志同道合和朋友,从即日起,黑客游戏1.31破解大正式开始,只要你通关,并且把通关录象发至本人邮箱c_s_y@126.com,当中写上你的名字,邮箱,QQ,想说的话(50个字之内)以及来自何省何市发至本人,经本人确定,您的资料将会在此公布,(为了菜鸟学习,前8关尽量用本人的加密思想破解,不要用调试,查内存方法破解)大家多多努力,愿你们的大名出现在这里,时间从即日起至2008年8月31日.

黑客游戏1.31下载地址1 http://www.namipan.com/d/%E9%BB%91%E5%AE%A2%E6%B8%B8%E6%88%8F1.31.rar/824564103a2dedc1e65b93af2ea854cab0a65651a0e41300

黑客游戏1.31下载地址2 http://www.ccg.org.cn/bbs/viewthread.php?tid=575&extra=page%3D1

前几名的名单回进入黑客游戏的下一个版本,做的好的,奖励本软件10-500元广告费.

望大家多多努力,让更多人知道你的聪明才智.
2008-2-13 10:45
0
游客
登录 | 注册 方可回帖
返回
//