Dalvik Deobfuscator berbasis pola yang menggunakan eksekusi terbatas untuk meningkatkan analisis semantik. Juga, inspirasi untuk deobfuscator Android lain: Sederhanakan.
Sebelum
Setelah
SHA1: A68D5D2DA7550D35F7DBEFC21B7DEEBE3F4005F3
MD5: 2DD2EEEDA08AC8C15BE8A9F2D01ADBE8
Karena Anda seorang pembalik elit Android, saya yakin Anda sudah memiliki Smali dan Baksmali di jalan Anda. Jika karena alasan aneh itu belum diinstal, ini seharusnya membuat Anda memulai, tapi harap periksa dengan cermat sebelum berjalan:
mkdir ~ /bin || cd ~ /bin
curl --location -O https://bitbucket.org/JesusFreke/smali/downloads/smali-2.2.5.jar && mv smali- * .jar smali.jar
curl --location -O https://bitbucket.org/JesusFreke/smali/downloads/baksmali-2.2.5.jar && mv baksmali- * .jar baksmali.jar
curl --location -O https://bitbucket.org/JesusFreke/smali/downloads/smali
curl --location -O https://bitbucket.org/JesusFreke/smali/downloads/baksmali
chmod +x ./smali ./baksmali
export PATH= $PATH : $PWD Pastikan adb ada di jalan Anda.
gem install dex-oracleAtau, jika Anda lebih suka membangun dari sumber:
git clone https://github.com/CalebFenton/dex-oracle.git
cd dex-oracle
gem install bundler
bundle installAnda harus memiliki emulator yang berjalan atau perangkat yang terhubung ke Oracle berfungsi. Versi android minimum yang diperlukan adalah 5.0!
Oracle perlu menjalankan metode pada sistem Android langsung. Ini bisa ada di perangkat atau emulator (lebih disukai). Jika itu perangkat, pastikan Anda tidak keberatan menjalankan kode yang berpotensi bermusuhan di atasnya .
Jika Anda ingin menggunakan emulator, dan sudah menginstal Android SDK, Anda dapat membuat dan memulai gambar emulator dengan:
android avd Usage: dex-oracle [opts] <APK / DEX / Smali Directory>
-h, --help Display this screen
-s ANDROID_SERIAL, Device ID for driver execution, default=""
--specific-device
-t, --timeout N ADB command execution timeout in seconds, default="120"
-i, --include PATTERN Only optimize methods and classes matching the pattern, e.g. Ldune;->melange()V
-e, --exclude PATTERN Exclude these types from optimization; including overrides
--disable-plugins STRING[,STRING]*
Disable plugins, e.g. stringdecryptor,unreflector
--list-plugins List available plugins
-v, --verbose Be verbose
-V, --vverbose Be very verbose
Misalnya, untuk hanya menghilangkan metode dalam kelas yang disebut Lcom/android/system/admin/CCOIoll; Di dalam apk bernama obad.apk :
dex-oracle -i com/android/system/admin/CCOIoll obad.apkOracle mengambil aplikasi Android (APK), Dalvik Executables (DEX), dan file Smali sebagai input. Pertama, jika inputnya adalah APK atau DEX, itu dibongkar menjadi file Smali. Kemudian, file Smali diteruskan ke berbagai plugin yang melakukan analisis dan modifikasi. Plugin mencari pola yang dapat diubah menjadi sesuatu yang lebih mudah dibaca. Untuk memahami apa yang dilakukan kode, beberapa metode Dalvik sebenarnya dieksekusi dan output dikumpulkan. Dengan cara ini, beberapa panggilan metode dapat diganti dengan konstanta. Setelah itu, semua file Smali diperbarui. Akhirnya, jika inputnya adalah APK atau file DEX, file Smali yang dimodifikasi dikompilasi ulang dan APK atau DEX yang diperbarui dibuat.
Eksekusi metode dilakukan oleh driver. Input APK, Dex, atau Smali dikombinasikan dengan driver menjadi satu dex menggunakan Dexmerge dan didorong ke perangkat atau emulator. Plugin kemudian dapat menggunakan driver yang menggunakan refleksi Java untuk menjalankan metode dari input DEX. Nilai pengembalian dapat digunakan untuk meningkatkan analisis semantik di luar pengakuan pola belaka. Ini sangat berguna untuk banyak metode dekripsi string, yang biasanya mengambil string terenkripsi atau beberapa array byte. Salah satu batasannya adalah eksekusi terbatas pada metode statis.
Ada tiga plugin yang datang dengan Oracle:
Jika Anda menemukan jenis kebingungan baru, dimungkinkan untuk menghilangkan oracle. Lihatlah Smali dan cari tahu apakah kode dapat:
Jika salah satu dari keduanya adalah masalahnya, Anda harus mencoba dan menulis plugin Anda sendiri. Ada empat langkah untuk membangun plugin Anda sendiri:
Plugin yang disertakan harus menjadi panduan yang baik untuk memahami langkah -langkah #3 dan #4. Driver dirancang untuk membantu dengan langkah #2.
Tentu saja, Anda selalu dipersilakan untuk berbagi kebingungan apa pun yang Anda temui dan seseorang pada akhirnya mungkin akan mendapatkannya.
Pertama, pastikan dx ada di jalur Anda. Ini adalah bagian dari Android SDK, tetapi mungkin tidak ada di jalur Anda kecuali Anda hardcore.
Folder Driver adalah proyek Java yang dikelola oleh Gradle. Impor ke Eclipse, IntelliJ, dll. Dan buat perubahan apa pun yang Anda sukai. Untuk menyelesaikan memperbarui driver, jalankan ./update_driver . Ini akan membangun kembali pengemudi dan mengubah toples output menjadi DEX.
Jika ada masalah yang menjalankan kode driver pada emulator atau perangkat Anda, pastikan untuk membuka monitor (bagian dari Android SDK) dan periksa petunjuk apa pun di sana. Bahkan jika kesalahan tidak masuk akal bagi Anda, itu akan membantu jika Anda mempostingnya bersama dengan masalah yang akan Anda buat.
Tidak semua platform Android bekerja dengan baik dengan Dex-Oracle. Beberapa dari mereka hanya omong kosong ketika mencoba menjalankan file DEX sewenang -wenang. Jika Anda mengalami masalah dengan segfault atau crash driver, coba gunakan Android 4.4.2 API Level 19 dengan ARM.
Mungkin saja plugin melihat pola yang menurutnya adalah kebingungan tetapi sebenarnya beberapa kode yang tidak boleh dieksekusi. Ini tampaknya tidak mungkin karena pola kebingungan benar -benar tidak biasa, tetapi itu mungkin. Jika Anda menemukan plugin tertentu menyebabkan masalah dan Anda yakin aplikasi ini tidak dilindungi oleh obfuscator tertentu, yaitu aplikasi ini tidak tertipu tetapi plugin Dexguard sedang mencoba untuk menjalankan barang, nonaktifkan saja.