dcomicboy

dip base

Feb 25th, 2013
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.16 KB | None | 0 0
  1. #include <windows.h>
  2. #include <d3d9.h>
  3. #include <d3dx9.h>
  4.  
  5. #pragma comment(lib, "d3d9.lib")
  6. #pragma comment(lib, "d3dx9.lib")
  7.  
  8. // NUMPAD1 => On/Off chams.
  9. // NUMPAD2 => Change colors.
  10.  
  11. #define GameStatus 0x377791CC
  12. #define DIPEngine 0x006A358A
  13.  
  14. DWORD retDIPEngine = ( DIPEngine + 0x8 );
  15.  
  16. INT chams;
  17. INT color;
  18.  
  19. #define Red D3DCOLOR_ARGB( 255, 255, 000, 000 )
  20. #define Green D3DCOLOR_ARGB( 255, 000, 255, 000 )
  21. #define Blue D3DCOLOR_ARGB( 255, 000, 000, 255 )
  22. #define Black D3DCOLOR_ARGB( 255, 000, 000, 000 )
  23.  
  24. __declspec( naked ) HRESULT WINAPI DIPMidfunction( )
  25. {
  26. static LPDIRECT3DDEVICE9 pDevice;
  27. static INT BaseVertexIndex;
  28. static UINT MinVertexIndex, NumVertices, startIndex, primCount;
  29.  
  30. __asm
  31. {
  32. MOV ECX, DWORD PTR DS:[EAX]
  33. MOV EDX, DWORD PTR DS:[ECX + 0x148]
  34. MOV DWORD PTR DS:[pDevice], EAX
  35. MOV ECX, DWORD PTR DS:[EBP + 0x18]
  36. MOV DWORD PTR DS:[BaseVertexIndex], ECX
  37. MOV ECX, DWORD PTR DS:[EBP + 0x8]
  38. MOV DWORD PTR DS:[MinVertexIndex], ECX
  39. MOV ECX, DWORD PTR DS:[EBP + 0x10]
  40. MOV DWORD PTR DS:[NumVertices], ECX
  41. MOV ECX, DWORD PTR DS:[EBP + 0xC]
  42. MOV DWORD PTR DS:[startIndex], ECX
  43. MOV ECX, DWORD PTR DS:[EBP + 0x14]
  44. MOV DWORD PTR DS:[primCount], ECX
  45. PUSHAD
  46. }
  47.  
  48. if( GetAsyncKeyState(VK_NUMPAD1)&1 )
  49. chams = !chams;
  50.  
  51. if( GetAsyncKeyState(VK_NUMPAD2)&1 )
  52. color++;
  53.  
  54. if( color > 4 )
  55. color = 0;
  56.  
  57. if( chams )
  58. {
  59. pDevice->SetRenderState( D3DRS_ZENABLE, D3DZB_FALSE );
  60. if( color == 1 ) pDevice->SetRenderState( D3DRS_AMBIENT, Red );
  61. if( color == 2 ) pDevice->SetRenderState( D3DRS_AMBIENT, Green );
  62. if( color == 3 ) pDevice->SetRenderState( D3DRS_AMBIENT, Blue );
  63. if( color == 4 ) pDevice->SetRenderState( D3DRS_AMBIENT, Black );
  64. }
  65.  
  66. __asm
  67. {
  68. POPAD
  69. JMP retDIPEngine
  70. }
  71. }
  72.  
  73. VOID *DetourCreate( BYTE *src, CONST BYTE *dst, CONST INT len )
  74. {
  75. BYTE *jmp =( BYTE * ) malloc( len + 5 );
  76. DWORD dwBack;
  77.  
  78. VirtualProtect( src, len, PAGE_READWRITE, &dwBack );
  79. memcpy( jmp, src, len );
  80. jmp += len;
  81. jmp[0] = 0xE9;
  82. *( DWORD * )( jmp + 1 ) = ( DWORD )( src + len - jmp ) - 5;
  83.  
  84. src[0] = 0xE9;
  85. *( DWORD * )( src + 1 ) = ( DWORD )( dst - src ) - 5;
  86. for( INT i = 5; i < len; i++ )
  87. src[i] = 0x90;
  88. VirtualProtect( src, len, dwBack, &dwBack );
  89.  
  90. return( jmp - len );
  91. }
  92.  
  93. DWORD WINAPI StartRoutine( LPVOID )
  94. {
  95. while( TRUE )
  96. {
  97. if( memcmp( ( VOID * )DIPEngine, ( VOID * )( PBYTE )"\x8B\x08", 2 ) == 0 )
  98. {
  99. Sleep( 100 );
  100. DetourCreate( ( PBYTE )DIPEngine, ( PBYTE )DIPMidfunction, 8 );
  101. }
  102. Sleep( 50 );
  103. }
  104.  
  105. return 0;
  106. }
  107.  
  108. BOOL WINAPI DllMain( HMODULE hDll, DWORD dwReason, LPVOID lpReserved )
  109. {
  110. if( dwReason == DLL_PROCESS_ATTACH )
  111. {
  112. DisableThreadLibraryCalls( hDll );
  113. MessageBoxA( 0, " DIP Based ", "Elab V1.0", 0 );
  114. CreateThread( 0, 0, (LPTHREAD_START_ROUTINE)StartRoutine, 0, 0, 0 );
  115. }
  116.  
  117. return TRUE;
  118. }
Advertisement
Add Comment
Please, Sign In to add comment