对Android Hook技术的一些浅谈

查看 120|回复 10
作者:LivedForward   
Android Hook技术发展到今天,可以说是登峰造极了。差不多在五六年前,那个时候还是刚刚出来PMS Hook,
用的动态代{过}{滤}理技术,fourbrother大咖出品的kstools。在那个时候,我针对这个出了一个检测,
就是任何被Java动态代{过}{滤}理的接口,它的父类都是Proxy。还有直接到native层去获取Apk路径,然后手动
解析签名信息。kstools机制就是在attachBaseContext函数里面优先替换掉系统PMS服务。
大概2-3年前,又有了更先进的Hook技术,爱加密的加固机制除了壳以外,还有一层工厂类AppComponentFactory,
在Apk整个解密运行的生命周期中,都会对其进行监控。
到了今天,我看到了终极Hook方案:Hook系统调用。应用seccomp机制,像proot、VirtualApp、Ratel平头哥等等。
我们知道,Hook方式有root和免root,root可以做到全局Hook,免重打包。免root可以做到单进程Hook,需要重打包,
但重打包最重要的就是IO Redirect,要过掉各种文件校验和签名校验。涉及到open函数,它们底层都是openat系统调用,
seccomp可以拦截系统调用,然后把path参数改一下就行了。
其实发展到今天,文件校验最安全的也就做到内联svc,后面是检测Hook与防检测的对抗的舞台了,理论上做到了系统调用
级别的Hook,可以完全过掉所有的检测,只是更新迭代的问题和时间问题了。
但是在所有的检测方案中,只有一种是最难过掉和Mock的,那就是不直接依赖系统API的检测方式。
比如反调试:我们可以检测一段代码的执行时间,然后另外开启一个子线程去计时,监控。这种
反调试方法在360加固里面有所体现,它的检测时间是3S,这个我记忆犹新。
当然这里也有兼容性的问题了,安全做到一定层级,肯定会丢失一定的稳定性与兼容性。
Hook做到一定的层级,也丢失一定的稳定性与兼容性。就是采用它们之间的平衡交叉点。
我是一位做IT技术支持的(运维),Android安全与逆向始终是我的爱好,可以说只懂一些上层的东西,
也学了一些皮毛的汇编知识,也就是一个玩家的身份,在这里也向各位小伙伴和大咖学习到了很多技术与知识。
如果你有任何建议意见或者想法都可以提出来和我交流进步。
参考:
检测PMS是否被Hook
对Inline Hook,Got Hook和SVC Hook一些检测的浅谈
一种可以规避大部分去签名校验的方法
IO重定向检测,APK签名校验
另外附上一个测试Demo:
https://www.123pan.com/s/lN7UVv-pbYJ


IMG_20230226_205533.jpg (51.55 KB, 下载次数: 0)
下载附件
2023-2-26 21:00 上传



Screenshot_2023-02-26-20-54-54-533_com.ysh.hookap.jpg (157.28 KB, 下载次数: 0)
下载附件
2023-2-26 21:00 上传



Screenshot_2023-02-26-20-54-56-500_com.ysh.hookap.jpg (136.84 KB, 下载次数: 0)
下载附件
2023-2-26 21:00 上传

下载次数, 系统

lichao890427   

说白了,移动端安全防护就是把Windows端那一系列从应用层防护到内核层防护的发展过程,重复了一次,只不过移动端一般到了驱动就终止了,做不了更底层
windows不同的是驱动层还可以继续往下做安全。
最开始不重视安全,到安全做到位,大概也得经历10年左右,pc端,移动端,都一样的
什么hook,加壳保护,二进制混淆,vmp,其实都一样的
WAITME66   

谢谢分享学习了
wan456   

3秒,时间没记错吧,这得多长
jasonA   

谢谢分享学习了
雨落惊鸿,   

感谢分享
hsctest   

总结的不错,我有个红米10a,没找到方法root进行后续研究,实在不知道买什么新手机做root比较好。
LeiSir   

我想学无从入手
lzy1983   

谢谢楼主,又了解了一个技术
feiyu361   

谢谢分享学习了
您需要登录后才可以回帖 登录 | 立即注册

返回顶部