18-04-2022, 09:24 PM
السلام عليكم ورحمة الله وبركاته
اول برامج الاندرويد سهل كسرها نسبيا
لتنقيح البرامج وفهما يجيب اول شي تعلم لغة JAVA و لغة Smali
لغة جافا مفيدة لفهم الكود وكيفيه عمله
ولغه smali تسهل علينا تعديل على الكود وايضا يمكن قرائة الكود من خلاله
لكسر البرامج اول شي نحتاج الى decompiler
على الويندوز يوجد
Jadx
Jeb
بهذه البرامج يمكننا روية كود المصدري للبرنامج بلغة جافا
الان
توجد بعض الاعقبات
اول تحقق من Signature الاصلي للبرنامج يكون بشكلين شكل الاول من خلال طبقة الجافا java layer والثانية من خلال native layer
اول شي يجيب فهم كيف يعمل signature بطبقة الجافا java layer
وبعدها يمكننا تخطي بواسطة حقن الsignature ألاصلي للبرنامج او بعمل هووك وتوجد برامج على الاندرويد لعمل kill sign مثلا mt manager او بالبحث عن مكان التحقق وعكس الشروط والخ ..
mt manager == برنامج لتنقيح برامج الاندرويد ومن خلاله يمكن التعديل عليها وكسره البرنامج يوجد فيه خصائص جميلة وبعض الخصائص تكون مدفوعة
np manager === برنامج اخر على الاندرويد خلاله يمكن التعديل عليها وكسره البرنامج ويوجد فيه خاصيه يعمل هووك لل signature
native layer
هذه عبارة عن مكتبات ELF مكتوبة بالغة cpp/c
موجودة داخل مجلد lib تكون باامتداد .so
يمكننا تحليلها من خلال ida pro
الان بعد تخطي العقبة الاولى ملاحظة ليس كل البرامج موجود فيها تحقق من التوقيع signature
الان كيف نكسر البرنامج . ؟
لكل ايقونة او نص رقم Resource
يتم استعماله داخل كود الجافا لندائه
لمعرفه رقم ID النص او الايقونة يمكننا استعمل داخل الاندرويد برنامج dev tools
او من الكومبيوتر يمكننا من خلال برنامج DDMS برنامج خاص للاندرويد موجود داخل android studio
الان بعد ان عرفنا رقم id النص او icon الي يتم اظهارها لما تكون النسخة غير كامل
نبحث عنها داخل apk
من خلال برنامج
jadx
jeb
او من الهاتف
mt manager
np manager
الان نبحث عن id
سنجد الايدي داخل الكود بعدها يجيب فهم اليه عمل الكود
ونبحث عن الدالة المسوؤلة عن جعل البرنامج كامل او trial
هذه نبذه لبداية عمل تحليل لبرامج الاندرويد ..
----------------------------------------------------------------------
شرح كسر البرنامج
اول شي نفتح البرنامج بواسطة jeb
نبحث عن keyword المسؤول عن ظهور nag سنرى يتم ظهور هذه النافذه من خلال دالة r0
الان يجيب ان نبحث عن مكان الي يحدد ظهور هذه النافذه بتحديد اسم الدالة r0 والضغط على حرف X
نرى ان هذه الدالة يتم استدعاها في اكثر من مكان
نتختار اي واحدة منهم
نرى هنا شرط if-eqz اذا كانت قيمة ريجستر v0 تساوي 0 يتم القفز الى الشاشة المزعجة
يتم تحديد قيمة الريجستر v0 من خلال الدالة Z والي ترجعة الدالة تكون قيمة boolean اي بمعنى
True == 1
false == 0
ندخل الي الدالة Z
هنا توجد قفزة if-nez اذا لم تكن قيمة المسجل v0 مساوية لصفر سيتم القفز الى اعطاء قيمة v0 == 1
ويتم ارجاع الدالة قيمة 1
والداله e()Z المسؤوله عن اعطاء قيمة true او false يتم تحديدها من خلال هل البرنامج مسجل او لا
ندخل الدالة
الان بعد دخول الدالة نرى القيمة المرجعة من دالة f() يتم وضعها داخل الريسجتر v0 نستطيع ان نذهب اعمق لكن هنا كافي سنقوم باارجاع قيمة المسجل v0 دائما 1
بالامر
const/4 v0,0x1
الان يتم ارجاع قيمة true للدالة وبهذا يتم كسر البرنامج
الان البرنامج مخادع يقوم بمكان ما يتحقق هل البرنامج تم شراءه بشكل رسمي او لا
نبحث عن اماكن استدعاء الدالة e()Z
نذهب الى هذه الدالة
الان نرى يوجد تحقق من شراء البرنامج فقط (هنا كود الجافا ظاهر يمكننا تحويل سمالي الى جافا من خلال برنامج jeb بالضغط على TAB)
الان فقط نجعله القفزة دائما تتخطى التحقق ونكون قد كسرنا البرنامج بنجاح
باارجاع قيمة 0 للمسجل p1 المسؤول عن الشرط
if-eqz p1
اذا كانت قيمة p0 تساوي 0 يتم القفز فوق التحقق
ستسال لماذا ارجعنا هنا قيمة صفر للدالة e() لاننا جعلنا الدالة دائما ترجع قيمة واحد والمبرمج مخادع جعل من احد الشروط تحقق من الشراء
الان كيف نعدل على الكود
يمكننا من خلال برنامج
apktool وعمل decompile وسينتج كود smali
ومن خلال السمالي نعدل على الامكان الي اشرت اليها سابقا
او من خلال mt manager
هذا البرنامج يمكننا من خلاله تعديل كود السمالي مباشرة
وهذه اسرع
نفتح المحاكي ونشغل برنامج mt manager
نذهب الى البرنامج نحدده ونضغط على view
سيتم اظهار ملفات apk
اكواد البرنامج موجودة داخل classes.dex
نحددها نضعط عليها وبعدها
dex editor plus
الان نذهب الى تبويب Search ونبحث عن مكان الدالة e()
هذه الدالة موجودة داخل كلاس
com.peace.TextScanner.App
نذهب الى الدالة موجودة داخل كلاس App
الان نذهب الى الدالة e()
نجعله يرجع قيمة 1 اي True دائما للدالة
ونفس الشي لمكان التحقق
لكن باارجاع قيمة 0 للمسجل p1
طبعا بعد عمل كل هذا ستتفاجه ان البرنامج لا يعمل Scan
هذا لان البرنامج يحتوي على تحقق من signature
يمكننا قتل الsignature بطريقة يدوية او من خلال هووك بواسطة برنامج np manager
لن اشرح الطريقة اليدوية الى ان ارى تفاعل بالموضوع
الان نذهب الى apk الاصلي للبرنامج نقتل الsignature بعمل هووك وبهذا تخطينا الsignature الان يمكننا التعديل على apk
ملاحظة لا يمكنك التعديل على apk وبعدها قتل signature يجيب عمل هووك وبعدها تعديل على apk المعدل
الان نفتح برنامج np manager
ونختار البرنامج نضغط على function
ونختار remove signature
الان البرنامج يحتوي على اكثر من هووك لقتل التحقق من التوقيع نختار kill v2 اذا لم يعمل kill v2 اقتله بواسطة modex وهذا الخاصية من هووك لن تعمل على المحاكي فقط تعمل على هواتف الاندرويد
الى هنا انتهى هذا الشرح الطويل ان شاء الله تكونوا استفدتم من الموضوع
ولا تنسوا الدعاء لوالدي المتوفي
البرامج المستعمله باشرح
برنامج jeb
برنامج jdax
mt manager
np manager
وهذا الموضوع مفيد جدا لفهم لغة smali
https://www.at4re.net/f/thread-2144.html
اول برامج الاندرويد سهل كسرها نسبيا
لتنقيح البرامج وفهما يجيب اول شي تعلم لغة JAVA و لغة Smali
لغة جافا مفيدة لفهم الكود وكيفيه عمله
ولغه smali تسهل علينا تعديل على الكود وايضا يمكن قرائة الكود من خلاله
لكسر البرامج اول شي نحتاج الى decompiler
على الويندوز يوجد
Jadx
Jeb
بهذه البرامج يمكننا روية كود المصدري للبرنامج بلغة جافا
الان
توجد بعض الاعقبات
اول تحقق من Signature الاصلي للبرنامج يكون بشكلين شكل الاول من خلال طبقة الجافا java layer والثانية من خلال native layer
اول شي يجيب فهم كيف يعمل signature بطبقة الجافا java layer
وبعدها يمكننا تخطي بواسطة حقن الsignature ألاصلي للبرنامج او بعمل هووك وتوجد برامج على الاندرويد لعمل kill sign مثلا mt manager او بالبحث عن مكان التحقق وعكس الشروط والخ ..
mt manager == برنامج لتنقيح برامج الاندرويد ومن خلاله يمكن التعديل عليها وكسره البرنامج يوجد فيه خصائص جميلة وبعض الخصائص تكون مدفوعة
np manager === برنامج اخر على الاندرويد خلاله يمكن التعديل عليها وكسره البرنامج ويوجد فيه خاصيه يعمل هووك لل signature
native layer
هذه عبارة عن مكتبات ELF مكتوبة بالغة cpp/c
موجودة داخل مجلد lib تكون باامتداد .so
يمكننا تحليلها من خلال ida pro
الان بعد تخطي العقبة الاولى ملاحظة ليس كل البرامج موجود فيها تحقق من التوقيع signature
الان كيف نكسر البرنامج . ؟
لكل ايقونة او نص رقم Resource
يتم استعماله داخل كود الجافا لندائه
لمعرفه رقم ID النص او الايقونة يمكننا استعمل داخل الاندرويد برنامج dev tools
او من الكومبيوتر يمكننا من خلال برنامج DDMS برنامج خاص للاندرويد موجود داخل android studio
الان بعد ان عرفنا رقم id النص او icon الي يتم اظهارها لما تكون النسخة غير كامل
نبحث عنها داخل apk
من خلال برنامج
jadx
jeb
او من الهاتف
mt manager
np manager
الان نبحث عن id
سنجد الايدي داخل الكود بعدها يجيب فهم اليه عمل الكود
ونبحث عن الدالة المسوؤلة عن جعل البرنامج كامل او trial
هذه نبذه لبداية عمل تحليل لبرامج الاندرويد ..
----------------------------------------------------------------------
شرح كسر البرنامج
اول شي نفتح البرنامج بواسطة jeb
نبحث عن keyword المسؤول عن ظهور nag سنرى يتم ظهور هذه النافذه من خلال دالة r0
الان يجيب ان نبحث عن مكان الي يحدد ظهور هذه النافذه بتحديد اسم الدالة r0 والضغط على حرف X
نرى ان هذه الدالة يتم استدعاها في اكثر من مكان
نتختار اي واحدة منهم
نرى هنا شرط if-eqz اذا كانت قيمة ريجستر v0 تساوي 0 يتم القفز الى الشاشة المزعجة
يتم تحديد قيمة الريجستر v0 من خلال الدالة Z والي ترجعة الدالة تكون قيمة boolean اي بمعنى
True == 1
false == 0
ندخل الي الدالة Z
هنا توجد قفزة if-nez اذا لم تكن قيمة المسجل v0 مساوية لصفر سيتم القفز الى اعطاء قيمة v0 == 1
ويتم ارجاع الدالة قيمة 1
والداله e()Z المسؤوله عن اعطاء قيمة true او false يتم تحديدها من خلال هل البرنامج مسجل او لا
ندخل الدالة
الان بعد دخول الدالة نرى القيمة المرجعة من دالة f() يتم وضعها داخل الريسجتر v0 نستطيع ان نذهب اعمق لكن هنا كافي سنقوم باارجاع قيمة المسجل v0 دائما 1
بالامر
const/4 v0,0x1
الان يتم ارجاع قيمة true للدالة وبهذا يتم كسر البرنامج
الان البرنامج مخادع يقوم بمكان ما يتحقق هل البرنامج تم شراءه بشكل رسمي او لا
نبحث عن اماكن استدعاء الدالة e()Z
نذهب الى هذه الدالة
الان نرى يوجد تحقق من شراء البرنامج فقط (هنا كود الجافا ظاهر يمكننا تحويل سمالي الى جافا من خلال برنامج jeb بالضغط على TAB)
الان فقط نجعله القفزة دائما تتخطى التحقق ونكون قد كسرنا البرنامج بنجاح
باارجاع قيمة 0 للمسجل p1 المسؤول عن الشرط
if-eqz p1
اذا كانت قيمة p0 تساوي 0 يتم القفز فوق التحقق
ستسال لماذا ارجعنا هنا قيمة صفر للدالة e() لاننا جعلنا الدالة دائما ترجع قيمة واحد والمبرمج مخادع جعل من احد الشروط تحقق من الشراء
الان كيف نعدل على الكود
يمكننا من خلال برنامج
apktool وعمل decompile وسينتج كود smali
ومن خلال السمالي نعدل على الامكان الي اشرت اليها سابقا
او من خلال mt manager
هذا البرنامج يمكننا من خلاله تعديل كود السمالي مباشرة
وهذه اسرع
نفتح المحاكي ونشغل برنامج mt manager
نذهب الى البرنامج نحدده ونضغط على view
سيتم اظهار ملفات apk
اكواد البرنامج موجودة داخل classes.dex
نحددها نضعط عليها وبعدها
dex editor plus
الان نذهب الى تبويب Search ونبحث عن مكان الدالة e()
هذه الدالة موجودة داخل كلاس
com.peace.TextScanner.App
نذهب الى الدالة موجودة داخل كلاس App
الان نذهب الى الدالة e()
نجعله يرجع قيمة 1 اي True دائما للدالة
ونفس الشي لمكان التحقق
لكن باارجاع قيمة 0 للمسجل p1
طبعا بعد عمل كل هذا ستتفاجه ان البرنامج لا يعمل Scan
هذا لان البرنامج يحتوي على تحقق من signature
يمكننا قتل الsignature بطريقة يدوية او من خلال هووك بواسطة برنامج np manager
لن اشرح الطريقة اليدوية الى ان ارى تفاعل بالموضوع
الان نذهب الى apk الاصلي للبرنامج نقتل الsignature بعمل هووك وبهذا تخطينا الsignature الان يمكننا التعديل على apk
ملاحظة لا يمكنك التعديل على apk وبعدها قتل signature يجيب عمل هووك وبعدها تعديل على apk المعدل
الان نفتح برنامج np manager
ونختار البرنامج نضغط على function
ونختار remove signature
الان البرنامج يحتوي على اكثر من هووك لقتل التحقق من التوقيع نختار kill v2 اذا لم يعمل kill v2 اقتله بواسطة modex وهذا الخاصية من هووك لن تعمل على المحاكي فقط تعمل على هواتف الاندرويد
الى هنا انتهى هذا الشرح الطويل ان شاء الله تكونوا استفدتم من الموضوع
ولا تنسوا الدعاء لوالدي المتوفي
البرامج المستعمله باشرح
برنامج jeb
https://disk.yandex.ru/d/oqy6oOXjE_Ae0w
pass: IUqN7C7NrIZbruP2
برنامج jdax
https://github.com/skylot/jadx/releases
mt manager
https://apkcombo.com/ar/mt-manager/bin.mt.plus/
np manager
https://apkcombo.com/ar/np-guan-li-qi/player.normal.np/
وهذا الموضوع مفيد جدا لفهم لغة smali
https://www.at4re.net/f/thread-2144.html