Bug bounty ipucu: Intigriti'ye kaydolun, hackerlar tarafından, hackerlar için oluşturulmuş bir premium 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!
Orijinal kodun bazı bölümleri çalışmıyor ve burada değiştirilmiştir.
Bölüm 2
Burada aynı isimde ama farklı parametrelerle 2 fonksiyonu nasıl hook'layacağınızı görebilirsiniz.
Ayrıca, kendi parametrelerinizle bir fonksiyonu nasıl çağıracağınızı öğreneceksiniz.
Ve son olarak, bir sınıfın örneğini nasıl bulacağınız ve bir fonksiyonu çağırmasını nasıl sağlayacağınız ile ilgili bir örnek var.
//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 () { }});});
Görüyorsunuz ki, bir String oluşturmak için önce java.lang.String sınıfına referans verilmiş ve ardından içeriği bir String olan $new nesnesi oluşturulmuştur. Bu, bir sınıfın yeni bir nesnesini oluşturmanın doğru yoludur. Ancak, bu durumda this.fun() fonksiyonuna herhangi bir String geçirebilirsiniz: 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
Bölüm 3
Python
Artık Python aracılığıyla bağlı uygulamaya komut göndermeyi ve fonksiyonu çağırmayı göreceksiniz:
Komut "1" çıkış yapacak, komut "2" sınıfın bir örneğini bulacak ve özel fonksiyonusecret()çağıracak ve komut "3" secret() fonksiyonunu hooklayacak böylece farklı bir dizedöndürecek.
Yani, eğer "2" çağırırsanız gerçek sırrı alacaksınız, ama eğer "3" ve sonra "2" çağırırsanız sahte sırrı alacaksınız.
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};
Bölüm 4
Burada Python ve JS'in etkileşimde bulunmasını JSON nesneleri kullanarak nasıl yapacağınızı göreceksiniz. JS, verileri python istemcisine göndermek için send() fonksiyonunu kullanır ve Python, verileri JS betiğine göndermek için post() fonksiyonunu kullanır. JS, Python'dan bir yanıt alana kadar yürütmeyi engelleyecektir.
Bug bounty ipucu: kayıt olunIntigriti, hackerlar tarafından, hackerlar 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!