2013-10-06 2 views
12

я пытаюсь прикрепить программу с БГД, но он возвращает меня:GDB операция ptrace не допускается

Установка для обработки 29139 Не удалось подключиться к процессу. Если ваш uid соответствует uid целевого процесса , проверьте настройку/proc/sys/kernel/yama/ptrace_scope или повторите попытку как пользователь root. Для получения дополнительной информации см. /Etc/sysctl.d/10-ptrace.conf ptrace: операция не разрешена.

edb-debugger возвращает «Не удалось подключиться к процессу, проверьте привилегии и повторите попытку».

Strace возвращает "прикрепиться: ptrace (PTRACE_ATTACH, ...): Операция не допускается"

я изменил "kernel.yama.ptrace_scope" 1 в 0 и «/ Труды/SYS/ядро ​​/ Яма/ptrace_scope "1 в 0 и пытался "установить среды LD_PRELOAD =/ptrace.so" с этим:.

#include <stdio.h> 
int ptrace(int i, int j, int k, int l) 
{ 
    printf(" ptrace(%i, %i, %i, %i), returning -1\n", i, j, k, l); 
    return 0; 
} 

, но она по-прежнему возвращает ту же ошибку. как я могу прикрепить его к отладчикам?

ответ

0

Я не знаю, что вы делаете с LD_PRELOAD или функцией ptrace.

Почему бы вам не попробовать подключить gdb к очень простой программе? Создайте программу, которая просто многократно печатает Hello или что-то еще, и используйте gdb -pid [hello program PID] для присоединения к ней.

Если это не работает, у вас действительно есть проблема.

Другой вопрос - это идентификатор пользователя. Является ли программа, которую вы трассируете, настраивается на другой UID? Если это так, вы не можете использовать его, если вы не используете один и тот же идентификатор пользователя или root.

+0

это attachs простые программы, но я пытаюсь прикрепите файл crackme. он имеет защиту от отладки [как это] (http://xorl.wordpress.com/2009/01/01/quick-anti-debugging-trick-for-gdb/). – user2850750

+0

@ user2850750: Я добавил еще немного ответа. –

+0

Я пробовал это как корень – user2850750

17

Это связано с упрочнением ядра в Linux; Вы можете отключить это поведение echo 0 > /proc/sys/kernel/yama/ptrace_scope или изменить его в /etc/sysctl.d/10-ptrace.conf

Смотрите также this article about it in Fedora 22 (со ссылками на документацию) и this comment thread about Ubuntu и.

2

Не действительно решения выше потребительной дело, но у меня была эта проблема:

Проблема: Случилось так, что я начал свою программу с sudo, поэтому при запуске GDB он дает мне ptrace: Operation not permitted.

Решение: sudo gdb ...

0

Может быть кто-то прикрепил этот процесс с помощью GDB.

  • ps -ef | grep gdb

не может gdb дважды подключить тот же процесс.

9

Если вы используете Docker, вы, вероятно, понадобится следующие варианты:

docker run --cap-add=SYS_PTRACE --security-opt seccomp=unconfined 
0

я столкнулся с той же проблемой и пытаются много решения, но в конце концов, я нашел решение, но на самом деле я не» Знаю, в чем проблема. Сначала я изменил значение ptrace_conf и зарегистрировался в Ubuntu в качестве корня, но проблема все еще появляется. Но самое странное, что произошло это GDB показал мне сообщение, которое говорит:

Could not attach to process. If your uid matches the uid of the target process, check the setting of /proc/sys/kernel/yama/ptrace_scope, or try again as the root user.
For more details, see /etc/sysctl.d/10-ptrace.conf warning: process 3767 is already traced by process 3755 ptrace: Operation not permitted.

С помощью команды пс терминала, процесс 3755 не был указан.

Я нашел процесс 3755 в/proc/$ pid, но я не понимаю, что это было!

Наконец, я удалил целевой файл (foo.c), который я пытаюсь подключить к нему vid gdb и программу tracer c, используя Syscall PTRACE_ATTACH, а в другой папке я создал другую c-программу и скомпилировал ее.

проблема решена, и мне было разрешено подключаться к другому процессу либо с помощью gsb или ptrace_attach syscall.

(gdb) attach 4416

Attaching to process 4416

и я посылаю много сигналов для обработки 4416. Я тестировал как с помощью GDB и ptrace, оба они работают корректно.

на самом деле я не знаю, проблема того, что было, но я думаю, что это не ошибка в Ubuntu, как много сайтов ссылались на него, такие https://askubuntu.com/questions/143561/why-wont-strace-gdb-attach-to-a-process-even-though-im-root

Смежные вопросы