在代码中,我会使用
#include <sys/types.h>
#include <sys/ptrace.h>
ptrace(PT_DENY_ATTACH, 0, 0, 0);
拒绝附加到流程。我想知道是否有办法将“ptrace()”重命名为不太明显的东西。我尝试将ptrace.h复制到我自己的头文件中并将int ptrace更改为其他内容,但是因为未定义的符号错误而失败了。我找不到任何其他函数的引用:\
提前感谢您的任何事情。
答案 0 :(得分:3)
ptrace
是系统调用。即使您在C
代码中重命名了该功能,仍然必须进行实际的ptrace
调用,因此例如strace
输出(包含所有参数)
使用宏技巧只会使它显得不那么明显(你需要两个greps
而不是一个才能在你的代码库中找到它)。所以我真的没有看到这一点。 (宏技巧不会改变编译代码的任何内容。)
您可以尝试使用syscall
自己运行实际的系统调用,但这是很多工作,到目前为止仍然不会向strace
隐藏任何内容。这将使得在gdb中打破它变得更加困难。
所以IMO:你想做的事情是不值得的。
答案 1 :(得分:-1)
在标题中使用#define创建新的宏:
#define MyTrace(a,b,c,d) ptrace(a,b,c,d)