Binärer Patch¶
Binäre Patches werden verwendet, um Dateien oder Programme auf einem Gerät zu patchen. Es verwendet hexadezimale Wildcards zum Suchen und Ersetzen und unterstützt Wildcards für High- und Low-Nibbles. So steht ?? für ein beliebiges Byte, B? für ein beliebiges Byte, das mit B beginnt, wie z.B. BA, B1, B9. Der Wildcard 49 BA ?? ?C wird beispielsweise jede Sequenz in der Datei finden, die mit 49 BA .. .C übereinstimmt. Der folgende Aufruf ersetzt alle Byte-Sequenzen AA BB CC D[0-9A-F] in test.bin durch AA BB CC DD. Die Funktion gibt die Anzahl der Ersetzungen und deren Offsets zurück.
d.hex_patch("AA BB CC D?", "AA BB CC DD", "/data/test.bin")
>>> result = d.hex_patch("AA BB CC D?", "AA BB CC DD", "/data/test.bin")
>>> print (result.count)
1
>>> print (result.replaces[0].offset)
8123
Notiz
Um die maximale Anzahl der Ersetzungen zu begrenzen, verwenden Sie den Parameter maxreplace. Standardmäßig werden alle Vorkommen ersetzt.
d.hex_patch("AA BB CC D?", "AA BB CC DD", "/data/test.bin", maxreplace=2)
Es gibt auch einen Testmodus. In diesem Modus werden nur die übereinstimmenden Positionen in der Datei gefunden, ohne eine Ersetzung durchzuführen.
d.hex_patch("AA BB ?? ??", "AA BB 00 00", "/data/test.bin", dryrun=True)
Hinweis