首页
社区
课程
招聘
脱壳之未知加密壳
发表于: 2018-12-20 09:30 13866

脱壳之未知加密壳

2018-12-20 09:30
13866

拿到一个程序之后首先用PEID查看一下有什么有用的信息。

只能发现链接器版本是VC6.0。根据经验可以推论出此程序的OEP特征。
平衡堆栈的汇编代码:SUB  esp,0x58
第一个调用的函数是:GetVersion()

类似的程序特征如下图。



程序入口有标准的pushad/pushfd,使用ESP定律下硬件执行断点。

运行之后依次找到pushfd pushad之后,单步几下就会到达oep位置。





到达程序入口点,ctrl+A进行分析之后发现,第一个函数没有显示Getversion()。推测可能被加密了。


壳当中生成加密IAT的步骤是:
获取原始IAT的函数地址,并保存到一定位置。
申请空间,构造新的IAT函数。
原始函数地址填充代码段,构造新IAT函数代码进行加密。
将新构造的函数地址填充到IAT表。

跟进去这个地址查看一下,发现返回值弹出真正的函数地址。


设置硬件断点,重新运行程序。


断到壳代码中填充IAT表的地方。


写入IAT的地方是一个循环,包括获取原始函数地址,函数地址被拷贝到新的代码段中,然后将新的代码段地址写入IAT

首先在填充IAT处,下断点,ctrl+F11,进行run跟踪。


获取到原始函数地址。


继续往上查看EAX来自于哪。




将原始函数地址写入到代码段。


我们要做的任务就是把获取原始函数的地址填写到IAT中。
通过写脚本来运行。
//定义变量
VAR dwGetAPIAddr 
VAR dwSetIATAddr 
VAR dwOEP 
VAR dwTep

MOV dwGetIATAddr,001D0474    // 获取 API 地址的地方     
MOV dwSetIATAddr,001D0897  // 填充 IAT 的地方
MOV dwOEP, 0047148B            // OEP

//去除断点
BC
BPHWC
BPMC

// 设置断点
BPHWS dwOEP, "x"
BPHWS dwGetIATAddr,"x"
BPHWS dwSetIATAddr ,"x"



//构造循环
LOOP1:

RUN   //运行程序


//判断是否是获取API的地方
cmp eip, dwGetAPIAddr 
JNZ SIGN1

mov dwTep,eax          //将原始函数地址用一个临时变量保存
jmp LOOP1

//判断是否是填充API的地方
SIGN1:

cmp eip, dwSetIATAddr 
JNZ SIGN2

mov [edx],dwTep           //将原始函数地址写入IAT表
jmp LOOP1

//判断是否为OEP
SIGN2:
cmp eip, dwOEP          //到达OEP处退出
JZ EXIT

jmp LOOP1

//结束
EXIT:
MSG "IAT解密完成"

脚本运行成功界面


最后需要dump文件,修改输入表。


运行成功界面。





[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

上传的附件:
收藏
免费 8
支持
分享
最新回复 (15)
雪    币: 712
活跃值: (121)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
不错
2018-12-20 10:48
1
雪    币: 6048
活跃值: (3125)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
漂亮
2018-12-20 16:20
1
雪    币: 211
活跃值: (511)
能力值: ( LV9,RANK:172 )
在线值:
发帖
回帖
粉丝
4
https://www.cnblogs.com/KIDofot/p/8641380.html

run trace 来的太突然了。
最后于 2018-12-27 09:50 被vmtest编辑 ,原因:
2018-12-20 17:57
1
雪    币: 12502
活跃值: (3048)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
唯一吐槽的是,敢直接运行,不用虚拟机
2018-12-20 20:00
1
雪    币: 2089
活跃值: (3111)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
6
楼上的是怎么看出来他没在虚拟机里运行?
2018-12-21 10:49
1
雪    币: 1095
活跃值: (165)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
xiaohang 楼上的是怎么看出来他没在虚拟机里运行?
我猜他是猜的的?
2018-12-24 17:31
0
雪    币: 8084
活跃值: (1515)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
8
写得不错,谢谢分享
2018-12-26 19:21
0
雪    币: 3797
活跃值: (769)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
这篇文章对新手来说很是值得借鉴学习 谢谢楼主
2018-12-27 09:30
0
雪    币: 34
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
楼主很爱破解啊,我也挺喜欢的,可惜没有太多的时间去学习。希望相互学习学习
上传的附件:
2019-1-1 23:14
0
雪    币: 9934
活跃值: (2554)
能力值: ( LV6,RANK:87 )
在线值:
发帖
回帖
粉丝
11
点赞学习了
2019-1-13 11:14
1
雪    币: 1390
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
学习了
2019-1-17 16:31
1
雪    币: 5
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
13
厉害
2019-1-17 20:21
0
雪    币: 403
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
厉害了,大佬
2019-1-22 14:22
0
雪    币: 472
活跃值: (20)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
15
厉害了,大佬
2019-2-6 21:19
0
雪    币: 17
活跃值: (44)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
非常棒,谢谢大佬分享
2019-7-31 20:14
0
游客
登录 | 注册 方可回帖
返回
//