Frida Tutorial 1
Reading time: 4 minutes
tip
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
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()
Noem 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
Kyk: 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 eerst '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
Jy kan 'n funksie hook en dit druk die waarde van die oorgeëvalueerde 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 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.
tip
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.