Advertisement
Guest User

Untitled

a guest
Apr 30th, 2012
417
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.24 KB | None | 0 0
  1. //================================================================================================
  2. LRESULT CALLBACK MsgProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam){return DefWindowProc(hwnd, uMsg, wParam, lParam);}
  3. void DX_Init(DWORD* table)
  4. {
  5. WNDCLASSEX wc = {sizeof(WNDCLASSEX),CS_CLASSDC,MsgProc,0L,0L,GetModuleHandle(NULL),NULL,NULL,NULL,NULL,"DX",NULL};
  6. RegisterClassEx(&wc);
  7. HWND hWnd = CreateWindow("DX",NULL,WS_OVERLAPPEDWINDOW,100,100,300,300,GetDesktopWindow(),NULL,wc.hInstance,NULL);
  8. LPDIRECT3D9 pD3D = Direct3DCreate9( D3D_SDK_VERSION );
  9. D3DPRESENT_PARAMETERS d3dpp;
  10. ZeroMemory( &d3dpp, sizeof(d3dpp) );
  11. d3dpp.Windowed = TRUE;
  12. d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
  13. d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;
  14. LPDIRECT3DDEVICE9 pd3dDevice;
  15. pD3D->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,hWnd,D3DCREATE_SOFTWARE_VERTEXPROCESSING,&d3dpp,&pd3dDevice);
  16. DWORD* pVTable = (DWORD*)pd3dDevice;
  17. pVTable = (DWORD*)pVTable[0];
  18.  
  19. table[ES] = pVTable[42]; //EndScene address
  20. table[DIP] = pVTable[82]; //DrawIndexedPrimitive address
  21. table[RES] = pVTable[16]; //Reset address
  22.  
  23. DestroyWindow(hWnd);
  24. }
  25. /********************************************************************************/
  26. /* KOMPOR HOOK MEMBARA ( UNDETECK )
  27. /********************************************************************************/
  28. DWORD WINAPI VirtualMethodTableRepatchingLoopToCounterExtensionRepatching( LPVOID Param )
  29. {
  30. while(1) {
  31. Sleep(100);
  32.  
  33. HookVTableFunction((PDWORD*)npDevice, (PBYTE)0x4FF505C0,82);
  34. HookVTableFunction((PDWORD*)npDevice, (PBYTE)0x4FF50270,42);
  35.  
  36. return (0);
  37.  
  38. }
  39.  
  40. return 1;
  41. }
  42. /********************************************************************************/
  43. // KOMPOR HOOK //- CREATOR : Donny Achmad Fauzi (Mencari Suhu)
  44. /********************************************************************************/
  45. bool hooked = false;
  46. DWORD WINAPI LoopFunction(LPVOID lpParam)
  47. {
  48. if( hooked == false) {
  49. DWORD VTable[3*3*10] = {0};
  50.  
  51. while(LoadLibraryA("d3d9.dll")==NULL) {
  52. Sleep(512);//Basis schol Donny AChmad klw ke sekolah (SMPN 11 Tambun Selatan)
  53. }
  54. DX_Init(VTable);
  55. HOOK(EndScene,VTable[ES]); //Hook EndScene as a device discovery hook
  56. while(!npDevice) {
  57. Sleep(218);//
  58. }
  59. UNHOOK(EndScene, VTable[ES]);
  60. void* d3DIP = (void*)(dwD3D9 + (DWORD) + (DWORD) + (DWORD) + (PDWORD)BaseD3D + 1024);//0x4FF50A4B[82]<~~ header ini mn?? yoda buat z
  61. void* d3ES = (void*)(dwD3D9 + (DWORD) + (DWORD) + (DWORD) + (PDWORD)BaseD3D + 1036);//0x4FF19FEA[42]
  62. {
  63. int i;
  64. for (i = 0 ; i <= 0 ; i++){
  65. DWORD d,ds;
  66. VirtualProtect((void*)(d3ES), 4, PAGE_EXECUTE_READWRITE, &d);
  67. memcpy(d3ES,(void*)(d3ES), 4);
  68. VirtualProtect((void*)(d3ES), 4, d, &ds);
  69. }
  70. }
  71. int C;
  72. for (C = 0 ; C <= 0 ; C++){
  73. {
  74. DWORD d,ds;
  75. VirtualProtect((void*)(d3DIP), 4, PAGE_EXECUTE_READWRITE, &d);
  76. memcpy(d3DIP,(void*)(d3DIP), 4);
  77. VirtualProtect((void*)(d3DIP), 4, d, &ds);
  78. }
  79. }
  80.  
  81. //------------------//
  82. CreateDetour((DWORD)hkDrawIndexedPrimitive, (DWORD)d3DIP*C,Detour_Type_0xB8,7);
  83. CreateDetour((DWORD)hkEndScene, (DWORD)d3ES*C,Detour_Type_0xB8,7);
  84.  
  85.  
  86. *(PDWORD)&oDrawIndexedPrimitive = VTable[DIP];
  87. *(PDWORD)&oEndScene = VTable[ES];
  88. //-----------------//
  89. hooked = true;
  90. }
  91. Sleep(10);
  92. void* d3DIP = (void*)(dwD3D9 + (DWORD) + (DWORD) + (DWORD) + (PDWORD)BaseD3D + 1024);//0x4FF505B0[82]
  93. void* d3ES = (void*)(dwD3D9 + (DWORD) + (DWORD) + (DWORD) + (PDWORD)BaseD3D + 1036);//0x4FF50260[42]
  94. {
  95. DWORD Dark,ds;
  96. VirtualProtect((void*)(d3ES), 4, PAGE_EXECUTE_READWRITE, &Dark);
  97. memcpy((void*)d3ES, (const void*)d3ES, 4);
  98. VirtualProtect((void*)(d3ES), 4, Dark, &ds);
  99. }
  100. int i;
  101. for (i = 0 ; i <= 15 ; i++){
  102. {
  103. DWORD d,ds;
  104. VirtualProtect((void*)(d3DIP), 4, PAGE_EXECUTE_READWRITE, &d);
  105. memcpy((void*)d3DIP, (const void*)d3DIP, 4);
  106. VirtualProtect((void*)(d3DIP), 4, d, &ds);
  107. }
  108. }
  109. for (i = 0 ; i <= 15 ; i++){
  110. if(memcmp((void *)d3DIP, (void *)d3DIP, 82) == 0 ) // Protect Hook Draw Indexed Primitive
  111. HookVTableFunction((LPDWORD*)npDevice, (PBYTE)d3DIP, 82);
  112. }
  113.  
  114. for (i = 0 ; i <= 15 ; i++){
  115. if(memcmp((void *)d3ES, (void *)d3ES, 42) == 0 ) // Protect Hook End Scene
  116. HookVTableFunction((LPDWORD*)npDevice, (PBYTE)d3ES, 42);
  117. }
  118. {
  119. Sleep(100*2);
  120. }
  121. return 0;
  122. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement