هنحل frida app 2 هنزله علي ال emulator ونفتحه علي jadx
adb install app-2.apk
jadx-gui app-2.apk
هنا عندنا اتنين functioan الاولي بتجمع رقمين 50+30 وبتروح في ال log ودي عملناها ال weitup ال فات وال fun التانية بتاخد string وتزوده مع total ويعمبها lowercase فاحنا كدا مفروض نشوف في ال log حاجتين
الاول عشان اشوف ال log استعملنا الامرين دول
frida-ps -Ua
adb logcat --pid=$(adb shell pidof -s com.example.a11x256.frida_test)
طيب زي ماحنا حللنا الكود وشوفنا بيحصل اي في ال log فاحنا حاليا عاوزين نعمل hook علي الفانكشن دي ونغيرها تعالي نكتب js script ونحاول نغيرها
Java.perform(function() {
var my_cls = Java.use("com.example.a11x256.frida_test.my_activity");
my_cls.fun.overload("int","int").implementation = function(x, y) {
var ret = this.fun(10, 50);
return ret;
};
my_cls.fun.overload("java.lang.String").implementation=function(x){
var stringClass=Java.use("java.lang.String");
var my_str=stringClass.$new("i hook overload !!!");
var ret=this.fun(my_str);
return ret;
}
});
زي ماحنا شايفين حصل hook وقدرنا نغير في ال function وبكدا قدرنا نحقق ال عاوزينه
كدا عملنا call لاتنين fun بس ناقصنا واحده وهي مبيحصلش ليه call طب اي الحل
بما ان ال class بتاعي my_activity اصلا بيتنادي عليه فالابلكيشن فهو شغال لان موجود ليه instance في الميموري موجودة فاحنا عاوزين نكتب كود يدور علي instance ليها في الكود كله وبياخد pointer ليها ومنه بقي نعمل call ل fun بتاع secret طب عشان نعمل كدا ب frida في حاجة اسمها java.choose تقدر تقرا عليها اكتر من هنا
https://frida.re/docs/javascript-api/#process
Java.perform(function() {
java.choose("com.example.a11x256.frida_test.my_activity",{
onMatch: function(instance){
console.log("result of secret"+instance.secret());
},
onComplete: function(){}
});
});
التعليقات (0)
لايوجد لديك حساب في عالم البرمجة؟
تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !