Bug-Bounty-Tipp : Melde dich an bei Intigriti , einer Premium-Bug-Bounty-Plattform, die von Hackern für Hacker erstellt wurde ! Schließe dich uns heute an unter https://go.intigriti.com/hacktricks und beginne, Prämien von bis zu $100.000 zu verdienen!
Dies ist eine Zusammenfassung des Beitrags : https://joshspicer.com/android-frida-1
APK : https://github.com/OWASP/owasp-mstg/blob/master/Crackmes/Android/Level_01/UnCrackable-Level1.apk
Lösung 1
Basierend auf https://joshspicer.com/android-frida-1
Hook die _exit() _ Funktion und entschlüssle die Funktion , damit sie die Flagge in der Frida-Konsole ausgibt, wenn du auf Überprüfen drückst:
Copy Java .perform ( function () {
send ( "Starting hooks OWASP uncrackable1..." );
function getString (data){
var ret = "" ;
for ( var i = 0 ; i < data . length ; i ++ ){
ret += "#" + data[i] .toString ();
}
return ret
}
var aes_decrypt = Java .use ( "sg.vantagepoint.a.a" );
aes_decrypt . a .overload ( "[B" , "[B" ). implementation = function (var_0 , var_1) {
send ( "sg.vantagepoint.a.a.a([B[B)[B doFinal(enc) // AES/ECB/PKCS7Padding" );
send ( "Key : " + getString (var_0));
send ( "Encrypted : " + getString (var_1));
var ret = this . a .overload ( "[B" , "[B" ) .call ( this , var_0 , var_1);
send ( "Decrypted : " + getString (ret));
var flag = "" ;
for ( var i = 0 ; i < ret . length ; i ++ ){
flag += String .fromCharCode (ret[i]);
}
send ( "Decrypted flag: " + flag);
return ret; //[B
};
var sysexit = Java .use ( "java.lang.System" );
sysexit . exit .overload ( "int" ). implementation = function (var_0) {
send ( "java.lang.System.exit(I)V // We avoid exiting the application :)" );
};
send ( "Hooks installed." );
});
Lösung 2
Basierend auf https://joshspicer.com/android-frida-1
Hook rootchecks und entschlüsseln Sie die Funktion, damit sie das Flag in der Frida-Konsole ausgibt, wenn Sie auf Überprüfen drücken:
Copy Java .perform ( function () {
send ( "Starting hooks OWASP uncrackable1..." );
function getString (data){
var ret = "" ;
for ( var i = 0 ; i < data . length ; i ++ ){
ret += "#" + data[i] .toString ();
}
return ret
}
var aes_decrypt = Java .use ( "sg.vantagepoint.a.a" );
aes_decrypt . a .overload ( "[B" , "[B" ). implementation = function (var_0 , var_1) {
send ( "sg.vantagepoint.a.a.a([B[B)[B doFinal(enc) // AES/ECB/PKCS7Padding" );
send ( "Key : " + getString (var_0));
send ( "Encrypted : " + getString (var_1));
var ret = this . a .overload ( "[B" , "[B" ) .call ( this , var_0 , var_1);
send ( "Decrypted : " + getString (ret));
var flag = "" ;
for ( var i = 0 ; i < ret . length ; i ++ ){
flag += String .fromCharCode (ret[i]);
}
send ( "Decrypted flag: " + flag);
return ret; //[B
};
var rootcheck1 = Java .use ( "sg.vantagepoint.a.c" );
rootcheck1 . a .overload (). implementation = function () {
send ( "sg.vantagepoint.a.c.a()Z Root check 1 HIT! su.exists()" );
return false ;
};
var rootcheck2 = Java .use ( "sg.vantagepoint.a.c" );
rootcheck2 . b .overload (). implementation = function () {
send ( "sg.vantagepoint.a.c.b()Z Root check 2 HIT! test-keys" );
return false ;
};
var rootcheck3 = Java .use ( "sg.vantagepoint.a.c" );
rootcheck3 . c .overload (). implementation = function () {
send ( "sg.vantagepoint.a.c.c()Z Root check 3 HIT! Root packages" );
return false ;
};
var debugcheck = Java .use ( "sg.vantagepoint.a.b" );
debugcheck . a .overload ( "android.content.Context" ). implementation = function (var_0) {
send ( "sg.vantagepoint.a.b.a(Landroid/content/Context;)Z Debug check HIT! " );
return false ;
};
send ( "Hooks installed." );
});
Bug-Bounty-Tipp : Melden Sie sich an für Intigriti , eine Premium-Bug-Bounty-Plattform, die von Hackern für Hacker erstellt wurde ! Treten Sie uns bei https://go.intigriti.com/hacktricks heute bei und beginnen Sie, Prämien von bis zu 100.000 $ zu verdienen!
Unterstützen Sie HackTricks