1 回答

TA貢獻1934條經驗 獲得超2個贊
當你編輯 smali 代碼時,你應該小心處理寄存器。my_code的 main 方法有 5 個寄存器(即 4 個本地和 1 個參數),而original_file' 的 main 方法有 2 個寄存器(即 1 個本地和 1 個參數)。在添加my_codeto之前original_file,您應該決定需要多少寄存器。在這個例子中,5 個寄存器(即 4 個本地和 1 個參數)就足夠了。
最終main方法(沒有.line和.param指令):
.method public static main([Ljava/lang/String;)V
.registers 5
.prologue
array-length v1, p0
const/4 v0, 0x0
:goto_2
if-ge v0, v1, :cond_e
aget-object v2, p0, v0
sget-object v3, Ljava/lang/System;->out:Ljava/io/PrintStream;
invoke-virtual {v3, v2}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
add-int/lit8 v0, v0, 0x1
goto :goto_2
:cond_e
new-instance v0, Lcom/android/commands/locksettings/LockSettingsCmd;
invoke-direct {v0}, Lcom/android/commands/locksettings/LockSettingsCmd;-><init>()V
invoke-virtual {v0, p0}, Lcom/android/commands/locksettings/LockSettingsCmd;->run([Ljava/lang/String;)V
const/4 v0, 0x0
invoke-virtual {v0, p0}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
return-void
.end method
添加回答
舉報