как загрузит свою dll до запуска процесса ?

Тема в разделе "WASM.WIN32", создана пользователем kropalik, 9 дек 2005.

  1. kropalik

    kropalik New Member

    Публикаций:
    0
    Регистрация:
    27 апр 2005
    Сообщения:
    155
    Адрес:
    msk
    сейчас делается так

    в exe добавляется такой код:



    push offset dll_name

    call LoadLibraryA

    jmp real_entry_point

    dll_name db test.dll,0



    вот попалась прога которая

    проверяет свою контрольную сумму.

    вопрос: как выполнить аналогичные

    действия не трогая exe ?
     
  2. SteelRat

    SteelRat New Member

    Публикаций:
    0
    Регистрация:
    26 авг 2004
    Сообщения:
    409
    Когда ДЛЛ загружается, выполняется код точки входа в ДЛЛ, там и поставь проверку самой себя :)
     
  3. SteelRat

    SteelRat New Member

    Публикаций:
    0
    Регистрация:
    26 авг 2004
    Сообщения:
    409
    А, и забыл сказать этот код выполняется до запуска .exe если прилудить статически. Попробуй расковырять .exe и добаить в секцию импорта свою ДЛЛ
     
  4. kropalik

    kropalik New Member

    Публикаций:
    0
    Регистрация:
    27 апр 2005
    Сообщения:
    155
    Адрес:
    msk
    проблема не в этом. все нормально работает

    с большинством exe. кроме случая когда

    сам exe проверяет себя и видит что его

    код модифицирован и отказывается работать.

    если прикрутить статически то все равно

    контрольная сумма изменится.

    я думал модифицировать какую нибудь

    системную dll таким образом (добавить

    код загрузки test.dll) или может есть

    варианты лучше ?
     
  5. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"
    Пропиши код загрузки длл на точку входа .exe, а в самой длл восстанавливай оригинальные байты на точке входа.
     
  6. kropalik

    kropalik New Member

    Публикаций:
    0
    Регистрация:
    27 апр 2005
    Сообщения:
    155
    Адрес:
    msk
    пробовал. на самом деле проверяется

    содержимое exe на диске. в памяти можно

    модифицировать - все ok. а исправлять на

    диске тоже непонятно как (файл используется).

    шас пробую перехватить GetModuleFilename

    GetCommandLine и подменить возвращаемое

    имя файла.
     
  7. slow

    slow New Member

    Публикаций:
    0
    Регистрация:
    27 дек 2004
    Сообщения:
    615
    а если прикрутить dll в winlogon\notify и перехватить ZwResumeThread или прописать в AppInit_Dlls свою dll в которой грузить нужную тебе библиотеку?
     
  8. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    совершенно элементарно загрузить свою ДЛЛ посредством

    loader'а, который стартует target exe по типу того как

    это делает Armadillo, т.е. с теми же выкрутасами(0EBh,0FEh на вход и т.д.)

    для универсальности метода
     
  9. kropalik

    kropalik New Member

    Публикаций:
    0
    Регистрация:
    27 апр 2005
    Сообщения:
    155
    Адрес:
    msk
    >> прикрутить dll в winlogon\notify

    нужно загружать только для одного процесса

    если я правильно понял таким методом будет

    грузиться во все процессы ?



    >> который стартует target exe по типу того как

    >> это делает Armadillo

    да я думал нечто подобное, только не понял

    как создать процесс но поток не запускать

    (потом вызвать ResumeThread) ?



    пока сделал подмену результата GetModuleFileName

    только приходится иметь 2 разных exe

    (оригинальный и патченый) думаю

    перехватить ReadFile...
     
  10. slow

    slow New Member

    Публикаций:
    0
    Регистрация:
    27 дек 2004
    Сообщения:
    615
    если прописать в AppInit_DLLs то будет грузиться ко всем, которые грузят user32.dll. собсно в чем проблема, имя файла нужного процесса известно, в процедуре инициализации длл пишеш проверку на то в каком ты процессе и если не в том - то выгружаеш длл



    как создать процесс но не запускать поток: смотри пример 6.2 к Гари Нэббету Native API Reference, примеры (и книгу) можно скачать из сети, если нужен линк - пиши slow at programist pt ru



    прикрутка в winlogon\notify позв загрузить длл раньше всех юзеровых процессов. дальше мона похукать ZwCreateProcess(может не ее, я сейчас точно не помню) и в

    нужный процесс внедрить свою dll.
     
  11. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    kropalik





    Исследуй работу Армадилло во время запуска второго процесса и поймешь как, для меня после этого сделать свою реализацию

    труда не составило