Frida Tutorial 1

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Підказка щодо багів: зареєструйтеся на Intigriti, преміальній платформі для пошуку багів, створеній хакерами для хакерів! Приєднуйтесь до нас на https://go.intigriti.com/hacktricks сьогодні, і почніть заробляти винагороди до $100,000!

Це краткий огляд публікації: https://medium.com/infosec-adventures/introduction-to-frida-5a3f51595ca1 APK: https://github.com/t0thkr1s/frida-demo/releases Вихідний код: https://github.com/t0thkr1s/frida-demo

Python

Frida дозволяє вам вставляти код JavaScript всередину функцій запущеної програми. Але ви можете використовувати python для виклику гачків і навіть для взаємодії з гачками.

Ось простий сценарій на 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()

Викличте скрипт:

python hooking.py <hookN.js>

Це корисно знати, як використовувати Python з Frida, але для цих прикладів ви також можете викликати Frida безпосередньо за допомогою інструментів командного рядка frida:

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

Перехоплення 1 - Обхід логічного значення

Тут ви можете побачити, як перехопити метод з логічним значенням (checkPin) з класу: 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

Перегляньте: Функція отримує рядок як параметр, чи потрібно перевантаження?

Перехоплення 2 - Функція Bruteforce

Нестатична функція

Якщо ви хочете викликати нестатичну функцію класу, вам спочатку потрібен екземпляр цього класу. Потім ви можете використовувати цей екземпляр для виклику функції. Для цього ви можете знайти існуючий екземпляр та використовувати його:

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() { }
});
});

Статична функція

Якщо функція є статичною, ви можете просто викликати її:

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

Перехоплення 3 - Отримання аргументів та значення, що повертається

Ви можете перехопити функцію і зробити її виводить значення переданих аргументів та значення значення, що повертається:

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

Важливо

У цьому підручнику ви підключили методи, використовуючи назву методу та .implementation. Але якщо є більше одного методу з однаковою назвою, вам потрібно буде вказати метод, який ви хочете підключити, вказавши тип аргументів.

Ви можете побачити це в наступному підручнику.

Підказка щодо винагороди за помилки: зареєструйтеся на Intigriti, преміальній платформі для винагород за помилки, створеній хакерами для хакерів! Приєднуйтесь до нас на https://go.intigriti.com/hacktricks сьогодні, і почніть заробляти винагороди до $100,000!

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Last updated