二代壳对方法体的静态抽取过程
前置文章:
https://juejin.cn/post/6844903847647772686
有了第一篇文章做铺垫后,可以很轻松的理解第二篇以及第三篇文章
http://www.520monkey.com/archives/815
https://blog.csdn.net/hhh901119/article/details/79526169
指明了脱壳的本质:
https://bbs.kanxue.com/thread-252630.htm
https://bbs.kanxue.com/thread-254028.htm
https://bbs.kanxue.com/thread-254555.htm
文章中用的dex还是前篇文章用的dex
根据前几篇文章,我们可以知道二代壳的函数式抽取的方法。就是将函数里面的内容给抽空,那么如何将函数里面的内容给抽空呢?
之前安装过010editor,但是这个工具无法直接查看.dex的文件地址结构,需要下载。详细看这篇文章
https://www.sweetscape.com/010editor/repository/files/DEX.bt
将这个插件另存为电脑里面,然后在010editor
点击 view installed Templates
点击add,将之前下载好的插件给添加进去就好了
退出010editor,再重新打开010editor,就可以了看到class.dex的文件地址结构了
根据前几篇文章讲解的 DEX 文件格式解析,拿着大佬文章中的一个图
我们可以观察到,我们看到最重要的是方法的索引以及类的定义区,那么我们主要关注的就是method_ids以及class_defs这两个参数了
在class_defs这个里面寻找还是挺复杂的,我们直接把这个全部类给导出
因为知道用的是test02,所以直接搜索test02就好了
在2233里面找到了这个
剩下就是分析了,分析这个类中的test02方法,然后把test02方法给抹除,全部置为空就好了。看到文章中分析的是insns就是指令集,那么只需要把sns指令集全部置为0,就是抹除了这个
将insns的值全部置为0,然后重新计算checksum值,发现checksum值是0xc2712992,在010editor中修改checksum值
然后使用jadx打开修改过的dex文件,查找test02函数,这个函数已经被修改过了
参考文章:https://www.cnblogs.com/vendanner/p/4939444.html
原本还想今天晚上多学习一会,被同事拉着走了3公里来回去吃饭,回来也没心情再学习了......明天再继续学习吧
本文仅用于技术讨论与学习,利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者及本公众号不为此承担任何责任。
欢迎关注公众号“呼啦啦安全”,原创技术文章第一时间推送。
原文始发于微信公众号(呼啦啦安全):安卓系列学习(九)--静态函数式抽空
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论