Доброго всем времени суток! Вот с какой проблемой я сегодня столкнулся: Беру процесс под отладку (с помощью DbgUiConnectToDbg и DbgUiDebugActiveProcess). Все хорошо. Пытаюсь найти у себя в таблице хэндлов DebugObject - его там нету. Открываю ProcessExplorer Руссиновича - тоже самое. Запускаю Windows Object Explorer от Four-F, захожу в директорию "ObjectTypes", два раза щелкаю по DebugObject, вижу надпись ObjectCount: 1; HandleCount: 1. Ищу все Debug-объекты - результат нулевой. Завершаю работу своей программы - отлаживаемый процесс тоже закрывается. Подскажите, куда делся DebugObject? ps WinXP SP1
Вижу просмотров топика много, а ответов нет. Ни чего удивительного - я и сам в шоке со всего этого. Все что я сейчас скажу, скорее всего чистая бредятина, но все же: а не может ли это случиться из-за того, что программа на VB? Ведь тот же самый код на Delphi прекрасно работает и DebugObject прекрасно создается?...
Вообще ерунда получается. Вот, накатал прогу на MASMе, но DebugObject-а все нет и WinObjEx ни чего не находит (поиск объектов типа DebugObject по критерию *), хотя говорит, что в системе есть один DebugObject и один хэндл к нему: Код (Text): .386 .model flat,stdcall include kernel32.inc includelib kernel32.lib include windows.inc .data @ntdll db "ntdll.dll",0 @DbgUiConnectToDbg db "DbgUiConnectToDbg",0 @DbgUiDebugActiveProcess db "DbgUiDebugActiveProcess",0 _DbgUiConnectToDbg dd 00000000h _DbgUiDebugActiveProcess dd 00000000h .code Start: invoke GetModuleHandle,addr @ntdll push eax invoke GetProcAddress,eax,addr @DbgUiConnectToDbg mov _DbgUiConnectToDbg,eax pop eax invoke GetProcAddress,eax,addr @DbgUiDebugActiveProcess mov _DbgUiDebugActiveProcess,eax call _DbgUiConnectToDbg ;Подключаемся к отладке, все ок. invoke OpenProcess,PROCESS_ALL_ACCESS,0,2036 ;Сюда ставим любой валидный PID. push eax call _DbgUiDebugActiveProcess ;Аттачимся к процессу - тоже все ок. jmp $ ;Зацикливаемся, чтобы было время поискать DebugObject. xor eax,eax invoke ExitProcess,eax ;После насильственного завершения программы завершается и отлаживаемый процесс! End Start В системе я под правами админа. Тогда становится вообще непонятно...
Гм... Попробовал на другой тачке, открыл OllyDbg, взял первый попавшийся процесс под отладку, но в "недрах" Оли нет хэндла Debug-объекта. История повторяется.
Вообщем, оказывается Руссинович нагло врет! Точнее врет его ProcessExplorer. Не верьте ему! Он просто не показывает хэндлы Debug-объектов. Я и подумать не мог что так обстоят дела. Сегодня воспользовался своей же собственной программойи увидел - DebugObject преспокойно "висит в недрах" процесса. Так что тему можно считать закрытой...