use*_*149 18 instrumentation android
大家.我在Dalvik字节码的仪器上遇到了问题.
原始字节码是:
virtual methods
.method public onClick(Landroid/view/View;)V
.locals 12
.param p1, "v" # Landroid/view/View;
...
return-void
.end method
Run Code Online (Sandbox Code Playgroud)
要打印一些东西,我需要添加4个新寄存器.但是,12(本地)+2(参数)+4(新)> 16将导致某些指令出现问题.
所以,我想到了一个吹嘘的想法:
整个寄存器的数量是20. v0-v11是本地的,v18-v19是参数.
首先将v18-v19移动到v12-v13,参数寄存器在v15内.此外,
我们需要修改p0到v12,p1到v13.
如果我们想使用4个新寄存器,请将v0-v3移至v14-17.处理完4个新寄存器后,将v14-v17移回v0-v3.
新的字节码变为:
virtual methods
.method public onClick(Landroid/view/View;)V
.locals 18
.param p1, "v" # Landroid/view/View;
move v12, v18
move v13, v19
...
//want to use 4 new registers
move v14, v0
move v15, v1
move v16, v2
move v17, v3
//use 4 new registers
move v0, v14
move v1, v15
move v2, v16
move v3, v17
return-void
.end method
Run Code Online (Sandbox Code Playgroud)
不幸的是,我遇到了Java.lang.VerifyError.谁能帮助我?谢谢.
| 归档时间: |
|
| 查看次数: |
378 次 |
| 最近记录: |