Frida Tutorial 1

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Ondersteun HackTricks

Bug bounty wenk: meld aan vir Intigriti, 'n premium bug bounty platform geskep deur hackers, vir hackers! Sluit vandag by ons aan by https://go.intigriti.com/hacktricks en begin om bounties tot $100,000 te verdien!

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 binne funksies van 'n lopende toepassing in te voeg. Maar jy kan python gebruik om die hooks te roep en selfs om met die hooks te interaksie.

Dit is 'n maklike python skrip wat jy kan gebruik met al die voorgestelde voorbeelde in hierdie tutoriaal:

#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()

Bel die skrif:

python hooking.py <hookN.js>

Dit is nuttig om te weet hoe om python met frida te gebruik, maar vir hierdie voorbeelde kan jy ook direk Frida aanroep met die opdraglyn frida gereedskap:

frida -U --no-pause -l hookN.js -f infosecadventures.fridademo

Hook 1 - Boolean Bypass

Hier kan jy sien hoe om 'n hook te maak op 'n boolean 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

Mirar: Die funksie ontvang 'n String as parameter, is oorgelaai nie nodig nie?

Hook 2 - Funksie Bruteforce

Nie-Statiese Funksie

As jy 'n nie-statiese funksie van 'n klas wil aanroep, moet jy eers 'n instansie van daardie klas hê. Dan 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() { }
});
});

In hierdie geval werk dit nie, aangesien daar geen instansie is nie en die funksie staties is.

Statiese Funksie

As die funksie staties is, kan jy dit eenvoudig aanroep:

//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);
}
}
});

Hook 3 - Herwinning van argumente en terugkeerwaarde

You could hook a function and make it print the value of the passed arguments and the value of the return value:

//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 tutoriaal het jy metodes gekoppel met die naam van die metode en .implementation. Maar as daar meer as een metode met dieselfde naam was, sal jy die metode wat jy wil koppel moet spesifiseer deur die tipe van die argumente aan te dui.

Jy kan dit in die volgende tutoriaal sien.

Bug bounty wenk: meld aan by Intigriti, 'n premium bug bounty platform geskep deur hackers, vir hackers! Sluit vandag by ons aan by https://go.intigriti.com/hacktricks en begin om bounties tot $100,000 te verdien!

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Ondersteun HackTricks

Last updated