Bug bounty tip: sign up for Intigriti, a premium bug bounty platform created by hackers, for hackers! Join us at https://go.intigriti.com/hacktricks today, and start earning bounties up to $100,000!
मूल कोड के कुछ भाग काम नहीं करते हैं और यहाँ संशोधित किए गए हैं।
Part 2
यहाँ आप देख सकते हैं कि कैसे एक ही नाम के 2 फ़ंक्शंस को हुक करें लेकिन अलग-अलग पैरामीटर के साथ।
इसके अलावा, आप सीखेंगे कि कैसे अपने खुद के पैरामीटर के साथ एक फ़ंक्शन को कॉल करें।
और अंत में, एक उदाहरण है कि कैसे क्लास के एक उदाहरण को खोजें और उसे एक फ़ंक्शन कॉल करने के लिए बनाएं।
//s2.jsconsole.log("Script loaded successfully ");Java.perform(functionx() {console.log("Inside java perform function");var my_class =Java.use("com.example.a11x256.frida_test.my_activity");//Hook "fun" with parameters (int, int)my_class.fun.overload("int","int").implementation=function (x, y) { //hooking the old functionconsole.log("original call: fun("+ x +", "+ y +")");var ret_value =this.fun(2,5);return ret_value;};//Hook "fun" with paramater(String)var string_class =Java.use("java.lang.String");my_class.fun.overload("java.lang.String").implementation=function (x) { //hooking the new functionconsole.log("*")//Create a new String and call the function with your input.var my_string =string_class.$new("My TeSt String#####");console.log("Original arg: "+ x);var ret =this.fun(my_string);console.log("Return value: "+ ret);console.log("*")return ret;};//Find an instance of the class and call "secret" function.Java.choose("com.example.a11x256.frida_test.my_activity", {onMatch:function (instance) {console.log(tring, and the it has"Found instance: "+ instance);console.log("Result of secret func: "+instance.secret());},onComplete:function () { }});});
आप देख सकते हैं कि एक String बनाने के लिए पहले java.lang.String क्लास को संदर्भित किया गया है और फिर उस क्लास का एक $new ऑब्जेक्ट एक String के रूप में सामग्री के साथ बनाया गया है। यह किसी क्लास का नया ऑब्जेक्ट बनाने का सही तरीका है। लेकिन, इस मामले में, आप बस this.fun() को कोई भी String पास कर सकते हैं जैसे: this.fun("hey there!")
Python
//loader.pyimport fridaimport timedevice = frida.get_usb_device()pid = device.spawn(["com.example.a11x256.frida_test"])device.resume(pid)time.sleep(1)#Without it Java.perform silently failssession = device.attach(pid)script = session.create_script(open("s2.js").read())script.load()#prevent the python script from terminatingraw_input()
python loader.py
Part 3
Python
अब आप देखेंगे कि कैसे Python के माध्यम से हुक की गई ऐप को कमांड भेजें ताकि फ़ंक्शन को कॉल किया जा सके:
कमांड "1" बाहर निकल जाएगा, कमांड "2" कक्षा का एक उदाहरण खोजेगा और निजी फ़ंक्शनsecret() को कॉल करेगा और कमांड "3" फ़ंक्शन secret() को हुक करेगा ताकि यह एक अलग स्ट्रिंगवापस करे।
तो, यदि आप "2" को कॉल करते हैं, तो आपको वास्तविक रहस्य मिलेगा, लेकिन यदि आप "3" को कॉल करते हैं और फिर "2" को कॉल करते हैं, तो आपको नकली रहस्य मिलेगा।
JS
console.log("Script loaded successfully ");var instances_array = [];functioncallSecretFun() {Java.perform(function () {if (instances_array.length==0) { // if array is emptyJava.choose("com.example.a11x256.frida_test.my_activity", {onMatch:function (instance) {console.log("Found instance: "+ instance);instances_array.push(instance)console.log("Result of secret func: "+instance.secret());},onComplete:function () { }});}else {//else if the array has some valuesconsole.log("Result of secret func: "+ instances_array[0].secret());}});}functionhookSecret() {Java.perform(function () {var my_class =Java.use("com.example.a11x256.frida_test.my_activity");var string_class =Java.use("java.lang.String");my_class.secret.overload().implementation=function(){var my_string =string_class.$new("TE ENGANNNNEEE");return my_string;}});}rpc.exports = {callsecretfunction: callSecretFun,hooksecretfunction: hookSecret};
Part 4
यहाँ आप देखेंगे कि Python और JS कैसे इंटरैक्ट करते हैं JSON ऑब्जेक्ट्स का उपयोग करके। JS send() फ़ंक्शन का उपयोग करके डेटा को Python क्लाइंट को भेजता है, और Python post() फ़ंक्शन का उपयोग करके डेटा को JS स्क्रिप्ट को भेजता है। JS निष्पादन को ब्लॉक करेगा जब तक कि उसे Python से प्रतिक्रिया नहीं मिलती।
बग बाउंटी टिप: साइन अप करेंIntigriti के लिए, एक प्रीमियम बग बाउंटी प्लेटफॉर्म जो हैकर्स द्वारा, हैकर्स के लिए बनाया गया है! आज ही https://go.intigriti.com/hacktricks पर हमारे साथ जुड़ें, और $100,000 तक की बाउंटी कमाना शुरू करें!