Pull to refresh

Comments 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) «Отлаживать можно лишь те процессы, которые были запущены из под отладчика.»
Для меня они выглядят немного противоречиво. Ведь подключаться к стороннему процессу и отлаживать его можно, как делают все отладчики. Но тогда мне не понятно второе утверждение.

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

Sign up to leave a comment.

Articles