-1

在代码中,我会使用

#include <sys/types.h>

#include <sys/ptrace.h>

ptrace(PT_DENY_ATTACH, 0, 0, 0);

拒绝附加到该过程。我想知道是否有办法将“ptrace()”重命名为不太明显的名称。我尝试将 ptrace.h 复制到我自己的头文件中并将 int ptrace 更改为其他内容,但这只是失败并出现未定义的符号错误。而且我找不到对该函数的任何其他引用:\

在此先感谢您提供的任何信息。

4

2 回答 2

3

ptrace是系统调用。即使您在C代码中重命名了该函数,仍然必须进行实际ptrace调用,因此它将在例如strace输出中可见(带有所有参数)。

使用宏技巧只会让它变得不太明显(你需要两个greps而不是一个才能在你的代码库中找到它)。所以我真的不明白这一点。(宏技巧不会对已编译的代码进行任何更改。)

您可以尝试使用 自己运行实际的系统调用syscall,但这需要大量工作,并且在此之前仍然不会隐藏任何内容strace。这会使在 gdb 中的破解变得更加困难。

所以海事组织:你试图做的事情不值得付出努力。

于 2011-04-14T10:26:05.950 回答
-1

在标题中使用#define 创建一个新宏:

#define MyTrace(a,b,c,d) ptrace(a,b,c,d)

于 2011-04-14T10:21:30.940 回答