Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Mała podstawa vtable
#1
Kredyt: UC Assorted       Kod:   #include <windows.h> #include <d3d9.h> #pragma comment (lib, "d3d9.lib") #include <d3dx9.h> #pragma comment (lib, "d3dx9.lib") LPDIRECT3DDEVICE9 pDevice = NULL; D3DVIEWPORT9 Viewport; HRESULT (WINAPI * pReset) (LPDIRECT3DDEVICE9, D3DPRESENT_PARAMETERS *); HRESULT (WINAPI * pEndScene) (LPDIRECT3DDEVICE9); HRESULT (WINAPI * pDIP) (LPDIRECT3DDEVICE9, D3DPRIMITIVETYPE, INT, UINT, UINT, UINT, UINT); DWORD dwCreateDevice = NULL; DWORD dwProtect = NULL; PDWORD pVTable = NULL; D3DRECT RectA, RectB; HRESULT WINAPI DIP (LPDIRECT3DDEVICE9 pDevice9, D3DPRIMITIVETYPE Type, INT BaseIndex, UINT MinIndex, UINT NumVertices, UINT StartIndex, UINT PCount) {LPDIRECT3DVERTEXBUFFER9 Stream_Data; UINT Offset = 0; UINT Stride = 0; if (pDevice9 -> GetStreamSource (0, & Stream_Data, Offset i Stride) == D3D_OK) Stream_Data -> Release (); return pDIP (pDevice9, Type, BaseIndex, MinIndex, NumVertices, StartIndex, PCount); } HRESULT WINAPI RESET (LPDIRECT3DDEVICE9 pDevice9, D3DPRESENT_PARAMETERS * PParameters) {return pReset (pDevice9, PParameters); } HRESULT WINAPI ENDSCENE (LPDIRECT3DDEVICE9 pDevice9) {pDevice9 -> GetViewport (& Viewport); DWORD ScrX = Viewport. Szerokość / 2; DWORD ScrY = Viewport. Wysokość / 2; {RectA. x1 = ScrX - 4;} {RectA. y1 = ScrY - 1;} {RectA. x2 = ScrX + 3;} {RectA. y2 = ScrY;} {RectB. x1 = ScrX - 1;} {RectB. y1 = ScrY - 4;} {RectB. x2 = ScrX;} {RectB. y2 = ScrY + 3;} pDevice9 -> Wyczyść (1, i RectA, D3DCLEAR_TARGET, D3DCOLOR_ARGB (255, 20, 255, 20), 0, 0); pDevice9 -> Clear (1, & RectB, D3DCLEAR_TARGET, D3DCOLOR_ARGB (255, 20, 255, 20), 0, 0); return pEndScene (pDevice9); } VOID WINAPI THREAD (VOID) {* (PDWORD) i pEndScene = pVTable [42]; * (PDWORD) i pReset = pVTable [16]; * (PDWORD) i pDIP = pVTable [82]; while (1) {pVTable [42] = (DWORD) ENDSCENE; pVTable [16] = (DWORD) RESET; pVTable [82] = (DWORD) DIP; Sen (100); }} VOID WINAPI UNHOOK (VOID) {pVTable [16] = dwCreateDevice; VirtualProtect ((PVOID) i pVTable [16], 4, dwProtect i dwProtect); pVTable = (PDWORD) * (PDWORD) pDevice; CreateThread (NULL, NULL, (LPTHREAD_START_ROUTINE) THREAD, NULL, NULL, NULL); } __Declspec (naga) VOID WINAPI CREATEDEVICE (VOID) {__asm {{PUSH EBP} {MOV EBP, ESP} {PUSH [EBP + 0x20]} {PUSH [EBP + 0x1C]} {PUSH [EBP + 0x18]} {PUSH [EBP + 0x14]} {PUSH [EBP + 0x10]} {PUSH [EBP + 0xC]} {PUSH [EBP + 0x08]} {CALL [dwCreateDevice]} {MOV EDX, [EBP + 0x20]} {MOV EDX, [EDX]} {MOV [pUevice], EDX} {PUSH EAX} {CALL UNHOOK} {POP EAX} {POP EBP} {RETN 0x1C}}} BOOL WINAPI DllMain (moduł HMODULE, DWORD dwReason, LPVOID lpvReserved) {if ( dwReason == DLL_PROCESS_ATTACH) {DisableThreadLibraryCalls (hModule); LPDIRECT3D9 LPD3D9 = Direct3DCreate9 (D3D_SDK_VERSION); if (LPD3D9! = NULL) {pVTable = (PDWORD) * (PDWORD) LPD3D9; LPD3D9 -> Release (); VirtualProtect ((PVOID) i pVTable [16], 4, 0x40 i dwProtect); dwCreateDevice = pVTable [16]; pVTable [16] = (DWORD) CREATEDEVICE; }} Return TRUE; }
Reply
#2
Możesz użyć typedef i pozbyć się tego wszystkiego Kod: typedef HRESULT (WINAPI * LPFN_CreateDevice) (IDirect3D9 * pD3DInterface, adapter UINT, typ urządzenia D3DDEVTYPE, HWND hFocusWindow, zachowanie DWORD Flavours, D3DPRESENT_PARAMETERS * pPresentationParameters, IDirect3DDevice9 ** ppReturnedDeviceInterface); Następnie możesz to zrobić: Kod: LPFN_CreateDevice pCreateDevice; HRESULT WINAPI hkCreateDevice ( IDirect3D9 * pD3DInterface , UINT Adapter D3DDEVTYPE DeviceType , HWND hFocusWindow , DWORD BehaviorFlags , D3DPRESENT_PARAMETERS * pPresentationParameters , IDirect3DDevice9 ** ppReturnedDeviceInterface ) { HRESULT wynik = pCreateDevice ( pD3DInterface , adapterze DeviceType , hFocusWindow , BehaviorFlags , pPresentationParameters , ppReturnedDeviceInterface ); UNHOOK (); return Wynik; }
Reply
#3
pomocny jak zawsze
Reply
#4
Dziękuję Mr.Zoom. Jest bardzo pomocny ..
Reply
#5
gdzie ładujesz plik d3d9.dll ????
Reply
#6
Zacytować: Napisał pierwotnie - [I] fLuX gdzie ładujesz plik d3d9.dll ???? w kapturze
Reply
#7
Zacytować: czemu nie zadzwonić w d3d9test potrzebują rozwiązania dzięki CO nie jest wywoływane? Oszukiwać? Nie mogę w to uwierzyć. Powinien przynajmniej wywołać DLLMain i jeśli tego nie zrobi, to po prostu się pieprzysz. (Wierzę, że to ty pieprzysz się tak, zakładając, że kod w OP jest w pełni poprawny i działa). Możesz przynajmniej podłączyć debugger i zobaczyć, gdzie przestaje działać ... To nie powinno być takie trudne. Zacytować: gdzie ładujesz plik d3d9.dll ???? Zamieszczony wyżej fragment to OpenGL. Nie musisz ładować pliku d3d9.dll. ROFL. To żart, jeśli się zastanawiasz.
Reply
#8
Zacytować: Originally Posted by shakai CO nie jest wywoływane? Oszukiwać? Nie mogę w to uwierzyć. Powinien przynajmniej wywołać DLLMain i jeśli tego nie zrobi, to po prostu się pieprzysz. (Wierzę, że to ty pieprzysz się tak, zakładając, że kod w OP jest w pełni poprawny i działa). Możesz przynajmniej podłączyć debugger i zobaczyć, gdzie przestaje działać ... To nie powinno być takie trudne. Zamieszczony wyżej fragment to OpenGL. Nie musisz ładować pliku d3d9.dll. ROFL. To żart, jeśli się zastanawiasz. WTF? mówisz o Kod: HRESULT WINAPI ENDSCENE (LPDIRECT3DDEVICE9 pDevice9) dlaczego mówisz jej opengl EDYCJA: mój zły havent w pełni czytać ur Zacytować: ] To żart na wypadek, gdybyś się zastanawiał.
Reply
#9
Zacytować: Originally Posted by shakai CO nie jest wywoływane? Oszukiwać? Nie mogę w to uwierzyć. Powinien przynajmniej wywołać DLLMain i jeśli tego nie zrobi, to po prostu się pieprzysz. (Wierzę, że to ty pieprzysz się tak, zakładając, że kod w OP jest w pełni poprawny i działa). Możesz przynajmniej podłączyć debugger i zobaczyć, gdzie przestaje działać ... To nie powinno być takie trudne. Zamieszczony wyżej fragment to OpenGL. Nie musisz ładować pliku d3d9.dll. ROFL. To żart, jeśli się zastanawiasz. Myślę, że ma na myśli, to tylko wykonać raz po tym zajmuje minut / godzinę hak ponownie wykonać ... to jest wadą tej metody .. przeważnie dzieje się w XP, ale nie jestem pewien w VIsta i 7.
Reply
#10
Próbuję tego BTW tnx Zoom
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)