OldSchoolHack

Register / Login English

[ C/C++ ] [ CSS ] Visual Recoil Removal

icon Thread: [ C/C++ ] [ CSS ] Visual Recoil Removal

Join Date: Aug 2010

Posts: 4

Hi,

einige von euch werden wohl noch den Code von wav(?) aus der geleakten EpicHacks-source kennen, in welchem er das visuelle Recoil von CSS patcht. Die relativen Offsets sind schon seit ewiger Zeit outdated. Deshalb habe ich mich mal rangemacht und alles geupdated. Folgendermaßen sah der alte originale Code aus:

TEXT Code:
  1. BYTE PunchAnglex[6] = { 0xD9, 0x86, 0xB0, 0x0B, 0x00, 0x00 };
  2. BYTE PunchAngley[6] = { 0xD9, 0x86, 0xB4, 0x0B, 0x00, 0x00 };
  3. BYTE PunchAnglez[6] = { 0xD9, 0x86, 0xB8, 0x0B, 0x00, 0x00 };
  4. BYTE PunchAngleFixed[6] = { 0xD9, 0x86, 0x48, 0x0B, 0x00, 0x00 };
  5. DWORD Hack;
  6. WriteProcessMemory(GetCurrentProcess(),(void*)(0x24000000 + 0x192B2),&PunchAngleFixed,6,&Hack);
  7. WriteProcessMemory(GetCurrentProcess(),(void*)(0x24000000 + 0x192BC),&PunchAngleFixed,6,&Hack);
  8. WriteProcessMemory(GetCurrentProcess(),(void*)(0x24000000 + 0x192C8),&PunchAngleFixed,6,&Hack);
  9.  
  10. 240192D2 D986 B00B0000 FLD DWORD PTR DS:[ESI+BB0]
  11. 240192D8 D807 FADD DWORD PTR DS:[EDI]
  12. 240192DA D91F FSTP DWORD PTR DS:[EDI]
  13. 240192DC D986 B40B0000 FLD DWORD PTR DS:[ESI+BB4]
  14. 240192E2 D847 04 FADD DWORD PTR DS:[EDI+4]
  15. 240192E5 D95F 04 FSTP DWORD PTR DS:[EDI+4]
  16. 240192E8 D986 B80B0000 FLD DWORD PTR DS:[ESI+BB8]
  17.  

Meine Methode:

CPP Code:
  1. VOID PatchVisualRecoil ( BOOL bEnabled, DWORD dwOffset )
  2. {
  3. BYTE ucPunchAngleX = 0x90;
  4. BYTE ucPunchAngleY = 0x94;
  5. BYTE ucPunchAngleZ = 0x98;
  6. BYTE ucPunchAnglePatched = 0x48;
  7.  
  8. DWORD dwOldPageFlags = 0x0;
  9.  
  10. if ( VirtualProtect ( ( PVOID ) dwOffset, 26, PAGE_EXECUTE_READWRITE, &dwOldPageFlags ) )
  11. {
  12. if ( bEnabled )
  13. {
  14. memset ( ( PVOID ) ( dwOffset + 0x2 ), ucPunchAnglePatched, 1 );
  15. memset ( ( PVOID ) ( dwOffset + 0xA ), ucPunchAnglePatched, 1 );
  16. memset ( ( PVOID ) ( dwOffset + 0x16 ), ucPunchAnglePatched, 1 );
  17. }
  18.  
  19. else
  20. {
  21. memset ( ( PVOID ) ( dwOffset + 0x2 ), ucPunchAngleX, 1 );
  22. memset ( ( PVOID ) ( dwOffset + 0xA ), ucPunchAngleY, 1 );
  23. memset ( ( PVOID ) ( dwOffset + 0x16 ), ucPunchAngleZ, 1 );
  24. }
  25.  
  26. VirtualProtect ( ( PVOID ) dwOffset, 26, dwOldPageFlags, &dwOldPageFlags );
  27. FlushInstructionCache ( GetCurrentProcess( ), &dwOffset, 26 );
  28. }
  29.  
  30. }

DWORD dwVisRecoilOffset = PatternSearch ( "client.dll", ( PBYTE ) "xD8x86x00x00x00x00xD9x1FxD9x86x00x00x00x00",
"xx????xxxx????" );
PatchVisualRecoil ( TRUE, dwVisRecoilOffset );


Keine Ahnung ob das VAC2-Proof ist. Wird ja immerhin etwas in der .code-section gepatcht, aber bisher hatte ich noch keine Probleme. Ansonsten halt Breakpoints benutzen oder RPM bypassen. Viel Spaß.

// Schade dass sich die Smileys nicht deaktivieren lassen, die machen den Code etwas unleslich.