声明一个全局变量并在smali中增加其值



我正试图使用smali更改apk文件,以便每次访问列表的另一个成员时,变量都会递增。

我想做两件事,首先声明一个名为val1public static int,然后实现以下代码:

String str = (String)this.ListX.get(val1);
val1++;

然而,我对smali代码的了解非常有限,我希望对此有所了解。

我使用apktool将dex代码转换为smali:

Java代码:

private HashMap ListX;
public void TestCodeStatic()
{
    String str = (String)this.ListX.get(val1);
    val1++;
}

Smali代码:

.field public static val1:I
# instance fields
.field private ListX:Ljava/util/HashMap;

# virtual methods
.method public TestCodeStatic()V
    .locals 3
    .prologue
  .line 54
    iget-object v1, p0, Lcom/example/app/MainActivity;->ListX:Ljava/util/HashMap;
  .line 57
    sget v2, Lcom/example/app/MainActivity;->val1:I
  .line 60
    invoke-static {v2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
  .line 63
    move-result-object v2
  .line 66
    invoke-virtual {v1, v2}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
  .line 69
    move-result-object v0
  .line 72
    check-cast v0, Ljava/lang/String;
    .local v0, str:Ljava/lang/String;
  .line 76
    sget v1, Lcom/example/app/MainActivity;->val1:I
  .line 79
    add-int/lit8 v1, v1, 0x1
  .line 82
    sput v1, Lcom/example/app/MainActivity;->val1:I
  .line 85
    return-void
.end method

最新更新