Wednesday, February 4, 2015

Android Linux API Hooking

안드로이드에서도 Linux API를 다음과 같이 Hooking할 수 있다. 다른 점은 RTLD_NEXT대신에 RTLD_DEFAULT를 써야 한다는 점이고, 대상 so와 함께 link되어 컴파일 되어야 한다는 점이다.


#define _GNU_SOURCE
#define __USE_GNU

#define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, "native-activity", __VA_ARGS__))
#define LOGW(...) ((void)__android_log_print(ANDROID_LOG_WARN, "native-activity", __VA_ARGS__))

void* malloc(size_t size) {
LOGI("malloc");
static void* (*my_malloc)(size_t) = NULL;
my_malloc = dlsym(RTLD_DEFAULT, "malloc");
LOGI("my_malloc=%d",(int)my_malloc);
return my_malloc(size);
}

No comments:

Post a Comment