安卓逆向系列补充(三)

admin 2024年7月30日17:27:56评论27 views字数 1555阅读5分11秒阅读模式
最近都太忙了,过完这段时间就好了。。。。。。。。。。。。。

目的:补充下上次二代壳的加壳以及脱壳问题

我们知道了二代壳的加壳是函数抽取型,脱壳就是找到函数地址,然后进行回填。我也是翻了很多篇文章,才发现没有相关很系统的文章。很多都是整体加固的文章,没有几个人是从0-1实现了加二代壳文章。我暂时也没能力完整的写出来这个。。

安卓逆向系列补充(三)安卓逆向系列补充(三)

先看看大佬总结好二代壳的加固以及脱壳过程图片

安卓逆向系列补充(三)

找到了几篇质量比较高的文章,可以看看。

https://blog.csdn.net/hhh901119/article/details/79526169

https://blog.csdn.net/zhangmiaoping23/article/details/100877907

再分享一个博客

赵四大佬的博客,虽然已经很久不更新了,但里面仍然有很多是值得我去学习的技术

http://www.520monkey.com/

前提知识:正常二代壳加固过程需要禁用dex2oat

dex2oat有什么作用?

在应用程序运行时,Android系统会通过类加载器(ClassLoader)动态地加载类。.dex文件被转换为.oat文件后,其中的类定义以本地代码的形式存在,这使得类加载器可以更快速地加载并执行这些类。因此,dex2oat的工作直接影响了应用程序的类加载过程,使得应用程序在运行时更加高效。

dex2oat执行的时刻

安卓逆向系列补充(三)

那么之前讲的Classloader与这个有什么关系?

DexClassLoader是在这里有一个Dex2Oat编译流程用于优化编译效率,但是由于oat优化会有.oat文件落地,通过oat2dex即可获得原Dex,所以大部分壳都会阻断Dex2Oat流程,这里就不跟进分析直接看dex_files.empty()之后的代码。

二代壳的脱壳思路

这个其实很容易理解,就是加壳已经禁用dex2oat,那么就找其他地方的脱壳点。在不尝试破解dex2oat的情况下,整个类装载的过程,都可以进行脱壳。

安卓逆向系列补充(三)

类编译解释执行就是interprter编译/解释执行,存在有海量的脱壳点。在这地方只要hook到类加载地址,类加载长度。那么只要遍历所有类地址,就能够把所有的类给还原了。

判断类是否完整还原的方法

1.看md5函数,如果还原完成的话,那么就能看到完整md5函数了

2.找到一个跟login相关的activity,如果还原完成的话,那么就能看到完整的函数,不再是看到一些接口。

从源码中寻找脱壳点:

在安卓4.4下的Dalvik,关键追踪这个loadClass就好了,这个就不想再详细追踪了。。。

在当下ART环境下还是8.1的环境,可以尝试追踪这个函数,loadClasMembers

在知道从DexFile中进行还原方法,很多人写多了hook框架。在下面已经列出来,有心的人可以看看。

https://github.com/asLody/whale

https://github.com/asLody/SandHook

https://github.com/ele7enxxh/Android-Inline-Hook

在写完文章后,又发现了一个github博客,还是非常好的,可以相互印证学习。

https://github.com/JnuSimba/AndroidSecNotes

ps:如果想一块讨论代码审计&APP逆向&渗透可以添加下面的微信号相互交流

安卓逆向系列补充(三)

本文仅用于技术讨论与学习,利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者及本公众号不为此承担任何责任

欢迎关注公众号“呼啦啦安全”,原创技术文章第一时间推送

安卓逆向12

安卓逆向 · 目录

上一篇安卓系列学习(九)--静态函数式抽空

原文始发于微信公众号(呼啦啦安全):安卓逆向系列补充(三)

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年7月30日17:27:56
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   安卓逆向系列补充(三)http://cn-sec.com/archives/3013558.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息