поиск по классу окна это самое слабое звено, да и не про это вовсе код. я ж писал: идея всего топика: "как убить отладчик". Прога выше убивает отладчик! А уж каким образом вы этот отладчик обнаружите я не знаю пока (но ведь можно же как-то!) Может быть таким способом? Или честно поросить у пользователя PID процесса-отладчика. шутка. 2Asterix: Я не спрашивал как найти отладчик, я спросил как его закрыть. У меня тоже не всегда винда падает. А виснут да, всегда.
намедни читая Криса "точки останова на win32 API и противодействие им", заметил что олька после функции входа (или может после последнкй функции в секции я не проверял) только при пошаговой (!! если сходу нажать f9, то не сработает) трассировке ставит бряк, зачем она это делает мне не ясно, может кто-то пояснит?) ниже код который палит ольку, код рабочий (в смысле прямо с операционной) так не придерайтесь: Код (Text): .386 .model flat,stdcall option casemap:none include windows.inc include kernel32.inc include user32.inc includelib kernel32.lib includelib user32.lib include d:\masm32\macros\macros.asm .data? buf db 256 dup(?) .code start: mov esi,start-10 lea edi,buf mov ecx,20h cld rep movsb lea esi,buf mov al,[esi+01dh] .if al==0cch invoke MessageBox,0,chr$("Debug"),0,MB_OK .endif ret end start [add] похоже бряк появляется после пошагового выполнения комманды rep movsb может олька ещё где-то оставляет свои следы, по которым её можно разоблачить?
rain если мне не изменяет память, то это обходится вкл. опции Use hardware breakpoints to step or trace code =) а почему она ставит бряк? сам подумай) rep movsb - этож по сути цикл
Трассируем в оле код, доходим до rep movsb, нажимаем F8. Оля вынуждена, чтобы пройти этот код за раз, поставить точку останова. Если упомянутая выше опция выключена, то ставится обычная точка останова - 0xCC (int3) на первый байт после команды. После чего управление передаётся программе. Программа выполняет rep movsb, в ходе которого читает собственный код и, в частности, копирует байт 0xCC. Далее rep movsb заканчивается, следующая инструкция - как раз вставленный 0xCC, то есть int3, который генерирует исключение, перехватываемое отладчиком. Оля вновь получает управление и снимает точку останова, возвращая на место старый байт. Но при этом отладчик понятия не имеет, что перезаписанный байт куда-то скопировали!