/**
* filename : injector.c
* description : shared libraries injection helper
* author : guhe
* reference : http://bbs.pediy.com/showthread.php?t=141355 &
* http://www.debugman.com/thread/6260/1/1
* created :
* modified by : shaoyuru@whu.edu.cn
*/
#include <stdio.h>
#include <stdlib.h>
#include <asm/ptrace.h>
#include <asm/user.h>
#include <asm/ptrace.h>
#include <sys/wait.h>
#include <sys/mman.h>
#include <dlfcn.h>
#include <dirent.h>
#include <unistd.h>
#include <string.h>
#include <getopt.h>
#include <android/log.h>
#define ENABLE_DEBUG 0
#define PTRACE_PEEKTEXT 1
#define PTRACE_POKETEXT 4
#define PTRACE_ATTACH 16
#define PTRACE_CONT 7
#define PTRACE_DETACH 17
#define PTRACE_SYSCALL 24
#define CPSR_T_MASK ( 1u << 5 )
#define MAX_PATH 0x100
#define REMOTE_ADDR( addr, local_base, remote_base ) \
( (uint32_t)(addr) + (uint32_t)(remote_base) - (uint32_t)(local_base) )
const char *libc_path = "/system/lib/libc.so";
const char *linker_path = "/system/bin/linker";
#if ENABLE_DEBUG
#define LOGD(...) ((void)__android_log_print(ANDROID_LOG_DEBUG, "inject-process", __VA_ARGS__))
#else
#define LOGD(format,args...)
#endif
/**
* read data from src and write to buf
*/