吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4879|回复: 13
收起左侧

[Android 原创] 对Inline Hook,Got Hook和SVC Hook一些检测的浅谈

  [复制链接]
LivedForward 发表于 2022-11-27 16:57
本帖最后由 LivedForward 于 2022-11-27 17:05 编辑

说到Inline Hook、Got Hook,大家并不陌生,在Native层都可以改变函数的执行返回值或修改传入参数的值。
在网上github现有比较成熟的Hook框架中,Got Hook的代表:XHook,Inline Hook:SandHook。
Got Hook就是在运行时修改got表的函数入口地址,这种Hook方案针对同一个进程的so文件

都需要修改它们的got表;Inline Hook就是在函数的前几个指令插入跳转指令,
使目标函数跳转到我们的函数执行逻辑里面来。


列举两张图,示例为Got Hook和Inline Hook的流程原理:

               20181201113340529.png     933137-20180103191029190-1300129949.png


怎么去做检测呢?看到网上检测方案,真的感觉就像过家家一样,小打小闹。
比如检测有没有指定类,xposed:de.robv.android.xposed.XposedHelpers。

比如腾讯很久以前的乐固就主动抛出Java异常,然后检测Stack异常信息里面有没有xposed类的字符串。
或者是检测Package Name,或者是检测App Name,检测有没有libxxx.so文件,
再就是检测命名空间是否为XXXXX,比如SandHook的namespace就是SandHook。



其实我想问一句,这些检测方法就是掩耳盗铃,自欺欺人。把这些Hook框架稍微改动一下再重新打包,
这些方法就瞬间失效,更可笑的是网上都是这种检测方法,真的是让人贻笑大方。

在这里,我想提出几种检测思路:
  • 检测物理磁盘上的so文件与内存里的so文件的映射关系,比如.data、.text等等。
  • 检测指定的函数的前几个指令是否为跳转指令,比如arm64的跳转指令是0x058000050。
  • 检测系统lib库的so文件的指定函数地址与本进程so的导入函数地址是否相等。比如libc库的open函数。
   这种方式需要先计算好got起始地址,导入表函数位置。

最后,针对SVC Hook的:SVC Hook有ptrace、seccomp、内存扫描svc指令。

内存扫描指令这种肯定不会存在,因为这种效率太低了,需要起一个线程监控,
而且稳定性也差。目前就seccomp的bpf最常用,这种就是设定filter过滤器规则,
拦截到指定的系统调用号后会产生一个信号量,这种信号量是你设定的,
然后就会执行事先使用sigaction注册的函数。

我们可以这样检测:注册一个sigaction处理逻辑,然后主动使用 sigqueue函数发送信号量,再接收,
如果没有接收到说明被seccomp的bpf规则拦截了,SVC已经被Hook了。

参考上篇帖子:一种可以规避大部分去签名校验的方法https://www.52pojie.cn/thread-1717714-1-1.html

免费评分

参与人数 5吾爱币 +4 热心值 +5 收起 理由
junjia215 + 1 + 1 用心讨论,共获提升!
yin_ol + 1 + 1 用心讨论,共获提升!
CYLmtthhh + 1 + 1 谢谢@Thanks!
1MajorTom1 + 1 热心回复!
hobby + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

lichao890427 发表于 2022-11-27 18:40
  • 大厂一般模块比较多,有需要静态链接的也有动态的,编译完自测都能检测出got或者inlinehook,是很正常的,因为其他团队的安全模块或者业务模块都可能有。具体去判断goto的地址就很复杂了,有可能并不可行。
  • 爆搜内存这思路,在成熟的产品上上级直接就给你拒了,性能太差,设计不合理。爆搜svc了,爆搜inline特征都不可行,何况inline特征也不是一种,最多可以做到流行的hook框架检测。当然如果你只是自己开发小软件就没问题了
  • 破解远比做安全加固容易,因为破解者在暗处,不同的人有不同的破解方法,破解者可无限次尝试
  • 核心防护模块的核心代码,有些是黑科技,是从系统源码内核源码找到的思路。
  • 各种保护技术的兼容问题,这点是最难的,因为开发要面对各种不同环境的手机,不同环境结果可能都不同。破解的话,只需要找一台能root的就可以了,难度低一个数量级

你想的这些,腾讯里那些挖系统漏洞的能想不到吗,人家可能二三十年前就玩过了。只不过为了稳定性和兼容性不上罢了

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
S11ence + 1 + 1 谢谢@Thanks!

查看全部评分

oranges 发表于 2022-11-27 17:41
Null666yyds 发表于 2022-11-27 18:23
Clown4730 发表于 2022-11-27 20:14
感谢分享,值得参考
ssjjtt 发表于 2022-11-27 20:49
没有详细的教程吗?
deva 发表于 2022-11-27 21:26
小白来学习
wmsj666 发表于 2022-11-28 07:28
感谢分享!!!
aa2923821a 发表于 2022-11-28 08:37
感谢分享!!
l5655655 发表于 2022-11-28 08:46
教程很棒!感谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 11:54

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表