Parche Binario

Los parches binarios se utilizan para parchear archivos o programas en el dispositivo. Utiliza comodines hexadecimales para buscar y reemplazar, soportando comodines para los nibbles alto y bajo. Por ejemplo, ?? representa cualquier byte, B? representa cualquier byte que comience con B, como BA, B1, B9. Así, el comodín 49 BA ?? ?C coincidirá con cualquier segmento en el archivo que se corresponda con 49 BA .. .C. La siguiente llamada reemplazará todos los bytes AA BB CC D[0-9A-F] en test.bin por AA BB CC DD, y la interfaz devolverá el número de reemplazos y sus desplazamientos (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

Nota

El ejemplo solo muestra una coincidencia y reemplazo de cuatro bytes, pero la interfaz soporta la coincidencia y reemplazo de cualquier número de bytes, siempre que haya al menos dos caracteres de coincidencia válidos.

Para limitar el número máximo de reemplazos, utilice el parámetro maxreplace. Por defecto, se reemplazan todas las coincidencias.

d.hex_patch("AA BB CC D?", "AA BB CC DD", "/data/test.bin", maxreplace=2)

También hay un modo de prueba, que solo buscará las ubicaciones coincidentes en el archivo sin realizar ninguna operación de reemplazo.

d.hex_patch("AA BB ?? ??", "AA BB 00 00", "/data/test.bin", dryrun=True)

Sugerencia

La ruta del archivo admite el uso de comodines (glob). Por ejemplo, `/data/app/*/test.bin` buscará y encontrará coincidencias con el archivo `test.bin` en cualquier subdirectorio de primer nivel dentro de `/data/app`.