Frida Tutorial 1

AWS hacklemeyi sıfırdan kahramana öğrenin htARTE (HackTricks AWS Red Team Expert) ile!

HackTricks'ı desteklemenin diğer yolları:

Hata ödülü ipucu: Intigriti'ye kaydolun, hackerlar tarafından oluşturulan bir premium hata ödülü platformu! Bugün bize katılın https://go.intigriti.com/hacktricks ve $100,000'a kadar ödüller kazanmaya başlayın!

Bu, gönderinin ö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ına JavaScript kodu eklemenize olanak tanır. Ancak python kullanarak hook'ları çağırabilir ve hatta hook'larla etkileşime geçebilirsiniz.

Bu, bu öğreticide önerilen tüm örneklerle kullanabileceğiniz basit 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()

Komut dosyasını çağırın:

python hooking.py <hookN.js>

Python ile frida kullanmayı bilmek faydalıdır, ancak bu örnekler için frida araçlarını doğrudan komut satırından da çağırabilirsiniz:

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

Hook 1 - Boolean Bypass

Burada, infosecadventures.fridademo.utils.PinUtil sınıfından bir boolean methodu (checkPin) hook etmenin nasıl yapıldığını 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

Hook 2 - Fonksiyon Bruteforce

Statik Olmayan Fonksiyon

Eğer bir sınıfın statik olmayan bir fonksiyonunu çağırmak istiyorsanız, öncelikle o sınıfın bir örneğine ihtiyacınız vardır. Daha sonra, bu örneği kullanarak fonksiyonu çağırabilirsiniz. Bunu yapmak için mevcut bir örneği bulabilir ve onu 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() { }
});
});

Statik Fonksiyon

Eğer fonksiyon statik ise, doğrudan onu ç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 Almak

Bir fonksiyonu kancalandırabilir ve geçilen argümanların değerini ve dönüş değerinin değerini yazdırabilirsiniz:

//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 öğreticide, yöntemleri yöntem adı ve .implementation kullanarak kancalamışsınız. Ancak eğer aynı isme sahip birden fazla yöntem varsa, kancalamak istediğiniz yöntemi argümanların türünü belirterek belirtmeniz gerekecektir.

Bunu bir sonraki öğreticide görebilirsiniz.

Hata ödülü ipucu: Intigriti'ye kaydolun, hackerlar tarafından oluşturulan bir premium hata ödülü platformu! Bugün bize https://go.intigriti.com/hacktricks adresinden katılın ve 100.000 $'a kadar ödüller kazanmaya başlayın!

Sıfırdan kahraman olmak için AWS hackleme öğrenin htARTE (HackTricks AWS Red Team Expert)!

HackTricks'ı desteklemenin diğer yolları:

Last updated