首页
论坛
课程
招聘
雪    币: 995
活跃值: 活跃值 (238)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝

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

2020-2-25 23:04 15296

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

2020-2-25 23:04
15296

脱壳的需求

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 的,请先自行百度学会..)

  1. 默念一声"我想脱个壳"。
  2. 启动 APP。
  3. 启动 frida-server。
  4. python main.py。
  5. 默数三秒,脱好了。

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

 

图片描述

******

首发、搬运自:

 

HWS计划·2020安全精英夏令营来了!我们在华为松山湖欧洲小镇等你

最后于 2020-2-25 23:05 被葫芦娃编辑 ,原因:
最新回复 (45)
雪    币: 6030
活跃值: 活跃值 (136)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
落叶似秋 活跃值 2 2020-2-26 00:03
2
0
膜拜大佬,学习了
雪    币: 29
活跃值: 活跃值 (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
amwpecel 活跃值 2020-2-26 09:37
3
0
爱解密内抽取脱得dex也是空得把
雪    币: 29
活跃值: 活跃值 (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
amwpecel 活跃值 2020-2-26 09:53
4
0
实测可以脱360 爱加密APP直接闪退 
雪    币: 4369
活跃值: 活跃值 (139)
能力值: ( LV15,RANK:620 )
在线值:
发帖
回帖
粉丝
无名侠 活跃值 10 2020-2-26 13:34
5
0
你咋这么骚。
能教教我怎么安装frida吗
最后于 2020-2-26 13:35 被无名侠编辑 ,原因:
雪    币: 513
活跃值: 活跃值 (43)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
风中的承诺 活跃值 2020-2-26 13:58
6
0
牛批
雪    币: 80
活跃值: 活跃值 (29)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
uvbs 活跃值 2020-2-26 14:08
7
0
https://github.com/GuoQiang1993/Frida-Apk-Unpack/blob/master/dexDump.js
这个内存搜索的也很好用
雪    币: 995
活跃值: 活跃值 (238)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
葫芦娃 活跃值 1 2020-2-26 14:11
8
0
无名侠 你咋这么骚。能教教我怎么安装frida吗
来我家,手把手教学
雪    币: 995
活跃值: 活跃值 (238)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
葫芦娃 活跃值 1 2020-2-26 14:12
9
0
uvbs https://github.com/GuoQiang1993/Frida-Apk-Unpack/blob/master/dexDump.js 这个内存搜索的也很好用
嗯,不过不是一个原理。
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
wx_W_623 活跃值 2020-2-28 15:52
10
0
雪    币: 1701
活跃值: 活跃值 (108)
能力值: ( LV9,RANK:160 )
在线值:
发帖
回帖
粉丝
skyun 活跃值 3 2020-2-28 16:22
11
0
雪    币: 104
活跃值: 活跃值 (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
heis 活跃值 2020-3-3 17:59
12
0
大佬啊。
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
流浪术士 活跃值 2020-3-4 10:26
13
0
好像脱不了BB企业版,核心代码还是Help.stub()
雪    币: 1183
活跃值: 活跃值 (105)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
编程难 活跃值 2020-3-10 20:59
14
0
大佬!请收下我的膝盖!
雪    币: 866
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
jack.zhang 活跃值 2020-3-28 19:51
15
0
3秒脱壳,不虚此言!
雪    币: 4614
活跃值: 活跃值 (607)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
supperlitt 活跃值 2020-3-29 09:55
16
0
大佬!请收下我的膝盖!
雪    币: 866
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
jack.zhang 活跃值 2020-3-29 18:57
17
0
大佬,脱下来的dex,如何在回填使用呢?
请大佬给个参考,谢谢!
雪    币: 255
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
@=llfly 活跃值 2020-3-30 16:40
18
0
用过 dexDump(https://github.com/GuoQiang1993/Frida-Apk-Unpack/blob/master/dexDump.js )楼上@uvbs推荐的,脱壳感觉还可以,看原理主要去hook libart.so中的系统函数,拿到dex文件的地址然后dump。但最近遇到个壳  dexDump 脱不了!  试试楼主的方法!
雪    币: 255
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
@=llfly 活跃值 2020-3-31 10:58
19
0
经验证,楼主脚本可以三秒脱!   请教楼主个问题,看脚本是  枚举当前进程中已经映射到地址空间中的所有内存块,然后查找dex文件特征,最后dump!  问题是,内存块中保存了全部的已解密dex文件吗?
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
clow_ 活跃值 2020-4-3 10:13
20
0
厉害,几秒钟脱壳
雪    币: 176
活跃值: 活跃值 (35)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xxRea 活跃值 2020-4-14 10:12
21
0
必须要给你点个赞
雪    币: 178
活跃值: 活跃值 (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wsgaoshou 活跃值 2020-4-14 16:13
22
0
搜搜内存直接暴利挖出
雪    币: 212
活跃值: 活跃值 (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ronle 活跃值 2020-4-20 17:30
23
0
这个很厉害啊
雪    币: 238
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
透明小白 活跃值 2020-4-20 19:39
24
0
大佬
雪    币: 28
活跃值: 活跃值 (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zengxianxi 活跃值 2020-4-21 19:47
25
0
这个好像不能脱最新的腾讯加固壳吧
雪    币: 638
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
rookie江 活跃值 2020-4-23 11:16
26
0
牛逼
雪    币: 205
活跃值: 活跃值 (35)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
KnightKing 活跃值 2020-4-26 17:25
27
0
围观大佬的常规操作~
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
小小程序 活跃值 2020-4-26 21:05
28
0
Traceback (most recent call last):
  File "main.py", line 8, in <module>
    import click
ModuleNotFoundError: No module named 'click'

求大佬指点原因。
雪    币: 66
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
沪ICP备 活跃值 2020-4-30 08:06
29
0
amwpecel 实测可以脱360 爱加密APP直接闪退
不能脱出抽取类,那么就没有意义
雪    币: 16
活跃值: 活跃值 (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
苏打水 活跃值 2020-5-1 14:58
30
0
沪ICP备 不能脱出抽取类,那么就没有意义

我实测爱加密的免费版可以dump出来哦

最后于 2020-5-1 14:59 被苏打水编辑 ,原因:
雪    币: 16
活跃值: 活跃值 (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
苏打水 活跃值 2020-5-1 14:59
31
0
小小程序 Traceback (most recent call last): File "main.py", line 8, in import click Modul ...
pip install click
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
小小程序 活跃值 2020-5-2 11:08
32
0
苏打水 pip install click
可以了 谢谢。找了几个FRIDA脚本搞定了DEX 找了一圈DEX发现要找的加密方法全是 Method not decompiled。心态崩了。
雪    币: 16
活跃值: 活跃值 (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
苏打水 活跃值 2020-5-3 16:28
33
0
小小程序 可以了 谢谢。找了几个FRIDA脚本搞定了DEX 找了一圈DEX发现要找的加密方法全是 Method not decompiled。心态崩了。[em_5]
可能是指令抽取了,也可能是对jadx等编译工具做了对抗,指令抽取可以试试寒冰大佬的fart,很香
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
遥远的星际 活跃值 2020-5-9 23:34
34
0
脱36X不行,只拿到部分的代码有部分还是混有加壳的,BB倒是可以完美脱,都是前几天官网新加的壳,谢谢楼主分享.
雪    币: 66
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
沪ICP备 活跃值 2020-5-18 22:25
35
0
苏打水 沪ICP备 不能脱出抽取类,那么就没有意义 我实测爱加密的免费版可以dump出来哦
爱加密可以用的吗,脱的有npp吗,怎么过的检测,我用闪退
雪    币: 256
活跃值: 活跃值 (145)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ZwCopyAll 活跃值 2020-5-19 06:53
36
0
66
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
wx_三天 活跃值 2020-5-21 09:59
37
0
有人帮忙脱个爱加密的壳嘛,付费,难得去装环境了
雪    币: 6
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_pojtejbw 活跃值 2020-6-24 16:05
38
0
流浪术士 好像脱不了BB企业版,核心代码还是Help.stub()
我也想知道bb企业版怎么破不了
雪    币: 6
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_pojtejbw 活跃值 2020-6-24 16:06
39
0
遥远的星际 脱36X不行,只拿到部分的代码有部分还是混有加壳的,BB倒是可以完美脱,都是前几天官网新加的壳,谢谢楼主分享.
bb企业版可以完美?
雪    币: 221
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_qnrdeqbd 活跃值 2020-6-30 09:31
40
0
mb_pojtejbw 我也想知道bb企业版怎么破不了
同求bb企业怎么处理,函数为空?
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
小小程序 活跃值 2020-7-8 23:31
41
0
due to system restrictions; try `sudo sysctl kernel.yama.ptrace_scope=0`, or run Frida as root

提示这个错的有人碰到过吗
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
wx_:D_739 活跃值 2020-7-12 00:23
42
0
请问bb企业版如何脱壳?有大佬 解决过吗
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
wx_ Kevin Chou 活跃值 2020-7-19 11:08
43
0
某APK, 脫了数字壳~ 修護了DEX~修護了入口~~~安裝APK送我閃退~
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_cgasnhbq 活跃值 2020-7-29 22:53
44
0
[Except] - Unable to inject into process: unable to handle 64-bit processes due to build configuration in
  File "D:\Programs\Python\Python38\lib\site-packages\frida\core.py", line 93, in get_frontmost_application
    return self._impl.get_frontmost_application()
大佬,我用nexus5可以拖,pixle1就报这个错误,是frida版本问题嘛
雪    币: 201
活跃值: 活跃值 (21)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xxiaoyangg 活跃值 2020-7-30 00:16
45
0
饿,是不是关键内容隐藏啦
雪    币: 255
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
快乐小牛 活跃值 6天前
46
0
mb_cgasnhbq [Except] - Unable to inject into process: unable to handle 64-bit processes due to build configurati ...
我也遇到了,百度也没结果
游客
登录 | 注册 方可回帖
返回