Frida Tutorial 1

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks'i Destekleyin

Bug bounty ipucu: Intigriti'ye kaydolun, hackers tarafından, hackers için oluşturulmuş premium bir bug bounty platformu! Bugün https://go.intigriti.com/hacktricks adresine katılın ve $100,000'a kadar ödüller kazanmaya başlayın!

Bu yazının özeti: https://medium.com/infosec-adventures/introduction-to-frida-5a3f51595ca1 APK: https://github.com/t0thkr1s/frida-demo/releases Kaynak Kodu: https://github.com/t0thkr1s/frida-demo

Python

Frida, çalışan bir uygulamanın fonksiyonları içine JavaScript kodu eklemenizi sağlar. Ancak python kullanarak hook'ları çağırabilir ve hatta hook'larla etkileşimde bulunabilirsiniz.

Bu, bu eğitimde önerilen tüm örneklerle kullanabileceğiniz kolay bir python betiğidir:

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

Scripti çağırın:

python hooking.py <hookN.js>

Python'ı frida ile nasıl kullanacağınızı bilmek faydalıdır, ancak bu örnekler için doğrudan komut satırı frida araçlarını kullanarak da Frida'yı çağırabilirsiniz:

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

Hook 1 - Boolean Bypass

Burada hook yaparak infosecadventures.fridademo.utils.PinUtil sınıfındaki boolean metodunu (checkPin) nasıl kullanabileceğinizi görebilirsiniz.

//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

Bak: Fonksiyon bir String parametre alıyor, overload yapmaya gerek var mı?

Hook 2 - Fonksiyon Bruteforce

Statik Olmayan Fonksiyon

Eğer bir sınıfın statik olmayan fonksiyonunu çağırmak istiyorsanız, öncelikle o sınıfın bir örneğine ihtiyacınız var. Sonra, o örneği kullanarak fonksiyonu çağırabilirsiniz. Bunu yapmak için, mevcut bir örneği bulabilir ve kullanabilirsiniz:

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

Bu durumda, herhangi bir örnek olmadığı için bu çalışmıyor ve fonksiyon Statik.

Statik Fonksiyon

Eğer fonksiyon statikse, onu doğrudan çağırabilirsiniz:

//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 - Argümanları ve dönüş değerini alma

Bir fonksiyonu hooklayabilir ve geçilen argümanların değerini ve dönüş değerinin değerini yazdırmasını sağlayabilirsiniz:

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

Önemli

Bu eğitimde, yöntemleri metodun adı ve .implementation kullanarak bağladınız. Ancak eğer aynı adı taşıyan birden fazla yöntem varsa, bağlamak istediğiniz yöntemi belirtmeniz gerekecek argümanların türünü belirterek.

Bunu bir sonraki eğitimde görebilirsiniz.

Hata ödülü ipucu: Intigriti için kayıt olun, hackerlar tarafından, hackerlar için oluşturulmuş premium bir hata ödülü platformu! Bugün https://go.intigriti.com/hacktricks adresine katılın ve $100,000'a kadar ödüller kazanmaya başlayın!

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks'i Destekleyin

Last updated