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
添加回答
举报