How to restore userspace context on T32

  1. 找到这个task和对应的userspace call stack,一般userspace stack在恢复之前只有一行10个数字的用户层虚拟地址。

例如case 04941430 下面这个task com.miui.home.

  1. 找到这个task的 mm->pgd,并把它映射成物理地址。在T32 对话框中映射成物理地址:  mmu.list.PageTable 0xFFFFFF8053866000,  物理地址是0xD3866000

  1. 点击 T32中的 Context-A53, 选择 memory management unit, 出现下面的对话框。

  1. 双击 TTBR0_EL1 左边的数字,把换算出来的 mm->pgd 的物理地址替换这个数字。 PER.Set.simple SPR:0x30200 %Quad 0xD3866000, 然后回车。

  1. 接着在T32的对话框命令行中输入mmu.off

  1. 然后输入mmu.scan,这个时间比较长,超个一个钟,等到它扫描完成

  1. 然后输入 mmu.on

  1. 右击这个task,选择Display detailed.

10. 在弹出的对话框中,展开code file,里面是这个task所有的加载的库或者执行文件的虚拟地址。

然后找这个task当前call stack 1中所在的 NUX:0x7D94634624(asm) 这个地址所对应的是哪一个库或者二进制文件。

找到这个lib,例如0x7D94634624 对应的库是libhwui.so,那么就找到这个库的地址是 0x7D94365000, 然后把这个库加载到这个地址就可以了。

如果 call stack 中因为

7.解析call stack的时候可能会出现下面的异常地址:

看一下此时的SP 是多少:

 

 

通过下面的命令修复

Data.Set NUD:0x7E102D0B88 %LE %Quad 0x7E23AD3EE0

同样的命令修复同样的问题:

Data.Set NUD:0x7E102D0BF8 %LE %Quad 0x7EA612F54C

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值