用于在目标程序的 main 函数执行前完成一些操作
特定情况下用来调试还是不错的。
源代码
* fakemain.c * Heiher <admin@heiher.info> */ #include <stdio.h> #define __USE_GNU #include <dlfcn.h> 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); }
编译
测试
Over!
本文介绍了一种在Linux平台上实现进程代码注入的方法,该方法能在目标程序的main函数执行之前完成特定的操作,对于调试等场景非常有用。通过修改__libc_start_main函数指针,可以在不影响原有程序运行的情况下插入自定义代码。

1821

被折叠的 条评论
为什么被折叠?



