FRIDA-DEXDump: 一吻便杀一个人,三秒便脱一个壳
2020-02-26 12:29:33 Author: bbs.pediy.com(查看原文) 阅读量:487 收藏

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

12小时前 368

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

脱壳的需求

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. 默数三秒,脱好了。

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

图片描述

******

首发、搬运自:

[招生]科锐逆向工程师培训(3月6日远程教学班首开特惠, 第37期) !

最后于 12小时前 被葫芦娃编辑 ,原因:


文章来源: https://bbs.pediy.com/thread-257829.htm
如有侵权请联系:admin#unsafe.sh