Как стать автором
Обновить

Комментарии 10

Вы выбрали хорошую статью для перевода. Когда-то читал её в оригинале на www.codeproject.com — очень понравилось. Насколько я помню, меня только одно тогда опечалило — во второй части автор так толком и не прикрутил к своему отладчику дизассемблер, а с отладочной информацией работал через DbgHelp.DLL (последнее не плохо, просто хотелось бы какой-то авторской реализации с пояснениями). Хотя может я тогда что-то не дочитал — прошу прощения если так.

В любом случае — хорошо что такие переводы есть на Хабре, пишите пожалуйста ещё.
А теперь загадаю Вам загадку. Какие отладочные события придут отладчику когда отлаживаемый процесс запустит дочерний процесс с флагом SUSPENDED потом сделает в него инжект и создаст в нем поток через CreateRemoteThread? При условии что отлаживаемый процесс создавался с поддержкой отладки дочерних процессов.
Даю подсказку — create process для дочернего процесса Вы не получите никогда.
эм… стесняюсь спросить — к чему этот вопрос?
Да чисто на заметку. Писал тут недавно тоже отладочное ядро, и создавал объект процесса когда приходило событие create process. После чего неожиданно выяснилось, что оно не во всех случаях приходит. И в этом же случае не стоит ждать системного срабатывания на DbgBreakPoint, его тоже не будет. Поэтому можно прощелкать как момент создания дочернего процесса, так и его запуск.

Еще отмечу что под x64 в некоторых случаях код исключения приходит не EXCEPTION_BREAKPOINT, а STATUS_WX86_BREAKPOINT, ровно как и STATUS_WX86_SINGLE_STEP вместо EXCEPTION_SINGLE_STEP.
А ведь может получится неплохой антиотладочный приём при некоторых условиях…
В плашке над первым комментарием есть.
Спасибо
Никак не могу понять следующую вещь. 2 утверждения из статьи:
1) «Также отлачик может подключаться к различным процессам (в разных потоках);»
2) «Отлаживать можно лишь те процессы, которые были запущены из под отладчика.»
Для меня они выглядят немного противоречиво. Ведь подключаться к стороннему процессу и отлаживать его можно, как делают все отладчики. Но тогда мне не понятно второе утверждение.

Наверно, оно означает, что отладчик не сможет выяснить порождённые процессы отлаживаемой программы.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории