7 KiB
Frida Tutorial 1
Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!
Ander maniere om HackTricks te ondersteun:
- As jy jou maatskappy geadverteer wil sien in HackTricks of HackTricks in PDF wil aflaai Kyk na die INSKRYWINGSPLANNE!
- Kry die amptelike PEASS & HackTricks swag
- Ontdek Die PEASS Familie, ons versameling van eksklusiewe NFTs
- Sluit aan by die 💬 Discord-groep of die telegram-groep of volg ons op Twitter 🐦 @carlospolopm.
- Deel jou haktruuks deur PRs in te dien by die HackTricks en HackTricks Cloud github-opslag.
![](/Mirrors/hacktricks/media/commit/8735e490d33a2588ae3800950f580d88acc333a9/.gitbook/assets/i3.png)
Bug bounty wenk: teken aan vir Intigriti, 'n premium bug bounty platform geskep deur hackers, vir hackers! Sluit by ons aan by https://go.intigriti.com/hacktricks vandag, en begin om belonings te verdien tot $100,000!
{% embed url="https://go.intigriti.com/hacktricks" %}
Dit is 'n opsomming van die pos: https://medium.com/infosec-adventures/introduction-to-frida-5a3f51595ca1
APK: https://github.com/t0thkr1s/frida-demo/releases
Bronkode: https://github.com/t0thkr1s/frida-demo
Python
Frida laat jou toe om JavaScript-kode in te voeg binne funksies van 'n lopende aansoek. Maar jy kan python gebruik om die hake te roep en selfs om met die hake te interaksieer.
Hierdie is 'n maklike python-skrip wat jy kan gebruik met al die voorgestelde voorbeelde in hierdie handleiding:
#hooking.py
import frida, sys
with open(sys.argv[1], 'r') as f:
jscode = f.read()
process = frida.get_usb_device().attach('infosecadventures.fridademo')
script = process.create_script(jscode)
print('[ * ] Running Frida Demo application')
script.load()
sys.stdin.read()
Roep die skrip op:
python hooking.py <hookN.js>
Dit is nuttig om te weet hoe om Python saam met Frida te gebruik, maar vir hierdie voorbeelde kan jy ook direk Frida aanroep deur die opdraglyn frida-gereedskap te gebruik:
frida -U --no-pause -l hookN.js -f infosecadventures.fridademo
Haak 1 - Booleaanse Omgang
Hier kan jy sien hoe om 'n haak 'n booleaanse metode (checkPin) van die klas: infosecadventures.fridademo.utils.PinUtil
//hook1.js
Java.perform(function() {
console.log("[ * ] Starting implementation override...")
var MainActivity = Java.use("infosecadventures.fridademo.utils.PinUtil");
MainActivity.checkPin.implementation = function(pin){
console.log("[ + ] PIN check successfully bypassed!")
return true;
}
});
python hooking.py hook1.js
Kyk: Die funksie ontvang 'n String as parameter, is oorlading nie nodig nie?
Hook 2 - Funksie Bruteforce
Nie-Statiese Funksie
As jy 'n nie-statiese funksie van 'n klas wil aanroep, benodig jy eers 'n instansie van daardie klas. Daarna kan jy daardie instansie gebruik om die funksie aan te roep.
Om dit te doen, kan jy 'n bestaande instansie vind en dit gebruik:
Java.perform(function() {
console.log("[ * ] Starting PIN Brute-force, please wait...");
Java.choose("infosecadventures.fridademo.utils.PinUtil", {
onMatch: function(instance) {
console.log("[ * ] Instance found in memory: " + instance);
for(var i = 1000; i < 9999; i++){
if(instance.checkPin(i + "") == true){
console.log("[ + ] Found correct PIN: " + i);
break;
}
}
},
onComplete: function() { }
});
});
Statische Funksie
Indien die funksie staties is, kan jy dit net oproep:
//hook2.js
Java.perform(function () {
console.log("[ * ] Starting PIN Brute-force, please wait...")
var PinUtil = Java.use("infosecadventures.fridademo.utils.PinUtil");
for(var i=1000; i < 9999; i++)
{
if(PinUtil.checkPin(i+"") == true){
console.log("[ + ] Found correct PIN: " + i);
}
}
});
Haak 3 - Ophaling van argumente en terugkeerwaarde
Jy kan 'n funksie haak en dit afdruk die waarde van die oorgevoerde argumente en die waarde van die terugkeerwaarde:
//hook3.js
Java.perform(function() {
console.log("[ * ] Starting implementation override...")
var EncryptionUtil = Java.use("infosecadventures.fridademo.utils.EncryptionUtil");
EncryptionUtil.encrypt.implementation = function(key, value){
console.log("Key: " + key);
console.log("Value: " + value);
var encrypted_ret = this.encrypt(key, value); //Call the original function
console.log("Encrypted value: " + encrypted_ret);
return encrypted_ret;
}
});
Belangrik
In hierdie handleiding het jy metodes gehook deur die naam van die metode en .implementering. Maar as daar meer as een metode met dieselfde naam is, sal jy die metode moet spesifiseer wat jy wil hook deur die tipe van die argumente aan te dui.
Jy kan dit sien in die volgende handleiding.
![](/Mirrors/hacktricks/media/commit/8735e490d33a2588ae3800950f580d88acc333a9/.gitbook/assets/i3.png)
Bug bounty wenk: teken aan vir Intigriti, 'n premium bug bounty platform geskep deur hackers, vir hackers! Sluit by ons aan by https://go.intigriti.com/hacktricks vandag, en begin om belonings te verdien tot $100,000!
{% embed url="https://go.intigriti.com/hacktricks" %}
Leer AWS hakwerk van niks tot held met htARTE (HackTricks AWS Red Team Expert)!
Ander maniere om HackTricks te ondersteun:
- As jy wil sien dat jou maatskappy geadverteer word in HackTricks of HackTricks aflaai in PDF-formaat Kyk na die INSKRYWINGSPLANNE!
- Kry die amptelike PEASS & HackTricks swag
- Ontdek Die PEASS Familie, ons versameling van eksklusiewe NFTs
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @carlospolopm.
- Deel jou haktruuks deur PRs in te dien by die HackTricks en HackTricks Cloud github repos.