отладка в неудобных местах

Тема в разделе "WASM.BEGINNERS", создана пользователем spencer, 3 июл 2006.

  1. spencer

    spencer New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2005
    Сообщения:
    277
    сперва извенюсь за топик - это всё начто нахватило фантазии )
    теперь к сути проблеммы
    При загрузке динамической библииотеки (и её выгрузке) автоматически вызывается процедура входа, это тот код на который указывает директива end. Часто нет необходимости в подобном коде и я в основ при сознании длл оставлял его пустым, однако вот возникла необходимость, более того код нужно както отлаживать но вот в этом и вопрос, я незнаю как...

    кпримеру имею вызов LoadLibrary, могу перескачить через него (исполльзую OllyDbg там это F8) однако в этом случае я пропущу тот стартовый код который будит выполнен при загрузке длл.

    как мне поступить в данном случае, начал ковырять LoadLibrary, это меня завело в ntdll.dll:LdrLoadDll. Буду ковырять и дальше однако возможно ктото подскажет способ полегче?
     
  2. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Ничего подобного. Такое произойдёт только если использовать LoadLibraryEx с флагом LOAD_LIBRARY_AS_DATAFILE, но это вообще отдельный случай. Про директиву end не понял.
     
  3. spencer

    spencer New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2005
    Сообщения:
    277
    ну так какже мне попасть на главную процедуру длл?

    я имел ввиду что после end стоит (во всяком случае в masm32) указатель на точкку входа в длл - главная процедура длл
     
  4. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    В настройках ollydbg выставь "break on new module (DLL)", затем как брякнется - на нужном модуле нажми правой кнопкой и выбери "follow entry", потом F2 на первой команде и запуск (F9)
     
  5. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Ставишь бряк на твоей DllMain.
     
  6. Broken Sword

    Broken Sword Robert

    Публикаций:
    0
    Регистрация:
    30 авг 2002
    Сообщения:
    433
    меняй первый байт твоей DllMain на CCh - брякнешся в любом отладчике
     
  7. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Кстати, так приходится делать в x64 с 32битными отладчиками, т.к. они трапаются где-то в недрах ядра, но никак не на EntryPoint.
     
  8. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Не обязательно. Можно ничего не указывать и потом использовать директиву /ENTRY.
     
  9. spencer

    spencer New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2005
    Сообщения:
    277
    всем большое спасибо, помогло )

    2 Quantum - знаю ))

    кстате, вот порылся, оказывается в конечном счёте все эти LoadLibrary's сводятся к LdrLoadDll, думаю стоит юзать её, правда пока чтото непалучается...
    в крайнем случае можно юзать LoadLibraryExW только строку ложить в юникоде, во всяком случае мне кажется так можно выиграть во времени...
     
  10. yuzvir

    yuzvir New Member

    Публикаций:
    0
    Регистрация:
    20 май 2005
    Сообщения:
    97
    а я специально loaddll для OllyDbg переписывал, чтобы он через LoadLibraryEx грузил =)
    hxxp://usar.pp.ru/loaddll.for.OllyDbg.rar