首页
社区
课程
招聘
[原创] FRIDA-DEXDump: 一吻便杀一个人,三秒便脱一个壳
发表于: 2020-2-25 23:04 31397

[原创] FRIDA-DEXDump: 一吻便杀一个人,三秒便脱一个壳

2020-2-25 23:04
31397

APP 加固发展到现在已经好几代了,从整体加固到代码抽取到虚拟机保护,加固和脱壳的方案也逐渐趋于稳定。随着保护越来越强,脱壳机们也变得越来越费劲,繁琐。

不过对于我来说,很多时候其实并不需要那些被强保护起来的代码,我只是想单纯的看看这个地方的业务逻辑。所以,我追求的是更加快速、简便的脱壳方法。

得益于FRIDA, 在 PC 上面进行内存搜索、转储都变得十分方便,再也不需要考虑什么Xposed、什么Android开发、什么代码注入,只需要关注如何去搜索想要的东西,于是依赖一个几十行代码的小脚本,就可以将大部分内存中的 dex 脱下来。在过去的一年,我几乎所有脱壳的工作都是由此脚本来完成,目前已经随手开源:FRIDA-DEXDump, 欢迎star。

对于完整的 dex,采用暴力搜索 dex035 即可找到。而对于抹头的 dex,通过匹配一些特征来找到。

有人问我无头dex的匹配原理是什么,这里补充一下: 因为许多加固抹头的时候只会抹掉dex035这个magic bytes, 但是其实 DexHeader 里很多其他的字段也是可以当作特征来匹配: 比如 header 的长度、string\type\field\proto 表的索引,索引指向的位置顺序等等。

虽然单一一个字段拿出来无法作为准确的特征,但如果有多条规则进行匹配,那么就完成了一个相对精确的模糊搜索,这样就能搜到 dex035 的dex了。代码里我仅仅只加了一条string_id_off的规则,所以加了个 improveTODO, 不过我觉得基本上够用,有兴趣的补全可以过来提 pr 鸭。

目前基本上我遇到的大部分 tx、bb、ijm、360、baidu 很多都是可以 dump 的,毕竟现代壳的核心功能并不是为了保护整体 DEX

(不会安装使用 FRIDA 的,请先自行百度学会..)

或者可以将脚本封装成命令,就像这样:

图片描述

原文:秃头的逆向痴想


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

最后于 2021-8-22 20:57 被葫芦娃编辑 ,原因:
收藏
免费 8
支持
分享
最新回复 (47)
雪    币: 2685
活跃值: (3680)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
2
膜拜大佬,学习了
2020-2-26 00:03
0
雪    币: 17
活跃值: (891)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
爱解密内抽取脱得dex也是空得把
2020-2-26 09:37
0
雪    币: 17
活跃值: (891)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
实测可以脱360 爱加密APP直接闪退 
2020-2-26 09:53
0
雪    币: 6911
活跃值: (9064)
能力值: ( LV17,RANK:797 )
在线值:
发帖
回帖
粉丝
5
你咋这么骚。
能教教我怎么安装frida吗
最后于 2020-2-26 13:35 被无名侠编辑 ,原因:
2020-2-26 13:34
0
雪    币: 624
活跃值: (501)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
牛批
2020-2-26 13:58
0
雪    币: 30
活跃值: (750)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
https://github.com/GuoQiang1993/Frida-Apk-Unpack/blob/master/dexDump.js
这个内存搜索的也很好用
2020-2-26 14:08
0
雪    币: 916
活跃值: (3434)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
8
无名侠 你咋这么骚。能教教我怎么安装frida吗
来我家,手把手教学
2020-2-26 14:11
0
雪    币: 916
活跃值: (3434)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
9
uvbs https://github.com/GuoQiang1993/Frida-Apk-Unpack/blob/master/dexDump.js 这个内存搜索的也很好用
嗯,不过不是一个原理。
2020-2-26 14:12
0
雪    币: 21
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
10
2020-2-28 15:52
0
雪    币: 729
活跃值: (1306)
能力值: ( LV9,RANK:160 )
在线值:
发帖
回帖
粉丝
11
2020-2-28 16:22
0
雪    币: 130
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
大佬啊。
2020-3-3 17:59
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
13
好像脱不了BB企业版,核心代码还是Help.stub()
2020-3-4 10:26
0
雪    币: 8519
活跃值: (9122)
能力值: ( LV12,RANK:360 )
在线值:
发帖
回帖
粉丝
14
大佬!请收下我的膝盖!
2020-3-10 20:59
0
雪    币: 866
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
15
3秒脱壳,不虚此言!
2020-3-28 19:51
0
雪    币: 1385
活跃值: (5609)
能力值: ( LV3,RANK:25 )
在线值:
发帖
回帖
粉丝
16
大佬!请收下我的膝盖!
2020-3-29 09:55
0
雪    币: 866
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
17
大佬,脱下来的dex,如何在回填使用呢?
请大佬给个参考,谢谢!
2020-3-29 18:57
0
雪    币: 248
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
18
用过 dexDump(https://github.com/GuoQiang1993/Frida-Apk-Unpack/blob/master/dexDump.js )楼上@uvbs推荐的,脱壳感觉还可以,看原理主要去hook libart.so中的系统函数,拿到dex文件的地址然后dump。但最近遇到个壳  dexDump 脱不了!  试试楼主的方法!
2020-3-30 16:40
0
雪    币: 248
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
19
经验证,楼主脚本可以三秒脱!   请教楼主个问题,看脚本是  枚举当前进程中已经映射到地址空间中的所有内存块,然后查找dex文件特征,最后dump!  问题是,内存块中保存了全部的已解密dex文件吗?
2020-3-31 10:58
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
20
厉害,几秒钟脱壳
2020-4-3 10:13
0
雪    币: 120
活跃值: (1597)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
必须要给你点个赞
2020-4-14 10:12
0
雪    币: 195
活跃值: (108)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
搜搜内存直接暴利挖出
2020-4-14 16:13
0
雪    币: 225
活跃值: (118)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
这个很厉害啊
2020-4-20 17:30
0
雪    币: 238
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
24
大佬
2020-4-20 19:39
0
雪    币: 33
活跃值: (844)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
这个好像不能脱最新的腾讯加固壳吧
2020-4-21 19:47
0
游客
登录 | 注册 方可回帖
返回
//