Бинарный патч¶
Бинарные патчи используются для внесения исправлений в файлы или программы на устройстве. Для поиска и замены используются шестнадцатеричные маски, поддерживающие подстановку для старшего и младшего полубайта. Например, ?? представляет любой байт, B? представляет любой байт, начинающийся с B (например, BA, B1, B9), а маска 49 BA ?? ?C будет соответствовать любому сегменту в файле, совпадающему с 49 BA .. .C. Следующий вызов заменит все байты AA BB CC D[0-9A-F] в файле test.bin на AA BB CC DD, и интерфейс вернет количество замен и их смещения.
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
Примечание
Чтобы ограничить максимальное количество замен, используйте параметр maxreplace. По умолчанию заменяются все вхождения.
d.hex_patch("AA BB CC D?", "AA BB CC DD", "/data/test.bin", maxreplace=2)
Также доступен тестовый режим, который только находит совпадающие позиции в файле, но не выполняет замену.
d.hex_patch("AA BB ?? ??", "AA BB 00 00", "/data/test.bin", dryrun=True)
Подсказка