Как отладить дочерний процесс, который уже находится под отладкой - PullRequest
1 голос
/ 04 марта 2020

У меня есть два процесса (Linux ELF): процесс A является основным процессом, а B является дочерним процессом (A использует fork () для создания B). A также использует ptrace для отслеживания B (как какая-то песочница), перехватывающего инструкцию B int 3.

Я хочу использовать GDB для отладки процесса B. Когда я попытался GDB присоединить дочерний процесс B, он показывает ошибку, что B уже находится в состоянии отладки. Так есть ли у меня способ отладки дочернего процесса, который уже находится под другим «отладчиком»?

В моем случае, у A и B есть взаимодействия, я не могу напрямую исправить или переписать код в A, чтобы отключить функцию ptrace .

1 Ответ

0 голосов
/ 04 марта 2020

Так есть ли у меня способ отладки дочернего процесса, который уже находится под другим «отладчиком»?

Нет.

Наличие дочернего элемента, ptrace 'd его родителем, с нетривиальным взаимодействием между ними, является одним из немногих эффективных методов анти-отладки.

Для отладки B, вам придется запустить его без A песочницы оно и должно было бы воспроизвести взаимодействие между A и B путем «эмуляции» того, что обычно делает процесс A для обработки B через GDB.

...