Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Dziwny problem
#1
Mam dziwny problem, próbuję przechować wskaźnik do urządzenia w LPDIRECT3DDEVICE9. Ale to powoduje awarię podczas korzystania z niego. Kiedy używam PDWORD, działa dobrze, ale muszę popchnąć to urządzenie do argumentu wątku.       Kod:   dwD3DBase = (DWORD) GetModuleHandle ("d3d9.dll"); dwD3DSize = pTools -> GetModuleSize ("d3d9.dll"); dwOffsets [OFFSET_DEVICE] = pTools -> FindPattern (dwD3DBase, dwD3DSize, (PBYTE) "\ xC7 \ x06 \ x00 \ x00 \ x00 \ x89 \ x86 \ x00 \ x00 \ x00 \ x89 \ x86", "xx ???? xx ???? xx ") + 0x2; PDWORD vTable = NULL; memcpy (& vTable, (LPVOID) pEngine -> GetOffset (OFFSET_DEVICE), 0x4);   Działa to dobrze, ale kiedy próbuję to powoduje awarię:       Kod:   dwD3DBase = (DWORD) GetModuleHandle ("d3d9.dll"); dwD3DSize = pTools -> GetModuleSize ("d3d9.dll"); dwOffsets [OFFSET_DEVICE] = pTools -> FindPattern (dwD3DBase, dwD3DSize, (PBYTE) "\ xC7 \ x06 \ x00 \ x00 \ x00 \ x89 \ x86 \ x00 \ x00 \ x00 \ x89 \ x86", "xx ???? xx ???? xx ") + 0x2; LPDIRECT3DDEVICE9 pDevice = NULL; memcpy (& pDevice, (LPVOID) pEngine -> GetOffset (OFFSET_DEVICE), 0x4);   Kiedy używam pDevice, powoduje to awarię. Co jest nie tak, prawdopodobnie coś prostego?
Reply
#2
pierwszym wskaźnikiem w urządzeniu jest vtable, więc śledziłeś jeden wskaźnik za dużo?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)