Advertisement
allen434343

Untitled

Jul 22nd, 2014
221
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.30 KB | None | 0 0
  1. #include <Windows.h>
  2. #include <d3d9.h>
  3. #include <d3dx9.h>
  4. #pragma comment(lib, "d3d9.lib")
  5. #pragma comment(lib, "d3dx9.lib")
  6.  
  7. #define pYellow D3DCOLOR_ARGB( 255, 255, 255, 000 )
  8. #define pRed D3DCOLOR_ARGB( 255, 255, 000, 000 )
  9. #define pGreen D3DCOLOR_ARGB( 255, 000, 255, 000 )
  10.  
  11. typedef HRESULT (WINAPI* pEndScene)(LPDIRECT3DDEVICE9);
  12. pEndScene oEndScene = NULL;
  13. HRESULT WINAPI MyEndScene(LPDIRECT3DDEVICE9);
  14.  
  15. void *DetourFunc(BYTE *src, const BYTE *dst, const int len);
  16.  
  17. DWORD* Direct3D_VMTable = NULL;
  18.  
  19. bool ClossHair = true;
  20. HMODULE D3D9;
  21. LPDIRECT3D9 pD3D;
  22. LPDIRECT3DDEVICE9 pDev;
  23. D3DVIEWPORT9 Viewport;
  24.  
  25. LRESULT CALLBACK MsgProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam){return DefWindowProc(hwnd, uMsg, wParam, lParam);}
  26.  
  27.  
  28. VOID WINAPI MYHOOK( VOID )
  29. {
  30. WNDCLASSEX wc = {sizeof(WNDCLASSEX),CS_CLASSDC,MsgProc,0L,0L, GetModuleHandle(NULL),NULL,NULL,NULL,NULL,"DX",NULL};
  31. RegisterClassEx(&wc);
  32. HWND hWnd = CreateWindow("DX",NULL,WS_OVERLAPPEDWINDOW,100,100,300,300,GetDesktopWindow(),NULL,wc.hInstance,NULL);
  33.  
  34. while( D3D9 == NULL )
  35. {
  36. D3D9 = GetModuleHandleA( "d3d9.dll" );
  37. Sleep( 100 );
  38. }
  39.  
  40. D3DPRESENT_PARAMETERS D3D_PP = {0};
  41. IDirect3D9 * (WINAPI *oDirect3DCreate9)(UINT SDKVersion);
  42.  
  43.  
  44. *(PDWORD)&oDirect3DCreate9 = (DWORD)GetProcAddress( D3D9, "Direct3DCreate9" );
  45.  
  46. pD3D = oDirect3DCreate9( D3D_SDK_VERSION );
  47.  
  48. D3D_PP.Windowed = TRUE;
  49. D3D_PP.SwapEffect = D3DSWAPEFFECT_DISCARD;
  50. D3D_PP.BackBufferFormat = D3DFMT_UNKNOWN;
  51.  
  52. pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL,hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &D3D_PP, &pDev );
  53.  
  54. Direct3D_VMTable = *(DWORD**)pDev;
  55. {
  56. oEndScene = (pEndScene) DetourFunc((BYTE*)Direct3D_VMTable[42], (BYTE*) MyEndScene, 5);
  57. }
  58.  
  59. Sleep( 400 );
  60. pDev->Release( );
  61. pD3D->Release( );
  62. DestroyWindow(hWnd);
  63. }
  64. void FuncCross(LPDIRECT3DDEVICE9 pDev, DWORD color, int i)
  65. {
  66. pDev->GetViewport( &Viewport );
  67. DWORD ScreenCenterX = (Viewport.Width / 2);
  68. DWORD ScreenCenterY = (Viewport.Height / 2);
  69. D3DRECT rec1 = {ScreenCenterX-i, ScreenCenterY, ScreenCenterX+ i, ScreenCenterY+1};
  70. D3DRECT rec2 = {ScreenCenterX, ScreenCenterY-i, ScreenCenterX+ 1,ScreenCenterY+i};
  71.  
  72. pDev->Clear( 1, &rec1, D3DCLEAR_TARGET, color, 0, 0 );
  73. pDev->Clear( 1, &rec2, D3DCLEAR_TARGET, color, 0, 0 );
  74. }
  75.  
  76.  
  77. HRESULT WINAPI MyEndScene (LPDIRECT3DDEVICE9 pDev)
  78. {
  79. if(ClossHair)
  80. {
  81. FuncCross(pDev, pGreen, 50);
  82. }
  83. return oEndScene(pDev);
  84. }
  85.  
  86.  
  87. BOOL WINAPI DllMain( HINSTANCE hModule, DWORD dwReason, LPVOID lpvReserved )
  88. {
  89. if( dwReason == DLL_PROCESS_ATTACH )
  90. {
  91. CreateThread( NULL, NULL, (LPTHREAD_START_ROUTINE)MYHOOK, NULL, NULL, NULL);
  92. MessageBox(NULL,"Credits : JasperXD","JasperXD pub v1 Crosshair",NULL);
  93. }
  94. return TRUE;
  95. }
  96.  
  97. void *DetourFunc(BYTE *src, const BYTE *dst, const int len)
  98. {
  99. BYTE *jmp = (BYTE*)malloc(len+5);
  100. DWORD dwback;
  101.  
  102. VirtualProtect(src, len, PAGE_READWRITE, &dwback);
  103.  
  104. memcpy(jmp, src, len); jmp += len;
  105.  
  106. jmp[0] = 0xE9;
  107.  
  108. *(DWORD*)(jmp+1) = (DWORD)(src+len - jmp) - 5;
  109.  
  110. src[0] = 0xE9;
  111.  
  112. *(DWORD*)(src+1) = (DWORD)(dst - src) - 5;
  113.  
  114. VirtualProtect(src, len, dwback, &dwback);
  115.  
  116. return (jmp-len);
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement