Code:
[03:01:31]: Logging started at 2010-02-27
[03:01:31]: In DllMain of ManualMap [.\MMDll.cpp] @ 36
[03:01:31]: ManualMap Attached [.\MMDll.cpp] @ 45
[03:01:32]: ManualMap MapModule, instance a new ManualMap to load: gdh.dll [.\MMDll.cpp] @ 62
<<< my dll
[03:01:32]: in ManualMap::Load with pid 4876 to load gdh.dll [..\Main\ManualMap.cpp] @ 53
[03:01:32]: Initialize some data: m_module, m_pid [..\Main\ManualMap.cpp] @ 58
[03:01:32]: openprocess first fail [..\Main\ManualMap.cpp] @ 92
[03:01:32]: sucess at open process the second time [..\Main\ManualMap.cpp] @ 114
[03:01:32]: stubBase is 0x69664768 [..\Main\ManualMap.cpp] @ 122
[03:01:32]: Fix imports for KERNEL32.dll [..\Main\ManualMap.cpp] @ 407
[03:01:32]: Fix imports for USER32.dll [..\Main\ManualMap.cpp] @ 407
[03:01:32]: Fix imports for dbghelp.dll [..\Main\ManualMap.cpp] @ 407
[03:01:32]: recursively load module: dbghelp.dll [..\Main\ManualMap.cpp] @ 410
<<< recursively loading another dll
[03:01:32]: in ManualMap::Load with pid 4876 to load dbghelp.dll [..\Main\ManualMap.cpp] @ 53
[03:01:32]: Initialize some data: m_module, m_pid [..\Main\ManualMap.cpp] @ 58
[03:01:32]: stubBase is 0x69730304 [..\Main\ManualMap.cpp] @ 122
[03:01:32]: Fix imports for msvcrt.dll [..\Main\ManualMap.cpp] @ 407
[03:01:32]: Fix imports for KERNEL32.dll [..\Main\ManualMap.cpp] @ 407
[03:01:32]: Fix imports for ADVAPI32.dll [..\Main\ManualMap.cpp] @ 407
[03:01:32]: Fix imports for RPCRT4.dll [..\Main\ManualMap.cpp] @ 407
[03:01:32]: import table fixed [..\Main\ManualMap.cpp] @ 143
[03:01:32]: successfully loaded : dbghelp.dll [..\Main\ManualMap.cpp] @ 157
[03:01:32]: Map and execute for dbghelp.dll [..\Main\ManualMap.cpp] @ 165
[03:01:32]: mapped to remote process for dbghelp.dll [..\Main\ManualMap.cpp] @ 171
[03:01:32]: dbghelp.dll has no tls section [..\Main\ManualMap.cpp] @ 182
[03:01:32]: run dllmain And/or tls callback for dbghelp.dll [..\Main\ManualMap.cpp] @ 205
<<< after mapping, call tls callbacks and DllMain
[03:01:32]: stubase at 0x4280000 dll entry at: 0x49AC314 [..\Main\ManualMap.cpp] @ 206
[03:01:32]: dbghelp.dll finished loading dllmain and/or callback [..\Main\ManualMap.cpp] @ 212
[03:01:32]: Fix imports for d3d9.dll [..\Main\ManualMap.cpp] @ 407
[03:01:32]: import table fixed [..\Main\ManualMap.cpp] @ 143
[03:01:32]: successfully loaded : gdh.dll [..\Main\ManualMap.cpp] @ 157
<<< my dll is mapped,
[03:01:32]: gdh.dll is loaded, redirect some module functions to use ManualMap [.\MMDll.cpp] @ 74 <<< setup up some monitoring functions
[03:01:32]: (GMFN): 757C14FA [.\MMDll.cpp] @ 81 << GetModuleFileName
[03:01:32]: (GPA): 757C1202 [.\MMDll.cpp] @ 82 << GetProcAddress
[03:01:32]: (GMH): 757C1225 [.\MMDll.cpp] @ 83 << GetModuleHandle
[03:01:32]: (GLL): 757C4BC6 [.\MMDll.cpp] @ 84 << LoadLibrary
[03:01:32]: Map and execute for gdh.dll [..\Main\ManualMap.cpp] @ 165 << call tls callbacks and DllMain
[03:01:32]: mapped to remote process for gdh.dll [..\Main\ManualMap.cpp] @ 171
[03:01:32]: gdh.dll has tls section callback(s) [..\Main\ManualMap.cpp] @ 185
[03:01:32]: tls slot index assigned to 60 max is: 4294967295 [..\Main\ManualMap.cpp] @ 187 <<< manually set _tls_index value
[03:01:32]: run dllmain And/or tls callback for gdh.dll [..\Main\ManualMap.cpp] @ 205 <<< run PIMAGE_TLS_CALLBACKS array
[03:01:32]: stubase at 0x4270000 dll entry at: 0x479DA20 [..\Main\ManualMap.cpp] @ 206
[03:01:33]: MyGPA GetProcAddress2 to check func: FlsAlloc [.\MMDll.cpp] @ 163 <<< these should be some callbacks relating with CRT
[03:01:33]: kernel:GetProcAddress for FlsAlloc is at 0x757C1F22 [.\MMDll.cpp] @ 171
[03:01:33]: MyGPA GetProcAddress2 to check func: FlsGetValue [.\MMDll.cpp] @ 163
[03:01:33]: kernel:GetProcAddress for FlsGetValue is at 0x757C123D [.\MMDll.cpp] @ 171
[03:01:33]: MyGPA GetProcAddress2 to check func: FlsSetValue [.\MMDll.cpp] @ 163
[03:01:33]: kernel:GetProcAddress for FlsSetValue is at 0x757C18E4 [.\MMDll.cpp] @ 171
[03:01:33]: MyGPA GetProcAddress2 to check func: FlsFree [.\MMDll.cpp] @ 163
[03:01:33]: kernel:GetProcAddress for FlsFree is at 0x757C3954 [.\MMDll.cpp] @ 171
[03:01:33]: MyGPA GetProcAddress2 to check func: EncodePointer [.\MMDll.cpp] @ 163
[03:01:33]: kernel:GetProcAddress for EncodePointer is at 0x77AC0E5B [.\MMDll.cpp] @ 171
[03:01:33]: MyGPA GetProcAddress2 to check func: EncodePointer [.\MMDll.cpp] @ 163
[03:01:33]: kernel:GetProcAddress for EncodePointer is at 0x77AC0E5B [.\MMDll.cpp] @ 171
[03:01:33]: MyGPA GetProcAddress2 to check func: EncodePointer [.\MMDll.cpp] @ 163
[03:01:33]: kernel:GetProcAddress for EncodePointer is at 0x77AC0E5B [.\MMDll.cpp] @ 171
[03:01:33]: MyGPA GetProcAddress2 to check func: EncodePointer [.\MMDll.cpp] @ 163
[03:01:33]: kernel:GetProcAddress for EncodePointer is at 0x77AC0E5B [.\MMDll.cpp] @ 171
[03:01:33]: MyGPA GetProcAddress2 to check func: EncodePointer [.\MMDll.cpp] @ 163
[03:01:33]: kernel:GetProcAddress for EncodePointer is at 0x77AC0E5B [.\MMDll.cpp] @ 171
[03:01:33]: MyGPA GetProcAddress2 to check func: EncodePointer [.\MMDll.cpp] @ 163
[03:01:33]: kernel:GetProcAddress for EncodePointer is at 0x77AC0E5B [.\MMDll.cpp] @ 171
[03:01:33]: MyGPA GetProcAddress2 to check func: EncodePointer [.\MMDll.cpp] @ 163
[03:01:33]: kernel:GetProcAddress for EncodePointer is at 0x77AC0E5B [.\MMDll.cpp] @ 171
[03:01:33]: MyGPA GetProcAddress2 to check func: DecodePointer [.\MMDll.cpp] @ 163
[03:01:33]: kernel:GetProcAddress for DecodePointer is at 0x77AB9BD5 [.\MMDll.cpp] @ 171
[03:01:33]: MyGPA GetProcAddress2 to check func: DecodePointer [.\MMDll.cpp] @ 163
[03:01:33]: kernel:GetProcAddress for DecodePointer is at 0x77AB9BD5 [.\MMDll.cpp] @ 171
[03:01:33]: MyGPA GetProcAddress2 to check func: EncodePointer [.\MMDll.cpp] @ 163
[03:01:33]: kernel:GetProcAddress for EncodePointer is at 0x77AC0E5B [.\MMDll.cpp] @ 171
[03:01:33]: MyGPA GetProcAddress2 to check func: DecodePointer [.\MMDll.cpp] @ 163
[03:01:33]: kernel:GetProcAddress for DecodePointer is at 0x77AB9BD5 [.\MMDll.cpp] @ 171
[03:01:33]: MyGMFN GetModuleFileName2 for module [.\MMDll.cpp] @ 117
[03:01:33]: hmodule 0x00000000 is at G:\World of Warcraft_tw_old\Wow.exe [.\MMDll.cpp] @ 131 <<<< Callback finished
[03:01:33]: Logging started at 2010-02-27 <<<< DllMain starts here
[03:01:33]: dllmain at 0x04767480 [.\GDHM.cpp] @ 110
[03:01:33]: DLL_PROCESS_ATTACH [.\GDHM.cpp] @ 113
[03:01:34]: Direct3DCreate9 OK, pD3D: 0x155909E0 [.\GDHM.cpp] @ 41
[03:01:34]: pD3D->CreateDevice with hWnd : 0032073C [.\GDHM.cpp] @ 50
[03:01:34]: pD3D->CreateDevice OK, pd3dDevice: 0x155E2F80 *pd3dDevice= 0x155E5D1C [.\GDHM.cpp] @ 60
[03:01:34]: pd3dDevice -> Vtable[42] = 6096CE09 [.\GDHM.cpp] @ 68
[03:01:34]: end scene is successfully hooked! [.\GDHM.cpp] @ 116
[03:01:34]: MyGPA GetProcAddress2 to check func: DecodePointer [.\MMDll.cpp] @ 163
[03:01:34]: kernel:GetProcAddress for DecodePointer is at 0x77AB9BD5 [.\MMDll.cpp] @ 171
[03:01:34]: MyGPA GetProcAddress2 to check func: DecodePointer [.\MMDll.cpp] @ 163
[03:01:34]: kernel:GetProcAddress for DecodePointer is at 0x77AB9BD5 [.\MMDll.cpp] @ 171
[03:01:34]: MyGPA GetProcAddress2 to check func: EncodePointer [.\MMDll.cpp] @ 163
[03:01:34]: kernel:GetProcAddress for EncodePointer is at 0x77AC0E5B [.\MMDll.cpp] @ 171
[03:01:34]: MyGPA GetProcAddress2 to check func: DecodePointer [.\MMDll.cpp] @ 163
[03:01:34]: kernel:GetProcAddress for DecodePointer is at 0x77AB9BD5 [.\MMDll.cpp] @ 171
[03:01:34]: IDirect3DDevice9* obtained to be 0x3428A20 [.\GDHM.cpp] @ 84
[03:01:34]: gdh.dll finished loading dllmain and/or callback [..\Main\ManualMap.cpp] @ 212 <<<<<<< all finished
[03:01:41]: In manualmap.dll :: UnmapModule gdh.dll [.\MMDll.cpp] @ 102
[03:01:41]: in Unmap [..\Main\ManualMap.cpp] @ 219
[03:01:41]: clear mapped mapbyName [..\Main\ManualMap.cpp] @ 245
[03:01:41]: clear mapped mapbyHandle [..\Main\ManualMap.cpp] @ 247
Every thing seems going well, but still no floating point support.
Code:
// Stub that calls the Dll from within the remote process.
// This is necessary because a DllMain function takes 3
// arguments, and CreateRemoteThread can pass only 1.
unsigned char ManualMap::DllCall_stub[] = {
0x55, // push ebp
0x89,0xe5, // mov ebp,esp
0x31, 0xdb, // xor ebx,ebx
0x83, 0xec, 0x10, // sub esp,10
0xb8, 0xDE, 0xAD, 0xBE, 0xEF, // mov eax, 0xdeadbeef << pTlsCallback_array
0x89, 0x45, 0xfc, // mov dword ptr [ebp-4], eax <<<< loop start
0x39, 0xd8, // cmp eax, ebx
0x74, 0x15, // je Label:quit
0x39, 0x18, // cmp [eax], ebx
0x74, 0x11, // je label:quit
0x6a, 0x00, // push 0
0x6a, 0x01, // push 1
0xff, 0x75, 0x08, // push dword [ebp+8]
0xff, 0x10, // call [eax]
0x8b, 0x45, 0xfc, // mov eax, [ebp-4]
0x83, 0xc0, 0x04, // add eax,4
0xeb, 0xe4, // jmp loop start
0x6a, 0x00, // push 0
0x6a, 0x01, // push 1
0xff, 0x75, 0x08, // push dword [ebp+8]
0xb8, 0xDE, 0xAD, 0xBE, 0xEF, // mov eax, 0xdeadbeef
0xff, 0xd0, // call eax
0x89, 0xec, // mov esp, ebp
0x5d, // pop ebp
0xc3 // retn
};
I've really run out of ideas..