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 आपको चल रहे एप्लिकेशन के फ़ंक्शन में जावास्क्रिप्ट कोड डालने की अनुमति देता है। लेकिन आप पायथन का उपयोग कॉल करने के लिए हुक्स और यहाँ तक कि हुक्स के साथ बातचीत करने के लिए कर सकते हैं।

यह एक आसान पायथन स्क्रिप्ट है जिसका उपयोग आप इस ट्यूटोरियल में प्रस्तावित सभी उदाहरणों के साथ कर सकते हैं:

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

यह उपयोगी है कि आप फ्रिडा के साथ पायथन का उपयोग कैसे करें, लेकिन इस उदाहरण के लिए आप सीधे कमांड लाइन फ्रिडा टूल का उपयोग भी कर सकते हैं:

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 - फ़ंक्शन ब्रूटफ़ोर्स

गैर-स्थायी फ़ंक्शन

यदि आप किसी क्लास के गैर-स्थायी फ़ंक्शन को कॉल करना चाहते हैं, तो आपको पहले उस क्लास के एक इंस्टेंस की आवश्यकता होगी। फिर, आप उस इंस्टेंस का उपयोग करके फ़ंक्शन को कॉल कर सकते हैं। इसके लिए, आप एक मौजूदा इंस्टेंस खोज सकते हैं और उसका उपयोग कर सकते हैं:

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