リストの別のメンバーにアクセスするたびに変数がインクリメントされるように、smali を使用して apk ファイルを変更しようとしています。
public static int
最初に名前付きを宣言し、val1
次にこのコードを実装します。
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++;
}
スマリコード:
.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