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: BYTE PunchAnglex[6] = { 0xD9, 0x86, 0xB0, 0x0B, 0x00, 0x00 }; BYTE PunchAngley[6] = { 0xD9, 0x86, 0xB4, 0x0B, 0x00, 0x00 }; BYTE PunchAnglez[6] = { 0xD9, 0x86, 0xB8, 0x0B, 0x00, 0x00 }; BYTE PunchAngleFixed[6]  = { 0xD9, 0x86, 0x48, 0x0B, 0x00, 0x00 }; DWORD Hack; WriteProcessMemory(GetCurrentProcess(),(void*)(0x24000000 + 0x192B2),&PunchAngleFixed,6,&Hack); WriteProcessMemory(GetCurrentProcess(),(void*)(0x24000000 + 0x192BC),&PunchAngleFixed,6,&Hack); WriteProcessMemory(GetCurrentProcess(),(void*)(0x24000000 + 0x192C8),&PunchAngleFixed,6,&Hack);   240192D2   D986 B00B0000    FLD DWORD PTR DS:[ESI+BB0] 240192D8   D807             FADD DWORD PTR DS:[EDI] 240192DA   D91F             FSTP DWORD PTR DS:[EDI] 240192DC   D986 B40B0000    FLD DWORD PTR DS:[ESI+BB4] 240192E2   D847 04          FADD DWORD PTR DS:[EDI+4] 240192E5   D95F 04          FSTP DWORD PTR DS:[EDI+4] 240192E8   D986 B80B0000    FLD DWORD PTR DS:[ESI+BB8]   
 
  Meine Methode:
 
 CPP Code: VOID PatchVisualRecoil ( BOOL bEnabled, DWORD dwOffset ) { 	BYTE ucPunchAngleX = 0x90; 	BYTE ucPunchAngleY = 0x94; 	BYTE ucPunchAngleZ = 0x98; 	BYTE ucPunchAnglePatched = 0x48;   	DWORD dwOldPageFlags = 0x0;   	if ( VirtualProtect ( ( PVOID ) dwOffset, 26, PAGE_EXECUTE_READWRITE, &dwOldPageFlags ) ) 	{ 		if ( bEnabled ) 		{ 			memset ( ( PVOID ) ( dwOffset + 0x2 ), ucPunchAnglePatched, 1 ); 			memset ( ( PVOID ) ( dwOffset + 0xA ), ucPunchAnglePatched, 1 ); 			memset ( ( PVOID ) ( dwOffset + 0x16 ), ucPunchAnglePatched, 1 ); 		}   		else 		{ 			memset ( ( PVOID ) ( dwOffset + 0x2 ), ucPunchAngleX, 1 ); 			memset ( ( PVOID ) ( dwOffset + 0xA ), ucPunchAngleY, 1 ); 			memset ( ( PVOID ) ( dwOffset + 0x16 ), ucPunchAngleZ, 1 ); 		}   		VirtualProtect ( ( PVOID ) dwOffset, 26, dwOldPageFlags, &dwOldPageFlags ); 		FlushInstructionCache ( GetCurrentProcess( ), &dwOffset, 26 ); 	}   } 
 
  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.
  
		 |