首页
社区
课程
招聘
[原创]菜鸟ESP定律秒脱nSPack 3.7
发表于: 2009-6-6 19:16 7507

[原创]菜鸟ESP定律秒脱nSPack 3.7

2009-6-6 19:16
7507
[软件信息]: **网络电视 2009
[加壳信息]: nSPack 3.7 -> North Star/Liu Xing Ping
[所需工具]: OD, PEid, LoadPE, Import REC

常规操作, 第一步, 查壳

PEid 查一下壳, 显示nSPack 3.7 -> North Star/Liu Xing Ping

也不知道这是什么壳, 没脱过,

第二步, OD载入, 断在这里

006596DC T>  9C               pushfd   //保存环境
006596DD     60               pushad  //再次保存环境
006596DE     E8 00000000      call TTVideo.006596E3
006596E3     5D               pop ebp
006596E4     83ED 07          sub ebp,7
006596E7     8D8D A0F9FFFF    lea ecx,dword ptr ss:[ebp-660]
006596ED     8039 01          cmp byte ptr ds:[ecx],1
006596F0     0F84 42020000    je TTVideo.00659938

看看上面, 有一个pushfd, 和一个pushad, 很明显进行了两次压栈操作, 我们打开记事本准备记录

按F8步过, 此时ESP变成了红色, 值为0012FFC0, 用记本事记来来, 待会要用到
按F8步过, 此时ESP的值变了, 值为0012FFA0, 记事本记来

开始使用ESP定律了, 输入hr 0012FFA0,  这个值就是上面记来的那个esp值了

F9运行, 断下了
0065994D     9D               popfd   //进行出栈操作
0065994E   - E9 55B5F4FF      jmp TTVideo.005A4EA8
00659953     8BB5 2CF9FFFF    mov esi,dword ptr ss:[ebp-6D4]
00659959     0BF6             or esi,esi
0065995B     0F84 97000000    je TTVideo.006599F8
00659961     8B95 34F9FFFF    mov edx,dword ptr ss:[ebp-6CC]

不管它, 再下个断点, hr 0012FFC0  刚用记事本记下了  
F9运行, 断下了
005A4EA8     55               push ebp
005A4EA9     8BEC             mov ebp,esp   //停在这里
005A4EAB     83C4 F0          add esp,-10
005A4EAE     53               push ebx
005A4EAF     56               push esi
005A4EB0     57               push edi
005A4EB1     B8 10375A00      mov eax,TTVideo.005A3710

看一下, 到入口点了, 入口点为005A4EA8 - 基址00400000 = 偏移地址001A4EA8

拿到入口点, 就dump吧, 打开LoadPE => 完整脱壳

打开Import REC 修复一下输入表
输入OEP为刚找到的地址001A4EA8, 自动查找IAT  -> 获取输入表
检查一下有没无效的函数, 全部有效, OK 转存

再用PE查一下, 显示为Borland Delphi 6.0 - 7.0
运行正常, 脱壳成功。

注一下, 根据堆栈后进先出的原理, 第一个pushfd, 第二个pushad

所在出栈的时候, 是第二个pushad先出栈, 然后第一个pushfd才出栈

这就是为什么第一个的ESP 为0012FFC0, 第二个ESP 为0012FFA0

我们要先设断第二个0012FFA0, 再设断第一个0012FFC0的原因。

   一起学习, 一起成长,  把你的每一点发现, 跟大家一起分享!

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

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 101
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
很简单脱的一个壳
2009-6-10 22:54
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
写的不错,,,,,,,,,,,,
2009-6-24 20:44
0
雪    币: 213
活跃值: (21)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
写得不错,也很详细,呵呵,学习。
2009-6-24 20:48
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
写得不错,也很详细,学习中
2009-6-24 23:42
0
雪    币: 872
活跃值: (165)
能力值: ( LV3,RANK:35 )
在线值:
发帖
回帖
粉丝
6
很详细,很好..
正好今天拿到一个练手的,也是这个壳
按LZ的方法,来做.
在下硬件断点的时候,断不来,
是何原因呢..程序直接运行起来了
2009-8-13 19:33
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
也很详细,学习
2009-8-13 22:51
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
写的不错哦 。。。
2009-8-17 13:28
0
游客
登录 | 注册 方可回帖
返回
//