Dimitri_UA

addTexture

Aug 9th, 2011
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.87 KB | None | 0 0
  1. #include <windows.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #define patch(a, v, s) _patch((void*)(a), (DWORD)(v), (s))
  5.  
  6. BOOL APIENTRY DllMain(HMODULE, DWORD, LPVOID);
  7. void _patch(void*,DWORD,DWORD);
  8. void LoadCustomParticle(void);
  9. void DestroyCustomParticle(void);
  10. DWORD* _textLampShad64 = (DWORD*)0xC4040C;
  11. DWORD* _RwTTailight = (DWORD*)0xC403E8;
  12. const char aTailName[] = "shad_exp";
  13.  
  14. BOOL APIENTRY DllMain(HMODULE hModule, DWORD reason, LPVOID lpReserved)
  15. {
  16.     if(reason==DLL_PROCESS_ATTACH)
  17.     {
  18.         patch(0x706DA6, 0xE9, 1);
  19.         patch(0x706DA7, (DWORD)&LoadCustomParticle - 0x706DAB, 4);
  20.         patch(0x706F5C, 0xE9, 1);
  21.         patch(0x706F5D, (DWORD)&DestroyCustomParticle - 0x706F61, 4);
  22.     }
  23.     return TRUE;
  24. }
  25.  
  26. void _patch(void* pAddress, DWORD data, DWORD iSize)
  27. {
  28.     unsigned long dwProtect[2];                            
  29.     VirtualProtect(pAddress, iSize, PAGE_EXECUTE_READWRITE, &dwProtect[0]);
  30.     switch(iSize)
  31.     {
  32.             case 1: *(BYTE*)pAddress = (BYTE)data;
  33.                 break;
  34.             case 2: *(WORD*)pAddress = (WORD)data;
  35.                 break;
  36.             case 4: *(DWORD*)pAddress = (DWORD)data;
  37.                 break;
  38.             default: memset(pAddress, data, iSize);
  39.                 break;
  40.     }
  41.     VirtualProtect(pAddress, iSize, dwProtect[0], &dwProtect[1]);
  42. }
  43.  
  44. void __declspec(naked) LoadCustomParticle()
  45. {
  46.     _asm
  47.     {
  48.         mov     _textLampShad64, eax
  49.         push    ebx
  50.         push    offset aTailName
  51.         mov     eax, 7F3AC0h
  52.         call    eax
  53.         mov     _RwTTailight, eax
  54.         add     esp, 30h
  55.         mov     eax, 706DAEh
  56.         jmp     eax
  57.     }
  58. }
  59.  
  60. void __declspec(naked) DestroyCustomParticle()
  61. {
  62.     _asm
  63.     {
  64.         mov     eax, _RwTTailight
  65.         push    eax
  66.         mov     ecx, 7F3820h
  67.         call    ecx
  68.         add     esp, 34h
  69.         ret
  70.     }
  71. }
Advertisement
Add Comment
Please, Sign In to add comment