1

I have been trying to reverse engineer an Android application and was wondering how I would go about logging a certain string. Here is the method I am trying to log the String from:

.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

For reference, here is that method again when decompiled with jadx.

private byte[] getValue(String parameter) {
    return EncodingUtils.getBytes(this.newSettings.newValue + parameter, "UTF-8");
}

I was hoping to log “this.newSettings.newValue” as seen in the jadx method, and I’m guessing it would be:

iget-object v1, v1, Lcom/directory/NewSettings;->newValue:Ljava/lang/String;

In the smali.

The only problem is I don’t know how to log it, I am able to log “parameter” by using

const-string v0, “PARAMETER:” 
invoke-static {v0, p1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I 

But I’m not sure how to go about it if its referenced within the method, rather than being "passed" to it.

0 Answers0