OldSchoolHack

Register / Login English

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


icon [ C/C++ ] [ CSS ] Visual Recoil Removal #1

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.

icon #2

Join Date: May 2008

Posts: 1662

User-Rating:

2 positive
0 negative
Ist detected die Methode
icon #3

Join Date: Aug 2010

Posts: 4

Quote from Exxon
Ist detected die Methode

Und das hast du mithilfe welcher forensischen Methode rausgefunden ?
icon #4

Join Date: Aug 2007

Posts: 8643

User-Rating:

199 positive
33 negative
einfach weil Speicher im .Code Bereich verändert wird und nicht im .Data Bereich

greetz KN4CK3R

__________________

Hallo