Отладка - CreateProcess под отладчиком

Я пытаюсь подключить отладчик (Ollydbg v1) к дочернему процессу, созданному CreateProcess в рамках другого отлаживаемого процесса, и получаю следующую ошибку: «Процесс уже находится в режиме отладки».

У меня вопрос: почему я не могу подключить отладчик к этому процессу и почему дочерний процесс находится в режиме отладки, хотя я еще не подключил отладчик, и что я могу сделать, чтобы создать процесс в обычном режиме.

Спасибо, Лорен.

РЕДАКТИРОВАТЬ:

  1. Я попытался подключить и другие отладчики, и все они выдали одно и то же сообщение

  2. Кроме того, я попытался создать дамп памяти дочернего процесса, и утилита procdump не удалась, потому что «ReadProcessMemory и / или WriteProcessMemory не удалось», и поэтому создал файл дампа размером 0 байт.


person Lauren Ottawa    schedule 02.05.2016    source источник
comment
Отладчики обычно различаются набором функций. Некоторые отладчики могут отлаживать только один процесс, другие могут автоматически подключаться к дочерним процессам. Я недостаточно хорошо знаю Ollydbg, какие у него ограничения, но вы можете попробовать Visual Studio или WinDbg. Вы также можете настроить систему для автоматического подключения отладчика к определенному процессу (см. Как: запустить отладчик автоматически для получения инструкций).   -  person IInspectable    schedule 02.05.2016
comment
@Inspectable, спасибо, я отредактировал свой вопрос, вы можете взглянуть?   -  person Lauren Ottawa    schedule 02.05.2016
comment
Вероятно, какой отладчик уже подключен к родительскому процессу, имеет большее значение, чем отладчик, который вы пытаетесь использовать в дочернем процессе. В зависимости от того, как был создан родительский процесс, дочерний процесс может автоматически присоединяться к тому же отладчику, что и родительский. Я не уверен, почему procdump не работает; возможно процесс приостановлен?   -  person Harry Johnston    schedule 03.05.2016
comment
Вы присоединяете OllyDbg к дочернему процессу. Но какой отладчик прикреплен к родительскому? Также OllyDbg или что-то еще?   -  person CherryDT    schedule 03.05.2016


Ответы (1)


Шестой аргумент CreateProcess - это dwCreationFlags, который может быть DEBUG_ONLY_THIS_PROCESS или DEBUG_PROCESS

DEBUG_ONLY_THIS_PROCESS 0x00000002

Вызывающий поток запускает и отлаживает новый процесс. Он может получать все связанные события отладки с помощью функции WaitForDebugEvent.

DEBUG_PROCESS 0x00000001

Вызывающий поток запускает и отлаживает новый процесс и все дочерние процессы, созданные новым процессом. Он может получать все связанные события отладки с помощью функции WaitForDebugEvent. Процесс, использующий DEBUG_PROCESS, становится корнем цепочки отладки. Это продолжается до тех пор, пока не будет создан другой процесс в цепочке с DEBUG_PROCESS. Если этот флаг объединен с DEBUG_ONLY_THIS_PROCESS, вызывающая программа отлаживает только новый процесс, а не дочерние процессы.

Аргумент lpProcessAttributes также принимает указатель на SECURITY_ATTRIBUTES, которая также может определять специальные разрешения безопасности для созданного процесса.

Я бы подключил CreateProcess и записал эти аргументы, чтобы узнать, используется ли какой-либо из них.

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

person GuidedHacking    schedule 20.04.2020