我一直在尝试对 Android 应用程序进行逆向工程,并想知道如何记录某个字符串。这是我尝试从以下位置记录字符串的方法:
.method private getValue(Ljava/lang/String;)[B
.locals 2
.param p1, "parameter" # Ljava/lang/String;
.prologue
.line 216
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
iget-object v1, p0, Lcom/directory/theseSettings;->newSettings:Lcom/directory/NewSettings;
iget-object v1, v1, Lcom/directory/NewSettings;->newValue:Ljava/lang/String;
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
const-string v1, "UTF-8"
invoke-static {v0, v1}, Lorg/apache/http/util/EncodingUtils;->getBytes(Ljava/lang/String;Ljava/lang/String;)[B
move-result-object v0
return-object v0
.end method
作为参考,这里是用jadx反编译时的那个方法。
private byte[] getValue(String parameter) {
return EncodingUtils.getBytes(this.newSettings.newValue + parameter, "UTF-8");
}
我希望记录在 jadx 方法中看到的“this.newSettings.newValue”,我猜它会是:
iget-object v1, v1, Lcom/directory/NewSettings;->newValue:Ljava/lang/String;
在斯马里。
唯一的问题是我不知道如何记录它,我可以通过使用记录“参数”
const-string v0, “PARAMETER:”
invoke-static {v0, p1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
但是如果在方法中引用它而不是“传递”给它,我不确定如何处理它。