0

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

我想做两件事,首先声明一个public static int命名val1的,其次实现这个代码:

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

但是,我对 smali 代码的了解非常有限,我想对此有所了解。

4

1 回答 1

0

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

Java 代码:

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

斯马里代码:

.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
于 2014-03-20T02:37:41.527 回答