как грамотно отхучить загрузку всех DLL ??

Тема в разделе "WASM.WIN32", создана пользователем deLight, 17 дек 2008.

  1. deLight

    deLight New Member

    Публикаций:
    0
    Регистрация:
    26 май 2008
    Сообщения:
    879
    Вопрос такой..
    Беру последний билд Оперы, ольку и по int3 на LoadLibraryW и LoadLibraryExW, но...
    после запуска и перед первым срабатыванием брейка оказывается что кучу DLL я уже пропустил
    (конкретно интересует загрузка mswsock). В импорте их естественно нет, каким образом тогда идет
    загрузка? Что я пропустил?

    thx.
     
  2. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Бряк на ntdll.LdrLoadDll().
     
  3. deLight

    deLight New Member

    Публикаций:
    0
    Регистрация:
    26 май 2008
    Сообщения:
    879
    спс, сделал вот так...
    Код (Text):
    1. #define FN_LDRLOAD  5
    2. ...
    3. int WINAPI _LdrLoadDll (
    4.             PWSTR DllPath,
    5.             PULONG DllCharacteristics,
    6.             PWSTR DllName,
    7.             HMODULE *DllHandle )
    8. {
    9.     fnLdrLoadDll OrigFn = (fnLdrLoadDll) OrigAddrs[FN_LDRLOAD];
    10.  
    11.     RestoreFn(FN_LDRLOAD); // восстановить преамбулу
    12.     int res = OrigFn(DllPath, DllCharacteristics, DllName, DllHandle);
    13.     int LastErr = ((fnGetLastError) (GetProcAddress(GetModuleHandle("kernel32.dll"),
    14.         "GetLastError")))();
    15.  
    16.     HookFn(FN_LDRLOAD); // хучим заново
    17.  
    18.     ((fnSetLastError) (GetProcAddress(GetModuleHandle("kernel32.dll"),
    19.         "SetLastError")))(LastErr);
    20.  
    21.     return res;
    22. }
    директории для поиска (DllPath) нормально, в DllName приходит мусор =//
    может что не так с прототипом?

    Abstract: хотя что может быть не так %))

    *LITTLE CONFUSED* =(
     
  4. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    это конечно жепь ебрило) было бы лучше создавать трамплин.
    там не PWSTR в имени, а PUNICODE_STRING (http://undocumented.ntinternals.net/UserMode/Undocumented%20Functions/Executable%20Images/LdrLoadDll.html). это UNICODE_STRING это структура с полями длина, максимальная длина и указатель на буффер.
     
  5. deLight

    deLight New Member

    Публикаций:
    0
    Регистрация:
    26 май 2008
    Сообщения:
    879
    xD

    спс.

    p.s. Cтыдно %) ... на таком сыпаться. Видно ужо пора спать))