Linux平台一种进程代码注入方法
·
hev
用于在目标程序的 main 函数执行前完成一些操作 😉 特定情况下用来调试还是不错的。
源代码
/* fakemain.c
* Heiher
*/
#include
#define __USE_GNU
#include
static void do_something(void)
{
printf("Hello!\n");
}
int __libc_start_main(int (*main)(int, char **, char **),
int argc, char **ubp_av, void (*init)(void),
void (*fini)(void), void (*rtld_fini)(void),
void (*stack_end))
{
int (*__libc_start_main_real)(int (*main) (int, char **, char **),
int argc, char **ubp_av, void (*init)(void),
void (*fini)(void), void (*rtld_fini)(void),
void (*stack_end));
do_something();
__libc_start_main_real = dlsym(RTLD_NEXT, "__libc_start_main");
return __libc_start_main_real(main, argc, ubp_av, init, fini,
rtld_fini, stack_end);
}
编译
gcc -o libfakemain.so -fPIC -shared fakemain.c -ldl
测试
LD_PRELOAD=./libfakemain.so ls
Hello!
fakemain.c hotkey hotkey.vala libfakemain.so