tutti. Ho incontrato un problema sulla strumentazione sul bytecode Dalvik.Aggiungi nuovi registri sul bytecode Dalvik
Il bytecode origine è:
virtual methods
.method public onClick(Landroid/view/View;)V
.locals 12
.param p1, "v" # Landroid/view/View;
...
return-void
.end method
di stampare qualcosa, ho bisogno di aggiungere 4 nuovi registri. Tuttavia, 12 (locale) +2 (argomenti) +4 (nuovo)> 16 che porteranno a problemi per alcune istruzioni.
Quindi, penso di un'idea in modo soffiò:
Il numero di registri interi sono 20. V0-V11 sono locali, V18-V19 sono argomenti.
Spostare inizialmente da v18-v19 a v12-v13 e i registri degli argomenti sono all'interno di v15. Inoltre,
dobbiamo modificare p0 in v12, p1 in v13.
Se si desidera utilizzare 4 nuovi registri, spostare v0-v3 in v14-17. Dopo aver gestito 4 nuovi registri, sposta v14-v17 su v0-v3.
Il nuovo bytecode diventa:
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
Purtroppo, ho incontrato Java.lang.VerifyError
. Qualcuno può aiutarmi? Grazie.