使用 smalidea 在 Intellij 调试器中调试 smali 代码时访问虚拟寄存器

loc*_*cct 5 android intellij-idea

我目前正在学习调试 smali 代码,我正在使用这个工具(https://github.com/devadvance/rootinspector)作为例子。

在一个代码片段中,它是这样写的

    public boolean checkRootMethod3() {
    Log.d(Main.TAG, "check4");
    try {
        File file = new File("/system/xbin/su");
        return file.exists();
    } catch (Exception e) {
            return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

对应的smali代码如下

.method public checkRootMethod3()Z
.locals 4

.prologue
.line 76
const-string v2, "RootInspector"

const-string v3, "check4"

invoke-static {v2, v3}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I

.line 78
:try_start_0
new-instance v1, Ljava/io/File;

const-string v2, "/system/xbin/su"

invoke-direct {v1, v2}, Ljava/io/File;-><init>(Ljava/lang/String;)V

.line 79
.local v1, "file":Ljava/io/File;
invoke-virtual {v1}, Ljava/io/File;->exists()Z
:try_end_0
.catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0

move-result v2

.line 81
.end local v1    # "file":Ljava/io/File;
:goto_0
return v2
Run Code Online (Sandbox Code Playgroud)

在 Intellij 调试器的变量窗口中,当我逐步执行代码时,我只能看到“this”对象和 File 变量。

有什么方法可以直接修改虚拟寄存器(v1、v2 等),因为其中一个虚拟寄存器保存返回值。