二進位補丁

二進位補丁用於對裝置上的檔案或程式進行修補。使用十六進位萬用字元進行尋找與取代,支援高低位元萬用字元,例如 ?? 代表任意一個位元組,B? 代表任意以 B 開頭的位元組,如 BA B1 B9。例如萬用字元 49 BA ?? ?C 將會匹配檔案中任何符合 49 BA .. .C 格式的段落。以下呼叫將會把 test.bin 中的所有 AA BB CC D[0-9A-F] 位元組取代為 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)

提示

檔案路徑支援使用萬用字元匹配(glob)。例如 `/data/app/*/test.bin` 將會尋找並匹配 `/data/app` 目錄下任何一層目錄中的 `test.bin` 檔案。