首页
论坛
专栏
课程

[原创]一种在内存中搜索DEX时减少搜索范围的技巧

2019-6-6 11:11 2634

[原创]一种在内存中搜索DEX时减少搜索范围的技巧

2019-6-6 11:11
2634
最近在向自己工具里添加内存Dump功能时发现了一个规律,不确定自己是不是火星了。
即观察maps时发现,大部分的内存段都比较短,但是有些特定的内存段特别长。

于是思考一个问题,什么情况下会需要比较长的连续内存?
Bingo,我想你也想到了,那就是真实DEX解密和加载的时候,需要找一段连续的内存去放这些数据。
所以如果出现了几段内存特别的长,那么DEX就有可能在里面。

于是我做了个实验,发现果真如此。
我首先搜索malloc的内存,因为解密的时候很可能需要分配一段足够长内存。

如图可见,这一段内存相对于别的段,特别长。
于是乎,就dump一下试试。

然后用010Editor打开这段内存Dump,搜索一下,果然有DEX在里面。

扣出来以后,发现确实就是应用的DEX文件。

当然,里面做了类抽,也可能是VMP,未作额外处理的话,看不到内容。
但是说明了对准最大的内存段进行Dump的做法是对的,这样的话,完全不用触及其他的内存段,Dump时不会触发防Dump保护。

不知道自己是不是火星了,给大佬们参考。
另外推广一下自己的工具,一个Xposed插件
https://github.com/monkeylord/XServer

刚刚新增的功能是纯Java实现的内存编辑/Dump,不需要原生代码就能Dump内存。
所以只要不防Xposed,就能Dump内存,或修改内存。


[招聘]欢迎市场人员加入看雪学院团队!

打赏 + 1.00
打赏次数 1 金额 + 1.00
收起 
赞赏  junkboy   +1.00 2019/06/06
最新回复 (11)
junkboy 2019-6-6 12:03
2
0
感谢分享
BOSSSUN 2019-6-6 18:56
3
0
XServer nb!
zylyy 2019-6-7 10:51
4
0
感谢分享
LowRebSwrd 2 2019-6-7 21:03
6
0
也是脱壳的一种思路!
飘云 1 2019-6-10 17:26
7
0
思路不错
kongfubull 2019-6-10 18:44
8
0
学习了,果然是有心人呐,太仔细啦。
只是来打酱油 2019-6-11 08:48
9
0
函数被抽成native后 还原很难.有没有办法不还原直接hook
nbrblich 2019-6-11 09:12
10
0
现在许多回固体系统都防XP了,所以通过这样的方法不太实际了。
Monkeylord 2019-6-11 13:53
11
0
只是来打酱油 函数被抽成native后 还原很难.有没有办法不还原直接hook
一直都有啊,XServer对函数的Hook、拦截、重放、爆破一体。
smartdon 1 2019-6-26 16:27
12
0
感谢分享
游客
登录 | 注册 方可回帖
返回