Не работает int3 в dll

Тема в разделе "WASM.BEGINNERS", создана пользователем Aspire, 15 ноя 2007.

  1. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    Не могу отловить исключение в длл подгружаемой к стороннему процессу.
    Отладчик вызывается на иключение, а не на брикпойнт.
     
  2. MagnumGT

    MagnumGT New Member

    Публикаций:
    0
    Регистрация:
    9 ноя 2007
    Сообщения:
    122
    Все в тумане
    ничего не разобрать
    сейчас карты разложу, чтоб наверняка
     
  3. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    Пипец... Я хочу отладить процесс. Ставлю в исходнике прерывание int3 в первой процедуре после DLL_PROCESS_ATTACH. На этом месте выполнения кода, по идее, должен запуститься OllyDbg для отладки, но он запускается не на брикпойнте, а на исключении, которое происходит дальше, поскакивая int3. Длл подгружается к другому запущенному процессу (для отладки - это notepad.exe) через CreateRemoteThread.
    Что еще...А! Виндовс ХР.
     
  4. MagnumGT

    MagnumGT New Member

    Публикаций:
    0
    Регистрация:
    9 ноя 2007
    Сообщения:
    122
    У меня такого бага нет
    Поэтому код в студию!
     
  5. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    Вечерком выложу.
     
  6. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    Короче, не важно какой код - любой. Ставлю int3 в исходнике длл в процедуре обработки DLL_PROCESS_ATTACH, в приложении возникает ошибка инициализации если библиотека связана статически и просто исключение, если ее подгружать. Какой-то баг, который мне мешает отладить мою длл. OllyDbg стоит обработчиком исключний по умолчанию.
     
  7. God_Father

    God_Father New Member

    Публикаций:
    0
    Регистрация:
    5 авг 2007
    Сообщения:
    99
    тоесть я так понял ты пишешь в исходник длл после длл процесс аттач int3 чтобы прога загрузилась в отладчик
    Кароче на таких "багах" основана часть одной весьма распространённой защиты какой-говорить не буду
    А теперь смотри главный прикол
    При попытке подгрузить олли прогу с длл в которой есть
    DLL_PROCESS_ATTACH прога не подрывается на главной
    One-Shot бряке, а сразу начинает выполнение с
    DLL_PROCESS_ATTACH тоесть сначала выполняется код dll,
    а потом exe

    Например моя антиотладочная фишка
    Самая что ни на есть простая демонстрирую
    попробуй прогу запустить без отладчика и с отладчиком
     
  8. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    Ну так именно там я и ставлю int3, но отладчик не подгружается.
    Какой баг ты имеешь ввиду? У тебя в коде подгрузки длл стоит ф-ция IsDebuggerPresent, что странного в том, что она выполняется при загрузке длл? В этом то странного, как раз ничего и нет. Мне странно, что не срабатыват int3.
    Или, может, я тебя не понял?

    [add]
    int3 я пишу в исходнике длл, а не экзешника.
     
  9. Mental_Mirror

    Mental_Mirror New Member

    Публикаций:
    0
    Регистрация:
    7 май 2007
    Сообщения:
    431
    Aspire
    Дело в том, что все исключения которые возникают внутри функции DLLMain обрабатываются своим внутренним обработчиком. При этом отладочное исключение относится туда же. Логика этого обработчика такова - если возникает любое исключение на стадии инициализации модуля (в DLLMain), то модуль выгружается и LoadLibrary возвращает FALSE. А отладочные сообщения или другие исключения могут обрабатываться отладчиком если они передаются ему финальным обработчиком. Чтобы все таки поймать исключение (или бряк) в DLLMain - в Олли атачимся к нужному процессу (к процессу куда инжектится DLL), при этом в настройках Олли - Debugging Options (Alt + O) -> Events -> ставим галку Break on new module (DLL), другие галки убираем, чтобы лишний раз не останавливаться. После этого просто продолжает исполнение кода. В этом случае Olly остановиться на исключении, т.к. любое исключение будет обрабатываться прежде всего Олли, а уже потом может быть будет передано в функцию DllMainExceptionHandler.
     
  10. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    Mental_Mirror
    Сенкс!