在代码中,我会使用
#include <sys/types.h>
#include <sys/ptrace.h>
ptrace(PT_DENY_ATTACH, 0, 0, 0);
拒绝附加到该过程。我想知道是否有办法将“ptrace()”重命名为不太明显的名称。我尝试将 ptrace.h 复制到我自己的头文件中并将 int ptrace 更改为其他内容,但这只是失败并出现未定义的符号错误。而且我找不到对该函数的任何其他引用:\
在此先感谢您提供的任何信息。
在代码中,我会使用
#include <sys/types.h>
#include <sys/ptrace.h>
ptrace(PT_DENY_ATTACH, 0, 0, 0);
拒绝附加到该过程。我想知道是否有办法将“ptrace()”重命名为不太明显的名称。我尝试将 ptrace.h 复制到我自己的头文件中并将 int ptrace 更改为其他内容,但这只是失败并出现未定义的符号错误。而且我找不到对该函数的任何其他引用:\
在此先感谢您提供的任何信息。
ptrace
是系统调用。即使您在C
代码中重命名了该函数,仍然必须进行实际ptrace
调用,因此它将在例如strace
输出中可见(带有所有参数)。
使用宏技巧只会让它变得不太明显(你需要两个greps
而不是一个才能在你的代码库中找到它)。所以我真的不明白这一点。(宏技巧不会对已编译的代码进行任何更改。)
您可以尝试使用 自己运行实际的系统调用syscall
,但这需要大量工作,并且在此之前仍然不会隐藏任何内容strace
。这会使在 gdb 中的破解变得更加困难。
所以海事组织:你试图做的事情不值得付出努力。
在标题中使用#define 创建一个新宏:
#define MyTrace(a,b,c,d) ptrace(a,b,c,d)