Переименовать ptrace funct что-нибудь еще? Как? - PullRequest
0 голосов
/ 14 апреля 2011

В коде я бы использовал

#include <sys/types.h>

#include <sys/ptrace.h>

ptrace(PT_DENY_ATTACH, 0, 0, 0);

, чтобы запретить присоединение к процессу.Мне было интересно, есть ли способ переименовать «ptrace ()» во что-то менее очевидное.Я попытался скопировать ptrace.h в свой собственный заголовочный файл и изменить int ptrace на что-то другое, но это просто не удалось с неопределенной ошибкой символа.И я не могу найти никаких других ссылок на функцию: \

Заранее спасибо за что-либо по этому вопросу.

Ответы [ 2 ]

3 голосов
/ 14 апреля 2011

ptrace - системный вызов. Даже если вы переименуете эту функцию в своем коде C, фактический вызов ptrace все равно придется выполнить, поэтому он будет виден, например, на выходе strace (со всеми параметрами).

Использование трюка с макросом сделает его немного менее очевидным (вам понадобится два greps вместо одного, чтобы найти его в базе кода). Так что я не вижу смысла. (Трюк с макросом ничего не изменит в скомпилированном коде.)

Вы можете попробовать запустить сам системный вызов с помощью syscall, но это большая работа и все равно не будет ничего скрывать до strace до этого момента. В GDB было бы немного сложнее прорваться туда.

Итак, ИМО: то, что вы пытаетесь сделать, не стоит усилий.

0 голосов
/ 14 апреля 2011

Используйте #define в вашем заголовке для создания нового макроса:

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

...