user32 не проецируется в мой процесс

Тема в разделе "WASM.BEGINNERS", создана пользователем goga2007, 2 июн 2007.

  1. goga2007

    goga2007 New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2007
    Сообщения:
    184
    всем привет. делаю первые шаги(..ващета еще ползаю) в изучении вирмейкинга. написал тут койкак код, который получает адрес кернела, затем используя GetProcAddress получает адреса АПИ. пока не переставил винду все работало. щас же делаю push [adres of 'user32'], call GetModuleHandleA и на выходе в EAX лежит НОЛЬ. опытным путем(при непосредственном участии OLLYDBG) установил, что он не вызывает те библы, которые не проецируются в адрессное пространство моего процесса.. но вот вопрос почему же раньше проецирывалась (user32), а теперь -нет.код я не менял!!!
     
  2. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    А поменять GetModuleHandleA на LoadLibraryA никак?
     
  3. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    зависит от билда винды, но лучше как сказал great ксли GetModuleHandle вернул 0, то вызывать LoadLibrary
     
  4. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Проще сразу LoadLibrary, т.к. она всё равно просматривает сначала список загруженных библиотек.
     
  5. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    IceStudent
    +1, я так и сказал. Вообще в чем прикол дергать GetModuleHandle если LoadLibrary сама все сделает =\
     
  6. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    LoadLibrary по любой увеличивает счетчик ссылок. В этом и прикол дергания GetModuleHandle, но это только в том случае, когда доподлинно известно, что либа уже подгружена.
     
  7. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    Great
    в вирусологии да - надо сразу LoadLibrary. А вообще - GetModuleHandle позволяет узнать, загружена ли библиотека. Мало ли для чего, но это может пригодиться. Кроме того, LoadLibrary увеличивает количество загрузок библиотеки. Для этого есть спец. счетчик. Таким образом, сколько раз ты сделал LoadLibrary, столько же раз и должен сделать FreeLibrary. Поэтому, если библиотеку надо будет потом освободить, то лучше вызвывать GetModuleHandle.
     
  8. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    MSoft
    Юзерную либо освобождать вряд-ли придется.
    Что значит надо? Все зависит от того, что необходимо реализовать. В последнем своем вире я устанавливал перехват MessageBoxA, но при условии, что она уже загружена. Что было б, если я вызывал LoadLibrary вместо GetModuleHandle?
     
  9. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Twister
    Да, про счётчик я забыл.
     
  10. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    А не юзерную? Я ж сказал, если надо будет освободить, а библиотеки-то разные бывают - не только ж юзер32.

    Ну оговорился. "Надо" = "лучше" или "желательно", т.к. не все вири как у тебя и, как правило, либы нужны для использования функций, а не для их перехвата, а уж тем более MessagеBox'а.

    Даже если сделать поправку на перехват, то я, к примеру, в любом случае подгружаю библлиотеку и делаю перехват. Это связано с тем, что перехват надо сделать в любом случае, а библиотека может быть загружена и потом динамически. Чтобы не отлавливать такие моменты и не делать код дополнительно сложным и запутанным, я делаю перехваты сразу и на все.
     
  11. goga2007

    goga2007 New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2007
    Сообщения:
    184
    а есть ли способ вызвать только ту библу, которая мне нужна в данный момент? ...а то у меня при использовании LoadLibraryA с параметром 'user32' подгружается очень много библиотек(смотрел в олли).
     
  12. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    видать, подгружаются только те либы, которые нужные для работы самой user32, поэтому ответ нет!
     
  13. ntcdm

    ntcdm New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2007
    Сообщения:
    247
    LoadLibraryEx(
    LPCTSTR lpFileName,
    HANDLE hFile,
    DWORD dwFlags)


    dwFlags = DONT_RESOLVE_DLL_REFERENCES
    If this value is used, and the executable module is a DLL, the system does not call DllMain for process and thread initialization and termination. Also, the system does not load additional executable modules that are referenced by the specified module.
     
  14. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    хм... и в чем прикол такой загрузки? Руками обрабатывать импорты или зачем? Просто интересует, зачем такое ввели и для чего оно может быть использовано
     
  15. dr_dred

    dr_dred Сергей

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    301
    Адрес:
    Russia
    MSoft
    меньше памяти уходит. Можно использовать для исследования файла, скажем, на секцию русурсов.