C 语言、C++应该不能绕过 xposed hook 的接口吧

2018-02-13 10:57:12 +08:00
 nosugar

经常看到有人说部分 apk 可以绕过 xposed hook 的接口,
但是非 root 权限 安卓根本没有提供 C、C++的操作系统资源 API 啊,
那些绕过 xposed 模块 xprivacy 限制读取了短信等等,是否利用了系统漏洞做的呢?
有没人研究过这个问题

13922 次点击
所在节点    Android
14 条回复
honeycomb
2018-02-13 11:01:21 +08:00
如果这个 c++ api 最后绕了一圈还是回到 java 层的话是绕不过去的
nosugar
2018-02-13 11:13:04 +08:00
@honeycomb 确实是,目前除了 JNI,没发现 C 能通过别的途径读取系统信息,JNI 也是 java 发起的
codehz
2018-02-13 11:28:40 +08:00
不是可以直接走 binder 相关获取信息么,据我所知,还没有试图影响 binder 的
honeycomb
2018-02-13 12:38:28 +08:00
nosugar
2018-02-13 13:59:00 +08:00
@codehz
@honeycomb

https://stackoverflow.com/a/19356010/8356718

```
#include <cutils/properties.h>
```
这个确实无解,安卓居然有库支持 C 获取系统变量
https://android.googlesource.com/platform/system/core/+/master/libcutils/include/cutils/
funCoder
2018-02-13 14:12:10 +08:00
@nosugar #5 现在一般是往 Xposed Module 中集成 Cydia Substrate,Java Hook 和 Native Hook 都能做。像 __system_property_get 这种函数也是能 hook 的。
nosugar
2018-02-13 14:30:49 +08:00
@funCoder
public static native boolean doSomething(params...);
这种 java 代码是可以 hook 的直接 return false,直接 hook C 代码?我觉得不行或者其难度极大类似 debug 汇编一样
https://forum.xda-developers.com/xposed/xposed-hook-native-methods-t2817927
zj299792458
2018-02-13 17:07:01 +08:00
安卓的 C 接口和 Linnux 有什么不一样吗……
codehz
2018-02-13 17:13:16 +08:00
@nosugar 其实 hook native 层没啥特别的,我以前还 hook 文件相关的 libc 函数以实现安卓分应用存储重定向呢。。。
iceheart
2018-02-13 17:53:59 +08:00
写个 jni,静态链接所有依赖的包
codehz
2018-02-13 21:31:23 +08:00
@iceheart 这个没法避免内核模块拦截系统调用(
honeycomb
2018-02-14 18:36:39 +08:00
@codehz 现在有个叫 rikka 的在做这件事
cyspy
2018-02-15 07:49:39 +08:00
美团的技术博客前几天说过这个问题
deadEgg
2018-02-15 12:45:12 +08:00
android 的 c 接口还有人做了 boost 扩展

没有对系统资源的 api。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/430540

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX