Внедрение процесса целиком

Тема в разделе "WASM.WIN32", создана пользователем drmist, 28 фев 2006.

  1. drmist

    drmist New Member

    Публикаций:
    0
    Регистрация:
    31 май 2005
    Сообщения:
    112
    Меня очень интересует проблема связанная со статьей http://www.wasm.ru/article.php?article=apihook_2, особенно с ее частью "Внедрение процесса целиком".



    Там предлогается вызвать LoadLibrary("kernel32.dll") и LoadLibrary("user32.dll") после начала выполнения инжектированного кода после вызова CreateRemoteThread.

    Поскольку данные библиотеки не обязанны быть подгруженны к целевому процессу.



    Но возникает вопрос - разве kernel32.dll не подгруженна как минимум ко всем юзермодным приложениям притом ко всем по одному и тому же адресу? Если нет - то мы не можем вызвать LoadLibrary, а если да - то не должны этого делать - dll уже подгружена.

    И второе - разве user32.dll обязанна грузится во всех приложениях по одинаковым адресам? Не следует ли дополнительно править таблицу импорта после ее загрузки?



    Просто не могу избавиться от чувства, что я чего-то не понимаю, объясните плз.
     
  2. CARDINAL

    CARDINAL Member

    Публикаций:
    0
    Регистрация:
    23 янв 2004
    Сообщения:
    551
    Адрес:
    Moscow
    drmist

    kernel32 может быть ине подгружена, если прога юзает только nativeapi, точнее ntdll, поскольку как я понял эта dll мапица в процес первой, то скорее всего её адрес можно таки ожидать в определенном месте.





    да вообщет этот нюанс был объяснен в Рихтере довольно подробно, так что совет почитать эту буку.
     
  3. tr1cker

    tr1cker New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2005
    Сообщения:
    20
    drmist, PETools в руки =)
     
  4. drmist

    drmist New Member

    Публикаций:
    0
    Регистрация:
    31 май 2005
    Сообщения:
    112
    tr1cker

    на удивление четкий ответ )))



    CARDINAL

    Ну если ты говоришь, что kernel32.dll может быть не подружена - значит вызывать LoadLibrary не совсем верно.

    Рихтера читал, но метсами - целиком нет времени и желания, я попробую найти то, о чем ты говоришь, но буду благодарен если главу подскажешь.



    Я так понял, что стандартные библиотеки действительно грузятся по фиксированным адресам, и занять ее скажем VirtualAlloc'ом или самопальной библиотекой не удастся - адрес будет уже занят. Действительно удивительный факт.
     
  5. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Не LoadLibrary, а LdrLoadDll из ntdll.dll
     
  6. tr1cker

    tr1cker New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2005
    Сообщения:
    20
    drmist, и чего же тут удивительного?
     
  7. CARDINAL

    CARDINAL Member

    Публикаций:
    0
    Регистрация:
    23 янв 2004
    Сообщения:
    551
    Адрес:
    Moscow
    drmist

    попробуй скомпилить ехек с базовым адресом равным ntdll.dll, и загрузить его. Почитай статьи Володи по упаковщикам, там загрузчик расписан, поищи другие статьи, коих в нете хватает, попробуй сам реально.