查看原文
其他

Android安全攻防之Hook浅析

哆啦安全 2022-05-24

The following article is from 编码安全 Author 编码安全


背景


在android攻防过程中难免会出现,辛苦开发的apk包被一些不法的用户动态被修改APK逻辑、关键数据被解密并以此被利用。那么这些实现动态修改APK包,所用到的技术就离不开关键HOOK(也就是钩子)的技术,下面就梳理下android下的几个HOOK方案。



Frida server HOOK方案


基于frida的hook,是目前一种最常见的hook方案之一,它是一款基于Python 和JavaScript 的hook框架,本质是一种动态插桩技术,所以该方案实现简单,可扩展性强,易于调试和修改,hook代码可以随时修改,还能通过RPC方便地在PC上进行交互,能够绕过大部分hook检测,自然也就成了逆向人员最常见的一种分析APK手段。

但是由于frida的太过于强大,因此很多加固厂商或者各种apk都对它采用防护对抗手段,因此使用这个frida的门槛一下子就提高了。同时frida本身虽然兼容性虽然较好,但在进行注入过程中,仍会出现在一部分APP上无法正常运行的情况。



Xposed HOOK方案


Xposed 是 Android 平台上著名的 Java 层 Hook 框架,通过在 Android 设备上安装 Xposed 框架,编写 Xposed 模块,可实现对任意 Android 应用的 Java 方法的 Hook,以及应用资源的替换。它采用的是zygote的全局注入方式,通过注入到zygote进程,然后再创建新进程的时候都会附带上zygote进程中的模块信息。Xposed 有两种实现版本,一个是基于 Dalvik 虚拟机的实现,它是针对早期的 Android 4.4 之前的 Android 设备设计的;另一个是基于 ART 虚拟机的实现,自 Android 5.0 系统开始,Android 系统正式采用了 ART 虚拟机模式运行。



Frida Gadget hook方案


frida中的Gadget方案,该方案通过对APK进行二次打包,向lib目录中添加Gadget的动态链接库,然后反编译dex,在dex中添加加载该动态链接库的代码,达到实现持久化hook方案。虽然可以进行gadget方案,但是需要进行重打包方操作。该方案虽然避免了运行时的注入过程,提高了兼容性,但是对APK的重打包,需要绕过APK本身的签名校验和文件校验。


定制ROM方案


通过定制系统的ROM方案类似于脱壳机,它基本上不可能被检测,而且兼容性也非常好。但是该方案基本上只能用于开放源代码的系统机型,而且系统的编译时间非常长,每一点微小的改动都需要重新编译并刷机并重启系统,开发调试费时费力,后续更新极其不方便。而且与PC端的通信也比较麻烦。并且该方案在对人员要求高,同时所需的成本也是比较高的。



总结


以上的几个方案是有利也有弊,所侧重的应用场景也会有所差异。就看那种方案适用自己的业务需求。以上只是对一些概念性做一些方案梳理,为后续深入这些方案做些铺垫。



【精彩阅读】

Android/Linux Root分析与研究

Android APP抓不到包的解决思路

Android获取Root权限的通用方法

Android逆向之Magisk+Edxposed刷入教程(内附资源)

Gradle Plugin+Transform+ASM Hook并替换隐私方法调用(彻底解决隐私不合规问题)


点个在看你最好看



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存