首页
社区
课程
招聘
[讨论]eXcalibur V1.03通用脱壳方法
发表于: 2008-7-30 23:15 8104

[讨论]eXcalibur V1.03通用脱壳方法

2008-7-30 23:15
8104

【文章标题】: eXcalibur V1.03通用脱壳方法
【文章作者】: ayarei
【下载地址】: 自己搜索下载
【使用工具】: ollyice
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  天某群里有人问到eXcalibur V1.03的脱壳问题。因为很久没有脱过这个壳了,不过记得脱起来还是比较简单的一个壳。这个壳算是取当时众家之长逆向出来的,另外背景音乐是仙剑3的《望海潮》,都是比较好玩的东西。(不过那时候的壳现在看来难度都是很低的,就是有些比较复杂,比如SVK那个需要修很长时间stolen code)正好很久没有使用过调试工具了,也算是复习一下吧,不过感觉手生了很多,od都不会使了,哈哈。另外考虑到通用性原因,很多地方都不是下断中断,因为由于选择项导致部分代码可能并不执行。
  
  Ollydbg载入某VC加壳程序,HideOD插件隐藏一下ollydbg:

  00405000 > /E9 00000000     jmp     00405005
  003D021B    8985 A4394000   mov     dword ptr [ebp+4039A4], eax
  003D0221    E8 0D000000     call    003D0233
  003D0226    45              inc     ebp
  003D0227    6E              outs    dx, byte ptr es:[edi]
  003D0228    61              popad
  003D0229    626C65 57       bound   ebp, qword ptr [ebp+57]
  003D022D    696E 64 6F77005>imul    ebp, dword ptr [esi+64], 5600776>
  003D0234    FFD7            call    edi
  003D0236    8985 94394000   mov     dword ptr [ebp+403994], eax
  003D023C    6A 00           push    0           //这里改成push   1
  003D023E    FFB5 A4394000   push    dword ptr [ebp+4039A4]
  003D0244    FFD0            call    eax
  003D02EB    FF15 12544000   call    dword ptr [<&KERNEL32.VirtualAll>; kernel32.VirtualAlloc
  003D02F1    FC              cld
  003D02F2    8BF8            mov     edi, eax
  003D02F4    8BB5 3C374000   mov     esi, dword ptr [ebp+40373C]
  003D02FA    46              inc     esi
  003D02FB    B9 10000000     mov     ecx, 10
  003D0300    E8 5E000000     call    003D0363        //找到这里
  003D0305    85C0            test    eax, eax
  003D0307    74 07           je      short 003D0310 //改成jmp short 003D0310
  003D0309    E8 08000000     call    003D0316        //这里处理Stolen Call
  003D030E  ^ E2 F0           loopd   short 003D0300
  003D0310    61              popad
  003D0311    E9 BE000000     jmp     003D03D4
  003D03E4    6A 00           push    0
  003D03E6    6A 00           push    0
  003D03E8    6A 11           push    11
  003D03EA    50              push    eax
  003D03EB    FFD7            call    edi     //这里nop掉
  003D03ED    BE A8250000     mov     esi, 25A8
  003D03F2    85F6            test    esi, esi
  003D03F4    0F84 CA050000   je      003D09C4   //到003D09C4上下个断
  003D0975    61              popad
  003D0976    3385 E0394000   xor     eax, dword ptr [ebp+4039E0]
  003D097C    8907            mov     dword ptr [edi], eax    //这三句指令要修改
  003D097E    8385 E4394000 0>add     dword ptr [ebp+4039E4], 4  
  003D0985    61              popad

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 7
支持
分享
最新回复 (6)
雪    币: 317
活跃值: (93)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
2
好文采学习下,马上去找个一样的壳练习下!
这个壳两此内存法就可以到啦!还是直接停在了OEP上,呵呵,不过楼主分析真详细
2008-7-31 00:25
0
雪    币: 216
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
如果内存段映像下断的话,假如IAT加密和Stolen Call还是要处理的。不过加密强度低的就不会存在这样的问题了
2008-7-31 07:45
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
2次内存能脱掉,但是出现楼主所说的问题了,我菜,不知道怎么解决。
但是楼主的断点,断不下来,直接运行了
2008-8-25 15:59
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
5
让forgot给你重新写个
2008-8-25 16:51
0
雪    币: 740
活跃值: (952)
能力值: ( LV9,RANK:160 )
在线值:
发帖
回帖
粉丝
6
那就不好玩了,呵呵
老版本的SEH中有+e8,很好判断。新版本没样本,准备最近找找
2008-8-27 19:56
0
雪    币: 200
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
最近碰到这个壳,BP GetForegroundWindow无法下断,不知道是什么原因
2009-5-24 02:28
0
游客
登录 | 注册 方可回帖
返回
//