Patch Binaire¶
Les patchs binaires sont utilisés pour corriger des fichiers ou des programmes sur un appareil. Ils effectuent une recherche et un remplacement à l'aide de caractères génériques hexadécimaux. La correspondance partielle d'octets est prise en charge : par exemple, ?? représente n'importe quel octet, et B? représente n'importe quel octet commençant par B (comme BA, B1, B9). Ainsi, les caractères génériques 49 BA ?? ?C correspondront à n'importe quel segment du fichier qui correspond au motif 49 BA .. .C. L'appel suivant remplacera toutes les occurrences de la séquence d'octets AA BB CC D[0-9A-F] par AA BB CC DD dans le fichier test.bin. L'interface retournera le nombre de remplacements effectués ainsi que leurs offsets.
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
Remarque
Pour limiter le nombre maximal de remplacements, utilisez le paramètre maxreplace. Par défaut, toutes les correspondances sont remplacées.
d.hex_patch("AA BB CC D?", "AA BB CC DD", "/data/test.bin", maxreplace=2)
Il existe également un mode de simulation (dryrun), qui se contente de rechercher les correspondances dans le fichier sans effectuer de remplacement.
d.hex_patch("AA BB ?? ??", "AA BB 00 00", "/data/test.bin", dryrun=True)
Astuce