Вопрос такой.. Беру последний билд Оперы, ольку и по int3 на LoadLibraryW и LoadLibraryExW, но... после запуска и перед первым срабатыванием брейка оказывается что кучу DLL я уже пропустил (конкретно интересует загрузка mswsock). В импорте их естественно нет, каким образом тогда идет загрузка? Что я пропустил? thx.
спс, сделал вот так... Код (Text): #define FN_LDRLOAD 5 ... int WINAPI _LdrLoadDll ( PWSTR DllPath, PULONG DllCharacteristics, PWSTR DllName, HMODULE *DllHandle ) { fnLdrLoadDll OrigFn = (fnLdrLoadDll) OrigAddrs[FN_LDRLOAD]; RestoreFn(FN_LDRLOAD); // восстановить преамбулу int res = OrigFn(DllPath, DllCharacteristics, DllName, DllHandle); int LastErr = ((fnGetLastError) (GetProcAddress(GetModuleHandle("kernel32.dll"), "GetLastError")))(); HookFn(FN_LDRLOAD); // хучим заново ((fnSetLastError) (GetProcAddress(GetModuleHandle("kernel32.dll"), "SetLastError")))(LastErr); return res; } директории для поиска (DllPath) нормально, в DllName приходит мусор =// может что не так с прототипом? Abstract: хотя что может быть не так %)) *LITTLE CONFUSED* =(
это конечно жепь ебрило) было бы лучше создавать трамплин. там не PWSTR в имени, а PUNICODE_STRING (http://undocumented.ntinternals.net/UserMode/Undocumented%20Functions/Executable%20Images/LdrLoadDll.html). это UNICODE_STRING это структура с полями длина, максимальная длина и указатель на буффер.