asLody / SandHook

Android ART Hook/Native Inline Hook/Single Instruction Hook - support 4.4 - 11.0 32/64 bit - Xposed API Compat
Other
2.03k stars 443 forks source link

有什么好的方案进行全局hook #41

Open cc-qing opened 4 years ago

cc-qing commented 4 years ago

请教一下如果把SandHook插桩到framwork层的main函数,可以实现全局hook吗

baibaomen commented 4 years ago

同问!

ganyao114 commented 4 years ago

搞定selinux就能

domi-fa commented 4 years ago

ganyao你好,

公司的一个手机管控项目,基于厂商的安卓10源码定制开发,做管控定制。 我想运用Sandhook做全局的hook,从而用最少的源码改动,实现管控所有应用。

采用的思路如下: 1、在管控apk引用SandHook(包括libsandhook.so,libsandhook-native.so),在其中编写hook方法,实现管控逻辑; 2、在安卓源码的Instrumentation.java的newApplication方法中,通过DexClassLoader/PathClassLoader反射调用管控apk的hook方法,从而实现对各个apk进程的注入。

目前遇到的问题是:ClassLoader能够反射调用到apk的java方法,但报错无法加载SandHook需要的两个so文件。 我尝试了把它们拷贝到被管控apk的私有目录,以及把它们直接拷贝到system/lib64,都无法加载。

安卓新近版本对加载so文件做了各种限制,比如:https://source.android.com/devices/tech/config/namespaces_libraries

请教有什么办法能够让任意apk进程都加载SandHook的so库,实现上述需求吗?

cc-qing commented 4 years ago

ganyao你好,

公司的一个手机管控项目,基于厂商的安卓10源码定制开发,做管控定制。 我想运用Sandhook做全局的hook,从而用最少的源码改动,实现管控所有应用。

采用的思路如下: 1、在管控apk引用SandHook(包括libsandhook.so,libsandhook-native.so),在其中编写hook方法,实现管控逻辑; 2、在安卓源码的Instrumentation.java的newApplication方法中,通过DexClassLoader/PathClassLoader反射调用管控apk的hook方法,从而实现对各个apk进程的注入。

目前遇到的问题是:ClassLoader能够反射调用到apk的java方法,但报错无法加载SandHook需要的两个so文件。 我尝试了把它们拷贝到被管控apk的私有目录,以及把它们直接拷贝到system/lib64,都无法加载。

安卓新近版本对加载so文件做了各种限制,比如:https://source.android.com/devices/tech/config/namespaces_libraries

请教有什么办法能够让任意apk进程都加载SandHook的so库,实现上述需求吗?

system/ect/里有个配置文件,是允许app加载系统的so,把你的so在这里配置下就行了,具体是啥我忘了,反正是public开头的

domi-fa commented 4 years ago

@767972675 感谢!