diff --git a/patch.py b/patch.py index 1f7fe68..4e059b1 100644 --- a/patch.py +++ b/patch.py @@ -32,9 +32,35 @@ def replace_key(old,new,data,name=''): if old_bytes in data: print(f'{name} public key patched {old[:16].hex().upper()}...') data = data.replace(old_bytes,new_bytes) - old_codes = [bytes.fromhex('793583E2'),bytes.fromhex('FD3A83E2'),bytes.fromhex('193D83E2')] - new_codes = [bytes.fromhex('FF34A0E3'),bytes.fromhex('753C83E2'),bytes.fromhex('FC3083E2')] + old_codes = [bytes.fromhex('793583E2'),bytes.fromhex('FD3A83E2'),bytes.fromhex('193D83E2')] #0x1e400000+0xfd000+0x640 + new_codes = [bytes.fromhex('FF34A0E3'),bytes.fromhex('753C83E2'),bytes.fromhex('FC3083E2')] #0xff0075fc= 0xff000000+0x7500+0xfc data = replace_chunks(old_codes, new_codes, data,name) + else: + def conver_chunks(data:bytes): + ret = [ + (data[2] << 16) | (data[1] << 8) | data[0] | ((data[3] << 24) & 0x03000000), + (data[3] >> 2) | (data[4] << 6) | (data[5] << 14) | ((data[6] << 22) & 0x1C00000), + (data[6] >> 3) | (data[7] << 5) | (data[8] << 13) | ((data[9] << 21) & 0x3E00000), + (data[9] >> 5) | (data[10] << 3) | (data[11] << 11) | ((data[12] << 19) & 0x1F80000), + (data[12] >> 6) | (data[13] << 2) | (data[14] << 10) | (data[15] << 18), + data[16] | (data[17] << 8) | (data[18] << 16) | ((data[19] << 24) & 0x01000000), + (data[19] >> 1) | (data[20] << 7) | (data[21] << 15) | ((data[22] << 23) & 0x03800000), + (data[22] >> 3) | (data[23] << 5) | (data[24] << 13) | ((data[25] << 21) & 0x1E00000), + (data[25] >> 4) | (data[26] << 4) | (data[27] << 12) | ((data[28] << 20) & 0x3F00000), + (data[28] >> 6) | (data[29] << 2) | (data[30] << 10) | (data[31] << 18) + ] + return [struct.pack('