Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Midfunction dla DIP On Windows XP
#1
Mój Midfunction Hook dla EndScene (na Windows XP) działa dobrze (dziękuję Shad0w i innym gejom, którzy mi pomogli! Dziękuję). Ale to nie ma wpływu na DIP, to jest mój kod, Każdy może odpowiedzieć na moje pytanie noob, dziękuję !!         Kod:   INT Thread_XD3DXINIT () {Dx9Hook (L "d3d9.dll"); memcpy ((void *) EndSceneOpCodes, (void *) "\ x89 \ x7D \ xE4 \ x89 \ x5D \ xE8", 6); // działa dobrze memcpy ((void *) DIPOpCodes, (void *) "\ x8B \ x7D \ x08 \ x33 \ xDB \ x3B \ xFB", 6); // Nie wiem, jak pisać tutaj (1) {Sen (1000); if (memcmp ((void *) EndSceneOpCodes, (void *) dwEndscene_hook, 6) == 0) DetourCreate ((PBYTE) dwEndscene_hook, (PBYTE) MyEndscene, 6); if (memcmp ((void *) DrawIndexedPrimitiveOpCodes, (void *) dwDrawindexedprimitive_hook, 6) == 0) DetourCreate ((PBYTE) dwDrawindexedprimitive_hook, (PBYTE) MyDrawindexedprimitive, 6); } return NULL; } VOID Dx9Hook (LPCWSTR D3D9) {DWORD hD3D = NULL; while (! hD3D) hD3D = (DWORD) FrmWrk -> lGetModuleHandle (D3D9); DWORD PPPDevice = FrmWrk -> FindPattern (hD3D, 0x128000, (PBYTE) "\ xC7 \ x06 \ x00 \ x00 \ x00 \ x89 \ x86 \ x00 \ x00 \ x00 \ x00 \ x89 \ x86", "xx ?? xx ???? xx "); memcpy (& VTable, (VOID *) (PPPDevice + 2), 4); dwEndscene_hook = VTable [42] + 0x36; dwEndscene_ret = dwEndscene_hook + 0x6; dwDrawindexedprimitive_hook = VTable [82] + 0x36; dwDrawindexedprimitive_ret = dwDrawindexedprimitive_hook + 0x6; }     Kod:   __declspec (naga) void MyDrawindexedprimitive () {__asm {push edx // Nie wiem, czy ma rację mov edx, dword ptr [ebp] mov m_pD3Ddev, edx pop edx} if (m_pD3Ddev -> GetStreamSource (0, & StreamBuffer, & OffsetInBytes i Stride) == D3D_OK) StreamBuffer -> Release (); if (bWallHack) {if ((NumVertices == 1519) {m_pD3Ddev -> SetRenderState (D3DRS_ZENABLE, D3DZB_FALSE); m_pD3Ddev -> SetRenderState (D3DRS_ZFUNC, D3DCMP_NEVER); / * jeśli (fCall) {m_pD3Ddev-> SetTexture (0, texGreen) ;} DrawIndexedPrimitive_Pointer (m_pD3Ddev, PrimitiveType, BaseIndex, MinVertexIndex, NumVertices, sTARTINDEX, primCount) m_pD3Ddev-> SetRenderState (D3DRS_ZENABLE, D3DZB_TRUE) m_pD3Ddev-> SetRenderState (D3DRS_ZFUNC, D3DCMP_LESSEQUAL) if (fCall) {m_pD3Ddev-> SetTexture (0 , texRed);} *}} __asm {mov dword ptr SS: [ebp - 18], ebx mov dword ptr SS: [ebp - 14], edi jmp dwDrawindexedprimitive_ret;}}
Reply
#2
EndScene nie jest DrawIndexedPrimative funkcje są różne, więc montaż powinien być inny, dlaczego na świecie uważasz, że tam to samo spróbuj spojrzeć na nich w demontażu i jeśli wiesz, co robisz będziesz wiedział, co robić!
Reply
#3
Tak, tak jak powiedział Alex, musisz wiedzieć, że zespół nie ma już XP, więc mogę " t pomóc ci z zrzutem.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)