Под отладчиком - PullRequest
       10

Под отладчиком

1 голос
/ 09 мая 2009

Как мне обнаружить в моей программе, что она запускается под отладчиком? Я знаю, что это, кажется, указывает на то, что я пытаюсь сделать то, что не должен, и это слишком грязно. Я думаю, что это интересный вопрос. В частности, есть ли способ сделать это в среде POSIX? Например, используя sigaction (2), чтобы обнаружить, что какой-то обработчик установлен? Еще хуже мысль; Есть ли какой-нибудь встроенный ассемблерный код, который я мог бы использовать в архитектуре x86?

Пока мы это обсуждаем, возможно ли в конечном итоге запустить отладчик, такой как gdb (1), и прервать работу в том месте, где вы выполняете этот возможный взлом. Спасибо за любые грязные однострочники или маловероятные ссылки на стандарты, связанные с этим.

Ответы [ 2 ]

3 голосов
/ 09 мая 2009

Помогает ли эта статья ( ссылка на архив )?

Он предлагает, помимо прочего:

  • файловые дескрипторы, вытекающие из родительского процесса
  • переменные среды ($ _)
  • состояние процесса (getsid() и т. Д.).

Обратите внимание, что большинство (если не все) полагаются на отладчик, запускающий отлаживаемый процесс. Они не так эффективны, если отладчик подключен к процессу, который уже запущен.

1 голос
/ 09 мая 2009

Нет надежного способа определить, что вы работаете под отладчиком. Это потому, что отладчик может использовать любое количество методов для отладки кода, некоторые из которых почти наверняка не будут обнаружены вашим методом.

У меня вопрос, почему тебя это волнует? Если вы не пытаетесь что-то скрыть: -)

...