Rumah > Artikel > Operasi dan penyelenggaraan > Apakah analisis terbalik dan mekanisme perlindungan Android APP?
Ingin mengetahui kaedah perlindungan biasa untuk Apl Android dan kaedah analisis terbalik yang sepadan?
Dalam perkongsian ini, pelbagai aspek keselamatan APP Android dibincangkan, termasuk kod yang dikelirukan, pengerasan Dex keseluruhan, pengerasan Dex belah dan pengerasan mesin maya. Kandungan ini telah menjadi trend utama dalam perlindungan keselamatan Apl Android di China sejak beberapa tahun kebelakangan ini.
Kod Java sangat mudah untuk dinyahkompilasi Sebagai bahasa yang ditafsirkan silang platform, kod sumber Java dihimpunkan ke dalam "bytecode" perantaraan dan disimpan dalam fail kelas. Disebabkan keperluan untuk merentas platform, kod bait ini mengandungi sejumlah besar maklumat semantik dan mudah disusun ke dalam kod sumber Java. Pembangun sering mengelirukan fail kelas yang disusun untuk melindungi kod sumber Java dengan lebih baik.
Obfuscation adalah untuk menyusun semula dan memproses atur cara yang dikeluarkan supaya kod yang diproses melengkapkan fungsi yang sama seperti kod pra-diproses Sukar untuk mengetahui semantik sebenar program. ProGuard ialah projek sumber terbuka yang boleh mengelirukan, mengurangkan dan mengoptimumkan bytecode.
Carta alir pemprosesan Proguard adalah seperti berikut, termasuk empat pautan utama: pemampatan, pengoptimuman, pengeliruan dan pra-pemeriksaan:
Mampatan (Pengecutan): Kesan dan alih keluar kelas, medan, kaedah dan atribut (Atribut) yang tidak berguna dalam kod
Optimumkan (Optimize): Optimumkan kod bait dan alih keluar arahan yang tidak berguna. Optimumkan kod, kelas nod bukan masukan akan ditambah dengan peribadi/statik/akhir, parameter yang tidak digunakan akan dipadamkan dan beberapa kaedah mungkin menjadi kod sebaris
Obfuscate: gunakan a, b , c, d seperti itu; nama pendek dan tidak bermakna, menamakan semula kelas, medan dan kaedah;
Dalam perkongsian itu, Zhong Yaping menunjukkan contoh kesan Apk selepas menggunakan Proguard untuk menyahkompilasi Dex2jar:
Selepas pemprosesan Proguard
Proguard obfuscator bukan sahaja boleh melindungi kod, tetapi juga menyelaraskan saiz atur cara yang disusun dan mengurangkan penggunaan memori.
Analisis terbalik kod yang dikelirukan
Contoh penggunaan DEGUADR untuk menyahkelirukan:
com.xxxxx. Laman web common.util.CryptoUtil juga menyediakan perkhidmatan penyahkompilasi, seperti yang ditunjukkan di bawah:
java.lang.String a(byte[]) -> encodeToStringjava.lang.String a(byte[],boolean,java.lang.String) -> a byte[] a(byte[],byte[]) -> encrypt byte[] b(byte[]) -> getKey byte[] b(byte[],byte[]) -> decrypt byte[] d(java.lang.String) -> getKey java.lang.String a(byte,char[]) -> a java.lang.String a(java.io.File) -> getHash java.lang.String a(java.lang.String) -> c java.lang.String b(java.lang.String) -> encode
2. Pengukuhan Dex Keseluruhan
Prinsip teknologi tetulang keseluruhan adalah seperti yang ditunjukkan di atas, termasuk menggantikan application/classes.dex, menyahsulit/memuatkan secara dinamik classes.dex asal, memanggil kaedah berkaitan aplikasi asal, Tetapkan objek/nama aplikasi asal kepada pembolehubah yang berkaitan dalam sistem. Langkah paling kritikal ialah menyahsulit/memuatkan classes.dex asal secara dinamik, menyulitkan fail kod sumber dex akhir yang disusun, dan kemudian menggunakan permulaan aplikasi projek baharu dalam projek baharu untuk menyahsulit kod projek asal dan memuatkannya ke dalam memori, dan maka Proses semasa digantikan dengan kod yang dinyahsulit, yang boleh menyembunyikan kod sumber dengan baik dan menghalang penyahkompilasi langsung.
Analisis terbalik tetulang Dex secara keseluruhan
Kaedah lain ialah melalui HookdvmDexFileOpenPartial(void* addr, int len, DvmDex**) .
Apabila skala perniagaan berkembang pada tahap tertentu, fungsi baharu dan perpustakaan kelas baharu sentiasa ditambah Walaupun kod berkembang dengan cepat, saiz pakej apk yang sepadan juga meningkat. Dengan peningkatan pesat, penyelesaian tetulang keseluruhan yang ringkas tidak dapat memenuhi keperluan keselamatan dengan baik Selain daripada penyelesaian tetulang keseluruhan, penyelesaian teknikal tetulang berpecah telah muncul.
Tetapi seperti yang ditunjukkan di atas, apabila fail dex diperkukuh, beberapa data yang hilang akan digantikan dengan data yang dinyahsulit Kadangkala, Penyahpasangan jenis ini juga boleh membawa kepada data yang tidak tepat. Anda perlu memahami struktur data fail dex untuk menentukan jenis data yang harus dipecahkan.
Struktur fail Dex sangat kompleks. Ilustrasi berikut memilih kandungan yang lebih penting. Sebenarnya, fail dex ialah fail yang dipasang dengan kelas sebagai teras Bahagian yang paling penting ialah data kelas dan kod kelas, yang mempunyai antara muka khusus dan data arahan Jika anda memilih dua bahagian ini untuk dipecahkan, walaupun anda memisahkannya. Data kelas dan data kod bait tidak akan dibocorkan dan penyahkompilasi tidak akan lengkap, jadi keselamatan adalah tinggi.
Untuk analisis terbalik tetulang dex split, seperti yang ditunjukkan di bawah, ia boleh digantikan dengan data kelas untuk dipasang Walaupun fail dex baharu tidak akan selaras sepenuhnya dengan fail dex asal, ia juga memulihkan penampilan data pecahan pada tahap tertentu.
untuk mengelak daripada menggunakannya apabila boleh, dan walaupun perlu, cuba pulihkannya hanya apabila kelas ini digunakan.
Empat, tetulang mesin maya
Rawatan bait ialah satu cara untuk mengukuhkan mesin maya. Berikut ialah kod sistem Android konvensional yang telah diproses oleh pengerasan mesin maya
Analisis songsang dengan cara ini boleh dicapai melalui antara muka HOOK JNI di satu pihak, dan ia mempunyai dua kaedah pelaksanaan.
GetStaticDoubleFieldSetStaticDoubleField GetDoubleField SetDoubleField …
(bait, panjang… objek, int )
Yang kedua ialah kaedah kelas panggilan refleksi, seperti:CallVoidMethodACallBooleanMethodA CallShortMethodA CallObjectMethodA…CallStaticVoidMethodMethod StaticObjectMetho dA …
(bait, int, panjang, ganda …)
CallObjectMethodA(JNIEnv* env, objek jobject, kaedah jmethoID, …)Analisis songsang pengerasan mesin maya—menganalisis pemetaan opcode arahanRealisasikan pengerasan mesin maya terbalik melalui Analisis antara muka HOOKJNI
Gunakan antara muka HOOK JNI untuk memahami anggaran proses panggilan APP tanpa memerlukan asas kejuruteraan songsang. Walau bagaimanapun, untuk proses panggilan yang kompleks, atau apabila terdapat sejumlah besar kaedah virtualisasi, kaedah analisis terbalik ini akan kelihatan mengelirukan untuk arahan yang tidak perlu dipantulkan kembali ke lapisan Java untuk pelaksanaan, seperti operasi aritmetik dan logik; ia tidak boleh dipantau.
Sebaliknya, analisis terbalik juga boleh dilakukan dengan menganalisis pemetaan opcode arahan. Kaedah berikut boleh digunakan apabila menggunakan versi pengerasan atau hubungan pemetaan yang sama:
Tetapi dalam keadaan sebenar, hubungan pemetaan antara setiap tetulang diubah secara rawak Seperti yang ditunjukkan di bawah, hubungan pemetaan tidak boleh diwujudkan secara langsung.
Atas ialah kandungan terperinci Apakah analisis terbalik dan mekanisme perlindungan Android APP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!