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 に答える