milestones-uart-first-byte-sdhci-touch-initblock

This commit is contained in:
SashegDev
2026-09-15 09:43:05 +00:00
parent d0295adc60
commit a10e53e134
+20 -1
View File
@@ -10,7 +10,8 @@ import struct
import sys
from unicorn import (Uc, UC_ARCH_ARM, UC_MODE_THUMB, UC_HOOK_MEM_UNMAPPED,
UC_HOOK_MEM_WRITE, UC_HOOK_CODE)
UC_HOOK_MEM_WRITE, UC_HOOK_CODE,
UC_HOOK_MEM_READ)
from unicorn.arm_const import (UC_ARM_REG_R0, UC_ARM_REG_R1, UC_ARM_REG_R2,
UC_ARM_REG_R3, UC_ARM_REG_R4, UC_ARM_REG_R5,
UC_ARM_REG_R6, UC_ARM_REG_R7, UC_ARM_REG_R8,
@@ -89,8 +90,18 @@ def main():
def hook_uw(mu, access, addr, size, value, data):
if addr == UART_TF:
uart_out.append(chr(value & 0xFF))
if len(uart_out) == 1:
print('MILESTONE uart-first-byte insn#', count[0], flush=True)
mu.hook_add(UC_HOOK_MEM_WRITE, hook_uw, begin=UART_TF, end=UART_TF)
_mio = []
def hook_mio(mu, access, addr, size, value, data):
if not _mio:
from unicorn import UC_MEM_READ as _MR
print('MILESTONE sdhci-touch', 'read' if access == _MR else 'write', 'insn#', count[0], flush=True)
_mio.append(addr)
mu.hook_add(UC_HOOK_MEM_READ, hook_mio, begin=0x07824000, end=0x07825000)
mu.hook_add(UC_HOOK_MEM_WRITE, hook_mio, begin=0x07824000, end=0x07825000)
entry = load_elf(mu, path)
for r in range(13):
mu.reg_write(UC_ARM_REG_R0 + r, 0)
@@ -139,6 +150,8 @@ def main():
_trap_n = [int(sys.argv[sys.argv.index("--trapn") + 1])]
_spmax = [0x085FFF00]
_spd = [None]
_ms = [ [0x802F970, 0x802F974, 'initblock-call2'],
[0x802F99E, 0x802F9A2, 'initblock-ret']]
_spb = {} if '--sphist' in sys.argv else None
_tpop = [] if '--tpop' in sys.argv else None
_splog = [] if "--spytrack" in sys.argv else None
@@ -157,6 +170,12 @@ def main():
def hook_code(mu, addr, size, data):
count[0] += 1
last[0] = addr
if _ms:
for _m in _ms:
if _m[0] <= addr < _m[1]:
print('MILESTONE', _m[2], 'insn#', count[0], flush=True)
_ms.remove(_m)
break
if _spb is not None:
try:
_spn = mu.reg_read(UC_ARM_REG_SP)