-
-
[求助]Android中使用LD_PRELAD拦截函数
-
发表于:
2014-11-14 22:55
5808
-
[求助]Android中使用LD_PRELAD拦截函数
问题描述:
我的Android应用希望hook libc.so中的一些函数,比如socket, strmcp。
于是我写了一个hack.c,编译成so,用于拦截:
hack.so
1 #include <stdio.h>
2 #include <string.h>
3 #include <android/log.h>
4 #define TAG "hookJavaMethod"
5
6 int strcmp(const char *s1, const char *s2) {
7 __android_log_print(ANDROID_LOG_INFO, TAG, "hack function invoked.s1=<%s> s2=<%s>\n", s1, s2);
8 return 0;
9 }
同时,还有一个在java层System.loadLibrary的so(System.loadLibrary(main.so))
在这个so里,我在jin_onload里去设置环境变量ld_preload:
JNIEXPORT jnit jni_onload(JavaVM * jvm, void *reserved){
setenv("LD_PRELOAD", "/data/data/com.example.hellojni/lib/hack.so");
return JNI_VERSION_1_4;
}
希望拦截掉我后续的strcpm函数调用,可是完全不起作用,不知道为什么,求解~
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!