A shared libraries injection tool and ELF hook engine of Android.
Please compile them with android-ndk-r8e
, or you may need to rewrite Android.mk
.
Has been tested on Android 2.2, 2.3 and 4.1, and root privilege is REQUIRED.
Special thanks to the author of libinject
http://bbs.pediy.com/showthread.php?t=141355
Enter each source directory and run ndk-build
provided by android-ndk-r8e
.
$ cd injector
$ $NDK/ndk-build
$ cd ../samples/test
$ $NDK/ndk-build
$NDK
is the root directory of android-ndk-r8e
.
Also, you can find pre-compiled binaries in bin
.
We can use injector
to inject a shared library into arbitrary processes. Let's take libtest.so
as an example.
First, push both injector
and libtest.so
into a writeable location (e.g. /data/local/
) of your device (or emulator).
$ adb push injector /data/local/
$ adb push libtest.so /data/local/
Then, set the permission of injector
as executable.
$ adb shell chmod 755 /data/local/injector
Next, you can refer to injector
's usage information to inject libtest.so
into target processes.
$ adb shell /data/local/injector -h
Usage: injector -p pid -l libpath
-h --help Display this usage information.
-p --pid PID of target process.
-l --libpath Absolute path of the shared library that will be injected.
What should be noticed is that injection may be failed if you specify a relative path after -l
(or --libpath
) option.
Please take a look at the sample project samples/hook_ioctl
.