Доступ к виртуальным регистрам при отладке кода smali в отладчике Intellij с smallidea - PullRequest
0 голосов
/ 13 июня 2018

В настоящее время я изучаю отладочный код 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;
    }
}

Соответствующий код 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

В окне «Переменные» отладчика Intellij я могу видеть только объект «this» и переменную File, когда я прохожу код.

Можно ли каким-либо образом изменить виртуальные регистры (v1, v2 и т. Д.) Напрямую, поскольку один из виртуальных регистров содержит возвращаемое значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...