أمس, 06:15 PM
(آخر تعديل لهذه المشاركة : أمس, 06:26 PM بواسطة ashrafonlinenow.)
تمرين
السلام عليكم و رحمة الله وبركاته
اليوم نتدرب على الهندسة العكسية لبرامج فلاتر flutter
الضحية
https://play.google.com/store/apps/detai...ay.chatapp
سهل
يمكنك
تحميله ايضا من هنا
https://apkcombo.app/ar/ask-ai-chat-with...y.chatapp/
لنبدأ
استخرج الملفين libapp.so and libflutter.so
و باسهل طريقة استخدم البوت
@RevEngiBot
حسنا بعد ذلك وبعد تحميل الملفات من البوت
سنجد هنا
\asm\cerebro
ثم ملف
cerebro.dart
يمكنك دائما البحث داخل كافة الملفات مثلا
isPremiumLifetime
هنا هى مفتاح البرنامج الضحية
لدينا دالة باسمها و هى
boolean
لذا ببساطة نرجعها دائما ترو True
static _ GettersCerebro._isPremiumLifetime(/* No info */)
addr: 0x7a4d08, size: 0x9c
هذا عنوان الدالة
0x7a4d08
كيف تعرف انها boolean
سوف تجد استخدامها دائما يليه شرط للقفز
الان لنعدل هنا فى هذا العنوان
نستخدم radare2
r2 -w libapp.so
لفتح الملف فى وضع القراءة والكتابة
كما ذكرنا سابقا
reverse flutter apps 2
#0x20 ; true
#0x30 ; false
ايضا
ret for retun
اذن الكود كالتالى
add x0, x22, 0x20
ret
اولا لنذهب الى عنوان الدالة
0x7a4d08
ثم انتر
هنا
wa add x0, x22, 0x20
ثم فى العنوان التالى
wa ret
انظر
[0x007a4d08]> wa add x0, x22, 0x20
سترى
INFO: Written 4 byte(s) (add x0, x22, 0x20) = wx c0820091 @ 0x007a4d08
وهنا
[0x007a4d0c]> wa ret
سترى
INFO: Written 4 byte(s) (ret) = wx c0035fd6 @ 0x007a4d0c
نعم يمكنك عملها بسهولة بكود واحد
الان قم باستبدال ملف libapp.so بملفنا المعدل
ملحوظة
اذا لم يعمل معك البرنامج وتوقف على السبلاش
لها حل
و للموضوع بقية
السلام عليكم و رحمة الله وبركاته
اليوم نتدرب على الهندسة العكسية لبرامج فلاتر flutter
الضحية
https://play.google.com/store/apps/detai...ay.chatapp
سهل
يمكنك
تحميله ايضا من هنا
https://apkcombo.app/ar/ask-ai-chat-with...y.chatapp/
لنبدأ
استخرج الملفين libapp.so and libflutter.so
و باسهل طريقة استخدم البوت
@RevEngiBot
حسنا بعد ذلك وبعد تحميل الملفات من البوت
سنجد هنا
\asm\cerebro
ثم ملف
cerebro.dart
يمكنك دائما البحث داخل كافة الملفات مثلا
isPremiumLifetime
هنا هى مفتاح البرنامج الضحية
لدينا دالة باسمها و هى
boolean
لذا ببساطة نرجعها دائما ترو True
static _ GettersCerebro._isPremiumLifetime(/* No info */)
addr: 0x7a4d08, size: 0x9c
هذا عنوان الدالة
0x7a4d08
كيف تعرف انها boolean
سوف تجد استخدامها دائما يليه شرط للقفز
الان لنعدل هنا فى هذا العنوان
نستخدم radare2
r2 -w libapp.so
لفتح الملف فى وضع القراءة والكتابة
كما ذكرنا سابقا
reverse flutter apps 2
#0x20 ; true
#0x30 ; false
ايضا
ret for retun
اذن الكود كالتالى
add x0, x22, 0x20
ret
اولا لنذهب الى عنوان الدالة
0x7a4d08
ثم انتر
هنا
wa add x0, x22, 0x20
ثم فى العنوان التالى
wa ret
انظر
[0x007a4d08]> wa add x0, x22, 0x20
سترى
INFO: Written 4 byte(s) (add x0, x22, 0x20) = wx c0820091 @ 0x007a4d08
وهنا
[0x007a4d0c]> wa ret
سترى
INFO: Written 4 byte(s) (ret) = wx c0035fd6 @ 0x007a4d0c
نعم يمكنك عملها بسهولة بكود واحد
wx C0820091C0035FD6
نعم النتيجة 0x007a4d08 c0820091 add x0, x22, 0x20
0x007a4d0c c0035fd6 ret
نعم لقد تم التعديل بنجاح0x007a4d0c c0035fd6 ret
الان قم باستبدال ملف libapp.so بملفنا المعدل
ملحوظة
اذا لم يعمل معك البرنامج وتوقف على السبلاش
لها حل
و للموضوع بقية
اذا كنت لا تعلم كيفية استخدام radare2 فهذا الوقت المناسب
https://github.com/radareorg/radare2
https://github.com/radareorg/radare2
- Official Book: Read about r2 usage
ايضا قمت بعمل سكربت بايثون بدلا من استخدام radare2
flupatch.py
فى موضوع قادم إن شاء الله
flupatch.py
فى موضوع قادم إن شاء الله
Th3-R3p4ck3r