使用
-pieoption 构建共享库似乎可以为您提供所需的一切:
#include <stdio.h>int foo(){ printf("in %s %s:%dn", __func__, __FILE__, __LINE__); return 42; }int main() { printf("in %s %s:%dn", __func__, __FILE__, __LINE__); return foo(); }#include <stdio.h>extern int foo(void);int main() { printf("in %s %s:%dn", __func__, __FILE__, __LINE__); return foo(); }$ gcc -fPIC -pie -o pie.so pie.c -Wl,-E$ gcc main.c ./pie.so$ ./pie.soin main pie.c:9in foo pie.c:4$ ./a.outin main main.c:6in foo pie.c:4$
PS glibc
write(3)通过系统调用实现,因为它没有别的地方可以调用(它已经是 最低 级别了)。这与能够执行无关
libc.so.6。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)