Autoit Bytes/ASM Code kopieren

11/22/2014 15:34 golle12#1
Guten Tag Elitepvpers

und zwar habe ich folgendes Problem ich bin gerade dabei einen Auto Updater der jeden Patch funktionieren soll hierbei sollen auch Calls geänderten werden welche sich nach jedem Patch ändern und da wollte ich fragen wie ich es realisieren kann den Call auf die Adresse/Funktion zu überschreiben ohne das ich dies jedesmal von Hand machen muss. Also zum Beispiel "Call 00753989"(ist nur ein Beispiel) das Programm soll die Adresse/Funktion finden und durch den oben genannten (ist nur ein Beispiel) "Call 00652987" geändert werden. Hoffe ihr könnt mir helfen.
Danke
11/22/2014 17:14 DeluxeDose#2
Hi,
solang du weist wie der Call in Hex aussieht, ist das kein Thema. (ich hatte nur jmps die ich überschreiben musste mit z.B. E8F0230000 => 9090909090)

fileopen("filename",16)
=> Hex-Call suchen und ersetzten
Datei speichern, fertig (ggf Backup, sollte es mal die Datei zerschießen)
Vllt. gibt es auch elegantere Lösung, so war zumindest meine.

lg Dose
11/22/2014 17:24 golle12#3
Danke für deine Lösung die Problematik ist ja das sich die Bytes von der 2 bis zur 5 Stelle verändern dadurch verändert sich ja auch der Hex Wert. Und wie weiß ich wie der Call in Hex aussieht ? (E87F9CAC00) <-- Das vlt ? Und wie kann ich dies beim verändern des Calls zu einer anderen Adresse anpassen?

mfg golle12
11/22/2014 20:41 BladeTiger12#4
Berechnen:
(Falls du das meinst)
$dwCall = Das was es aufrufen soll.
$dwAddress = Da wo der Call steht.

Code:
$bytes = CalcCall(0x458238, 0x39182F)
MsgBox(0, "", "Bytes: " & $bytes)

Func CalcCall($dwCall, $dwAddress)
	If Not IsInt($dwCall) Then $dwCall = Dec(StringReplace($dwCall, "0x", ""))
	If Not IsInt($dwAddress) Then $dwAddress = Dec(StringReplace($dwAddress, "0x", ""))
	Return Byte_Reverse(StringReplace(Hex( $dwCall - $dwAddress - 5 , 8 ), "0x", ""))
EndFunc

Func Byte_Reverse($sBytes)
	Local $sReversed = ""
	For $i = StringLen($sBytes) -1 To 1 Step -2
		$sReversed &= StringMid($sBytes, $i, 2)
	Next
	Return $sReversed
EndFunc