Я запустил APK через dex2jar
и JD-GUI
и нашел интересующий меня класс:
public class RESTClient {
....
private bdG.\u0269 \u02CB\u0971() {
return (new bdG.\u0269()).\u02CA((new bdq.if()).\u0971("www.google.com", new String[] { "sha256/asdIa1tHg96AnzarJ6GJLu6JiogJla3UDsPWMDICs=" }).\u02CE()).\u02CE((bdF)\u02BD\u0971()).\u02CB((bdv)\u02BC\u0971());
}
}
Я пытался использовать Frida для замены строки sha256/...
, но до сих пор не удалось.
Вот что я сделал:
Java.perform(function() {
var StringBuilder = Java.use('java.lang.StringBuilder');
StringBuilder.$init.overload('java.lang.String').implementation = function(str) {
return this.$init.call(this, str);
}
StringBuilder.toString.implementation = function() {
var result = this.toString.call(this);
if(result == "sha256/asdIa1tHg96AnzarJ6GJLu6JiogJla3UDsPWMDICs=") {
console.log("[x] Found and replaced!");
return "sha256/somethingelsegoeshere";
}
return result;
}
});
Хотя этот код действительно совпадает, возвращаемая строка, похоже, не имеет никакого эффекта. Как я могу найти и заменить строку в памяти напрямую?
РЕДАКТИРОВАТЬ: Включая jadx
вывод тоже:
private C9575bdG.C4644 m708() {
return new C9575bdG.C4644().m73741(new C9612bdq.Cif().m74142("www.google.com", "sha256/asdIa1tHg96AnzarJ6GJLu6JiogJla3UDsPWMDICs=").m74141()).m73751((C9574bdF) m695()).m73747((C9617bdv) m694());
}
РЕДАКТИРОВАТЬ: Включая вывод smali из apktool
:
.method private ˋॱ()Lo/bdG$ɩ;
.locals 6
.prologue
.line 99
new-instance v0, Lo/bdG$ɩ;
invoke-direct {v0}, Lo/bdG$ɩ;-><init>()V
new-instance v1, Lo/bdq$if;
invoke-direct {v1}, Lo/bdq$if;-><init>()V
const-string v2, "www.google.com"
const/4 v3, 0x1
new-array v3, v3, [Ljava/lang/String;
const/4 v4, 0x0
const-string v5, "sha256/asdIa1tHg96AnzarJ6GJLu6JiogJla3UDsPWMDICs="
aput-object v5, v3, v4
.line 100
invoke-virtual {v1, v2, v3}, Lo/bdq$if;->ॱ(Ljava/lang/String;[Ljava/lang/String;)Lo/bdq$if;
move-result-object v1
invoke-virtual {v1}, Lo/bdq$if;->ˎ()Lo/bdq;
move-result-object v1
invoke-virtual {v0, v1}, Lo/bdG$ɩ;->ˊ(Lo/bdq;)Lo/bdG$ɩ;
move-result-object v0
.line 101
invoke-direct {p0}, Lcom/target/android/data/remote/RESTClient;->ʽॱ()Lo/bfa;
move-result-object v1
invoke-virtual {v0, v1}, Lo/bdG$ɩ;->ˎ(Lo/bdF;)Lo/bdG$ɩ;
move-result-object v0
.line 102
invoke-direct {p0}, Lcom/target/android/data/remote/RESTClient;->ʼॱ()Lo/qz;
move-result-object v1
invoke-virtual {v0, v1}, Lo/bdG$ɩ;->ˋ(Lo/bdv;)Lo/bdG$ɩ;
move-result-object v0
.line 99
return-object v0
.end method