OldSchoolHack

Registrieren / Anmelden Deutsch

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


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

Anmeldungsdatum: Aug 2010

Beiträge: 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

Anmeldungsdatum: Mai 2008

Beiträge: 1662

Benutzer-Bewertung:

2 positiv
0 negativ
Ist detected die Methode
icon #3

Anmeldungsdatum: Aug 2010

Beiträge: 4

Zitat von Exxon
Ist detected die Methode

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

Anmeldungsdatum: Aug 2007

Beiträge: 8643

Benutzer-Bewertung:

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

greetz KN4CK3R

__________________

Hallo