Advertisement
Guest User

Untitled

a guest
Jul 23rd, 2017
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.01 KB | None | 0 0
  1. //please read the comments maam Brixs
  2.  
  3. #include <windows.h>
  4. #include <d3d9.h>
  5. #include <d3dx9.h>
  6.  
  7. #pragma comment(lib, "d3d9.lib")
  8. #pragma comment(lib, "d3dx9.lib")
  9.  
  10. #define EndSceneEngine 0x00455ECF //how to find maam Brixs? for SF1 SEA
  11.  
  12. DWORD retEndSceneEngine = ( EndSceneEngine + 0x8 );
  13.  
  14. #define Red D3DCOLOR_ARGB( 255, 255, 000, 000 )
  15. #define Green D3DCOLOR_ARGB( 255, 000, 255, 000 )
  16. #define Blue D3DCOLOR_ARGB( 255, 000, 000, 255 )
  17. #define Black D3DCOLOR_ARGB( 255, 000, 000, 000 )
  18.  
  19. LPD3DXFONT Font;
  20.  
  21. VOID StartFont( LPDIRECT3DDEVICE9 pDevice )
  22. {
  23. if( Font )
  24. {
  25. Font->Release();
  26. Font = NULL;
  27. }
  28.  
  29. if( !Font )
  30. {
  31. D3DXCreateFont( pDevice,
  32. 14,
  33. 0,
  34. FW_BOLD,
  35. 1,
  36. 0,
  37. DEFAULT_CHARSET,
  38. OUT_DEFAULT_PRECIS,
  39. DEFAULT_QUALITY,
  40. DEFAULT_PITCH | FF_DONTCARE,
  41. "Arial",
  42. &Font );
  43. }
  44. }
  45.  
  46. VOID WriteText( LPDIRECT3DDEVICE9 pDevice, INT x, INT y, DWORD color, CHAR *text )
  47. {
  48. RECT rect;
  49. SetRect( &rect, x, y, x, y );
  50. Font->DrawText( NULL, text, -1, &rect, DT_NOCLIP | DT_LEFT, color );
  51. }
  52.  
  53. __declspec( naked ) HRESULT WINAPI EndSceneMidfunction( )
  54. {
  55. static LPDIRECT3DDEVICE9 pDevice;
  56.  
  57. __asm
  58. {
  59. MOV ECX, DWORD PTR DS:[EAX]
  60. MOV EDX, DWORD PTR DS:[ECX + 0xA8]
  61. MOV DWORD PTR DS:[pDevice], EAX
  62. PUSHAD
  63. }
  64.  
  65. StartFont( pDevice );
  66.  
  67. if( Font )
  68. WriteText( pDevice, 300, 300, Red, "CrossFire: Hook EndScene Engine" );
  69.  
  70. __asm
  71. {
  72. POPAD
  73. JMP retEndSceneEngine
  74. }
  75. }
  76.  
  77. VOID *DetourCreate( BYTE *src, CONST BYTE *dst, CONST INT len )
  78. {
  79. BYTE *jmp =( BYTE * ) malloc( len + 5 );
  80. DWORD dwBack;
  81.  
  82. VirtualProtect( src, len, PAGE_READWRITE, &dwBack );
  83. memcpy( jmp, src, len );
  84. jmp += len;
  85. jmp[0] = 0xE9;
  86. *( DWORD * )( jmp + 1 ) = ( DWORD )( src + len - jmp ) - 5;
  87.  
  88. src[0] = 0xE9;
  89. *( DWORD * )( src + 1 ) = ( DWORD )( dst - src ) - 5;
  90. for( INT i = 5; i < len; i++ )
  91. src[i] = 0x90;
  92. VirtualProtect( src, len, dwBack, &dwBack );
  93.  
  94. return( jmp - len );
  95. }
  96.  
  97. DWORD WINAPI StartRoutine( LPVOID )
  98. {
  99. while( TRUE )
  100. {
  101. if( memcmp( ( VOID * )EndSceneEngine, ( VOID * )( PBYTE )"\x8B\x08", 2 ) == 0 ) //also need help here
  102. {
  103. Sleep( 100 );
  104. DetourCreate( ( PBYTE )EndSceneEngine, ( PBYTE )EndSceneMidfunction, 8 );
  105. }
  106. Sleep( 50 );
  107. }
  108.  
  109. return 0;
  110. }
  111.  
  112. BOOL WINAPI DllMain( HMODULE hDll, DWORD dwReason, LPVOID lpReserved )
  113. {
  114. if( dwReason == DLL_PROCESS_ATTACH )
  115. {
  116. DisableThreadLibraryCalls( hDll );
  117. MessageBox( 0, "Hook EndScene Engine", "Crossfire", 0 );
  118. CreateThread( 0, 0, (LPTHREAD_START_ROUTINE)StartRoutine, 0, 0, 0 );
  119. }
  120.  
  121. return TRUE;
  122. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement