首页
社区
课程
招聘
[原创]ollvm字符混淆修复
2019-1-22 14:47 9415

[原创]ollvm字符混淆修复

2019-1-22 14:47
9415

字符混淆可以有效的增加静态分析难度,比较常用的上海交大GoSSIP小组开源的“孤挺花”,基于ollvm。解密过程在initArray里,而且是直接解到原来的.data段区,所以要恢复起来也相对简单。

 

如下图.datadiv_decodexxx比函数全是孤挺花的解密函数
图片描述
也就是说在so加载完后字字符串是会被恢复的,而且这里的加密是等长的,直接恢复到原来的表里,相当于直接恢复了这个字符串表,方便我们把这个表直接恢复到so文件里。

readelf -S libxxxxx.so

图片描述
被加密过的字符表在文件中的位置和大小0x7f0000,0x1ca8
图片描述
映射在内存里的地方
图片描述
挂上gdb,把这段内存dump出来
图片描述
dump后的数据,这里取0x1ca8个字节,直接放回文件的.data段,ida加起来,可以正常看到字符串了,引用也正常解析,发现还有一段偏移被初始化为实际虚拟地址了,要还原一下
图片描述
可以看到这个偏移紧挨在字符表上面
图片描述
用beyond比较恢复一下就好了
图片描述
恢复后so静态分析效果对字符串识别正常,效果
图片描述
当然,要正常运行还得去掉initArray


[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

最后于 2019-1-22 15:56 被einsteinzl编辑 ,原因:
收藏
点赞5
打赏
分享
打赏 + 2.00雪花
打赏次数 1 雪花 + 2.00
 
赞赏  junkboy   +2.00 2019/01/22
最新回复 (10)
雪    币: 11716
活跃值: (133)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
junkboy 2019-1-22 14:57
2
1
支持
雪    币: 19586
活跃值: (60178)
能力值: (RANK:125 )
在线值:
发帖
回帖
粉丝
Editor 2019-1-22 15:45
3
1
感谢分享!
雪    币: 3907
活跃值: (5742)
能力值: ( LV12,RANK:200 )
在线值:
发帖
回帖
粉丝
roysue 3 2019-1-23 09:40
4
1
有源码了,逆着写出来还是挺顺手的。
雪    币: 8277
活跃值: (642)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
sqdebug 2 2019-1-23 10:35
5
1
感谢分享!
雪    币: 403
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
DWwinter 2019-1-24 09:19
6
1
手动赞
雪    币: 360
活跃值: (84)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
Caln 2 2019-1-25 16:11
7
0
.. 这码打得
雪    币: 144
活跃值: (4774)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
wsc 2019-1-26 10:19
8
0
感谢分享
雪    币: 614
活跃值: (693)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
eastmaster 2019-1-28 18:17
9
0
我也遇到过类似样本。我是把它运行起来,用ida挂接,字符串已经解密完成,ida里字符串都指向明文了。
雪    币: 1392
活跃值: (3059)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
lanoche 2019-1-29 07:19
10
0
可以看到这个偏移紧挨在字符表上面
——
这个是怎么看的
雪    币: 439
活跃值: (534)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
einsteinzl 2019-2-26 21:29
11
0
@渔夫不吃鱼 这句话下面的图里,绿色那块是字符串表,被我码掉了你可能没看出来哈,紧挨着就是说它们是地址连续的。
游客
登录 | 注册 方可回帖
返回