.. | ||
frida-tutorial-1.md | ||
frida-tutorial-2.md | ||
objection-tutorial.md | ||
owaspuncrackable-1.md | ||
README.md |
Tutoriel Frida
Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge AWS de HackTricks)!
Autres façons de soutenir HackTricks :
- Si vous souhaitez voir votre entreprise annoncée dans HackTricks ou télécharger HackTricks en PDF, consultez les PLANS D'ABONNEMENT !
- Obtenez le swag officiel PEASS & HackTricks
- Découvrez La famille PEASS, notre collection exclusive de NFT
- Rejoignez le 💬 groupe Discord ou le groupe Telegram ou suivez-nous sur Twitter 🐦 @carlospolopm.
- Partagez vos astuces de piratage en soumettant des PR aux HackTricks et HackTricks Cloud dépôts GitHub.
![](/Mirrors/hacktricks/media/commit/6ff7ee387a8358d93955baee95fe2f3fb3a4b97b/.gitbook/assets/i3.png)
Astuce de prime de bug : inscrivez-vous sur Intigriti, une plateforme de prime de bug premium créée par des pirates, pour des pirates ! Rejoignez-nous sur https://go.intigriti.com/hacktricks aujourd'hui, et commencez à gagner des primes allant jusqu'à 100 000 $ !
{% embed url="https://go.intigriti.com/hacktricks" %}
Installation
Installez les outils frida :
pip install frida-tools
pip install frida
Téléchargez et installez sur l'Android le serveur frida (Téléchargez la dernière version).
Une commande pour redémarrer adb en mode root, se connecter, télécharger frida-server, donner les permissions d'exécution et l'exécuter en arrière-plan:
{% code overflow="wrap" %}
adb root; adb connect localhost:6000; sleep 1; adb push frida-server /data/local/tmp/; adb shell "chmod 755 /data/local/tmp/frida-server"; adb shell "/data/local/tmp/frida-server &"
{% endcode %}
Vérifiez si cela fonctionne :
frida-ps -U #List packages and processes
frida-ps -U | grep -i <part_of_the_package_name> #Get all the package name
Tutoriels
Tutoriel 1
De: https://medium.com/infosec-adventures/introduction-to-frida-5a3f51595ca1
APK: https://github.com/t0thkr1s/frida-demo/releases
Code source: https://github.com/t0thkr1s/frida-demo
Suivez le lien pour le lire.
Tutoriel 2
De: https://11x256.github.io/Frida-hooking-android-part-2/ (Parties 2, 3 & 4)
APKs et code source: https://github.com/11x256/frida-android-examples
Suivez le lien pour le lire.
Tutoriel 3
De: https://joshspicer.com/android-frida-1
APK: https://github.com/OWASP/owasp-mstg/blob/master/Crackmes/Android/Level_01/UnCrackable-Level1.apk
Suivez le lien pour le lire.
Vous pouvez trouver plus de scripts impressionnants de Frida ici: https://codeshare.frida.re/
Exemples Rapides
Appeler Frida depuis la ligne de commande
frida-ps -U
#Basic frida hooking
frida -l disableRoot.js -f owasp.mstg.uncrackable1
#Hooking before starting the app
frida -U --no-pause -l disableRoot.js -f owasp.mstg.uncrackable1
#The --no-pause and -f options allow the app to be spawned automatically,
#frozen so that the instrumentation can occur, and the automatically
#continue execution with our modified code.
Script Python de base
import frida, sys
jscode = open(sys.argv[0]).read()
process = frida.get_usb_device().attach('infosecadventures.fridademo')
script = process.create_script(jscode)
print('[ * ] Running Frida Demo application')
script.load()
sys.stdin.read()
Accrocher des fonctions sans paramètres
Accrochez la fonction a()
de la classe sg.vantagepoint.a.c
Java.perform(function () {
; rootcheck1.a.overload().implementation = function() {
rootcheck1.a.overload().implementation = function() {
send("sg.vantagepoint.a.c.a()Z Root check 1 HIT! su.exists()");
return false;
};
});
Hook java exit()
Crochet exit()
en Java
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 :)");
};
Hook MainActivity .onStart()
& .onCreate()
English
To hook the onStart()
and onCreate()
methods of the MainActivity class, you can use Frida to intercept and modify the behavior of these methods in an Android application.
Here is an example script that demonstrates how to hook these methods using Frida:
Java.perform(function() {
var MainActivity = Java.use('com.example.MainActivity');
MainActivity.onStart.implementation = function() {
console.log('onStart() hooked');
this.onStart();
};
MainActivity.onCreate.implementation = function() {
console.log('onCreate() hooked');
this.onCreate();
};
});
By running this Frida script, you can intercept the onStart()
and onCreate()
methods of the MainActivity class and add your custom logic or modifications.
French
Pour accrocher les méthodes onStart()
et onCreate()
de la classe MainActivity, vous pouvez utiliser Frida pour intercepter et modifier le comportement de ces méthodes dans une application Android.
Voici un exemple de script qui montre comment accrocher ces méthodes en utilisant Frida :
Java.perform(function() {
var MainActivity = Java.use('com.example.MainActivity');
MainActivity.onStart.implementation = function() {
console.log('onStart() accroché');
this.onStart();
};
MainActivity.onCreate.implementation = function() {
console.log('onCreate() accroché');
this.onCreate();
};
});
En exécutant ce script Frida, vous pouvez intercepter les méthodes onStart()
et onCreate()
de la classe MainActivity et ajouter votre propre logique ou modifications.
var mainactivity = Java.use("sg.vantagepoint.uncrackable1.MainActivity");
mainactivity.onStart.overload().implementation = function() {
send("MainActivity.onStart() HIT!!!");
var ret = this.onStart.overload().call(this);
};
mainactivity.onCreate.overload("android.os.Bundle").implementation = function(var_0) {
send("MainActivity.onCreate() HIT!!!");
var ret = this.onCreate.overload("android.os.Bundle").call(this,var_0);
};
Hook android .onCreate()
English
Java.perform(function() {
var Activity = Java.use('android.app.Activity');
Activity.onCreate.implementation = function() {
console.log('onCreate() called');
this.onCreate();
};
});
French
Java.perform(function() {
var Activity = Java.use('android.app.Activity');
Activity.onCreate.implementation = function() {
console.log('onCreate() appelé');
this.onCreate();
};
});
var activity = Java.use("android.app.Activity");
activity.onCreate.overload("android.os.Bundle").implementation = function(var_0) {
send("Activity HIT!!!");
var ret = this.onCreate.overload("android.os.Bundle").call(this,var_0);
};
Accrocher des fonctions avec des paramètres et récupérer la valeur
Accrocher une fonction de décryptage. Imprimer l'entrée, appeler la fonction originale pour décrypter l'entrée et enfin, imprimer les données en clair:
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 : " + ret);
var flag = "";
for (var i=0; i < ret.length; i++){
flag += String.fromCharCode(ret[i]);
}
send("Decrypted flag: " + flag);
return ret; //[B
};
Accrocher des fonctions et les appeler avec notre entrée
Accrochez une fonction qui reçoit une chaîne de caractères et appelez-la avec une autre chaîne de caractères (à partir d'ici)
var string_class = Java.use("java.lang.String"); // get a JS wrapper for java's String class
my_class.fun.overload("java.lang.String").implementation = function(x){ //hooking the new function
var my_string = string_class.$new("My TeSt String#####"); //creating a new String by using `new` operator
console.log("Original arg: " +x );
var ret = this.fun(my_string); // calling the original function with the new String, and putting its return value in ret variable
console.log("Return value: "+ret);
return ret;
};
Obtenir un objet déjà créé d'une classe
Si vous souhaitez extraire un attribut d'un objet créé, vous pouvez utiliser ceci.
Dans cet exemple, vous allez voir comment obtenir l'objet de la classe my_activity et comment appeler la fonction .secret() qui affichera un attribut privé de l'objet:
Java.choose("com.example.a11x256.frida_test.my_activity" , {
onMatch : function(instance){ //This function will be called for every instance found by frida
console.log("Found instance: "+instance);
console.log("Result of secret func: " + instance.secret());
},
onComplete:function(){}
});
Autres tutoriels sur Frida
- https://github.com/DERE-ad2001/Frida-Labs
- Partie 1 de la série de blogs sur l'utilisation avancée de Frida : Bibliothèques de chiffrement IOS
![](/Mirrors/hacktricks/media/commit/6ff7ee387a8358d93955baee95fe2f3fb3a4b97b/.gitbook/assets/i3.png)
Astuce de prime de bug : inscrivez-vous sur Intigriti, une plateforme de prime de bug premium créée par des hackers, pour des hackers ! Rejoignez-nous sur https://go.intigriti.com/hacktricks aujourd'hui, et commencez à gagner des primes allant jusqu'à 100 000 $!
{% embed url="https://go.intigriti.com/hacktricks" %}
Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge AWS de HackTricks)!
Autres façons de soutenir HackTricks:
- Si vous souhaitez voir votre entreprise annoncée dans HackTricks ou télécharger HackTricks en PDF Consultez les PLANS D'ABONNEMENT!
- Obtenez le swag officiel PEASS & HackTricks
- Découvrez La famille PEASS, notre collection exclusive de NFTs
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez nous sur Twitter 🐦 @carlospolopm.
- Partagez vos astuces de piratage en soumettant des PR aux HackTricks et HackTricks Cloud github repos.