# Frida Tutorial 1
Naučite hakovanje AWS-a od nule do heroja sahtARTE (HackTricks AWS Red Team Expert)!
Drugi načini podrške HackTricks-u:
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
**Savet za bug bounty**: **prijavite se** za **Intigriti**, premium **platformu za bug bounty kreiranu od hakera, za hakere**! Pridružite nam se na [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) danas, i počnite da zarađujete nagrade do **$100,000**!
{% embed url="https://go.intigriti.com/hacktricks" %}
**Ovo je sažetak posta**: [https://medium.com/infosec-adventures/introduction-to-frida-5a3f51595ca1](https://medium.com/infosec-adventures/introduction-to-frida-5a3f51595ca1)\
**APK**: [https://github.com/t0thkr1s/frida-demo/releases](https://github.com/t0thkr1s/frida-demo/releases)\
**Izvorni kod**: [https://github.com/t0thkr1s/frida-demo](https://github.com/t0thkr1s/frida-demo)
## Python
Frida vam omogućava da **ubacite JavaScript kod** unutar funkcija pokrenute aplikacije. Ali možete koristiti **python** da **pozovete** kukice i čak da **interaktujete** sa **kukicama**.
Ovo je jednostavan python skript koji možete koristiti sa svim predloženim primerima u ovom tutorijalu:
```python
#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()
```
Pokrenite skriptu:
```bash
python hooking.py
```
Korisno je znati kako koristiti Python sa Fridom, ali za ove primere takođe možete direktno pozvati Fridu koristeći alate komandne linije frida:
```bash
frida -U --no-pause -l hookN.js -f infosecadventures.fridademo
```
## Hakovanje 1 - Bajpasovanje Booleove vrednosti
Ovde možete videti kako da **hukujete** **boolean** metod (_checkPin_) iz klase: _infosecadventures.fridademo.utils.PinUtil_
```javascript
//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
```
Pogledaj: Funkcija prima String kao parametar, nije potreban overload?
## Hook 2 - Funkcija Bruteforce
### Non-Static Funkcija
Ako želite da pozovete non-static funkciju klase, **prvo vam je potrebna instanca** te klase. Zatim, možete koristiti tu instancu da pozovete funkciju.\
Da biste to uradili, mogli biste **pronaći postojeću instancu** i koristiti je:
```javascript
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() { }
});
});
```
U ovom slučaju ovo ne funkcioniše jer nema instance i funkcija je statička
### Statička funkcija
Ako je funkcija statička, možete je jednostavno pozvati:
```javascript
//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);
}
}
});
```
## Hak 3 - Dobijanje argumenata i vrednosti povratka
Možete hakovati funkciju i naterati je da **ispisuje** vrednost **prosleđenih argumenata** i vrednost **vrednosti povratka:**
```javascript
//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;
}
});
```
## Važno
U ovom tutorialu ste hakovali metode koristeći ime metode i _.implementation_. Ali ako postoji **više od jedne metode** sa istim imenom, moraćete **navesti metodu** koju želite da hakujete **ukazujući na tip argumenata**.
To možete videti u [sledećem tutorialu](frida-tutorial-2.md).
**Savet za bug bounty**: **Prijavite se** za **Intigriti**, premium **platformu za bug bounty kreiranu od hakera, za hakere**! Pridružite nam se na [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) danas, i počnite da zarađujete nagrade do **$100,000**!
{% embed url="https://go.intigriti.com/hacktricks" %}
Naučite AWS hakovanje od nule do heroja sahtARTE (HackTricks AWS Red Team Expert)!
Drugi načini da podržite HackTricks:
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.