安卓逆向系列(十)整体梳理

admin 2024年6月19日20:03:28评论2 views字数 1084阅读3分36秒阅读模式

主要是理下之前学习的逻辑:

前面讲过APP启动的两个关键点attachBaseContext和onCreate,这两个地方是在执行完Dex解密后,在这两个地方进行加壳做文章的地方。如果想要对APP进行加壳,由于ClassLoader双亲委派的原因,想要执行壳的dex,就需要是对ClassLoader进行修复,这样才能正确的加载壳的Dex。

ps:壳都是通过替换APP的Application类并自己实现这两个函数,并在这两个函数中实现dex的解密加载。下面这个是看雪hanbingle大佬的图。

安卓逆向系列(十)整体梳理

上面讲的是一代壳的加载过程,在2017年的DEF CON 25 黑客大会中,Avi Bashan 和 SlavaMakkaveev提出来了DexFile的两个脱壳点,导致一代壳直接能被绕过去了。

为了对抗脱壳,一代壳是对整体的dex进行加固。演变为二代壳是对dex中的函数进行抽空,导致脱壳后看不到函数内容。

对抗二代壳技巧就是在函数指令抽空后,找到函数的内存地址,再还原回去,就能脱壳。

在这里面比较突出的是Fupk3,后面才逐渐演变为fart,Youpk。

Fupk3只能是安卓4.4以下系统Dalvik虚拟机才能用,而fartyoupk都是可以在Art环境下能够使用的。

Fart脱壳思路:

1.内存中DexFile结构体完整dex的dump

2.主动调用类中的每一个方法,并实现对应CodeItem的dump

3.通过主动调用dump下来的方法的CodeItem进行dex中被抽取的方法的修复

youpk脱壳思路:

加深主动调用流程至Switch解释器的每条汇编指令执行前回调

参考文章:

https://mp.weixin.qq.com/s?__biz=MjM5NTc2MDYxMw==&mid=2458317878&idx=1&sn=bfebe78cefee9a166f9baf34b9989b34&chksm=b181c4bc86f64daaef2f083295b1cfe2d91340f4807de6076420d183a091daab831ef52b660f&scene=27

https://bbs.kanxue.com/thread-252630.htm

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

安卓逆向系列(十)整体梳理

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

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

原文始发于微信公众号(呼啦啦安全):安卓逆向系列(十)--整体梳理

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年6月19日20:03:28
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   安卓逆向系列(十)整体梳理https://cn-sec.com/archives/2864268.html

发表评论

匿名网友 填写信息