Apakah mungkin untuk mendekompilasi file APK Android?


86

Apakah pengguna dapat mengubah file apk aplikasi saya kembali ke kode sebenarnya? Jika ya - adakah cara untuk mencegahnya?


1
Ada beberapa metode untuk mendekompilasi APK . Saya hanya APKTool lebih sering, itu yang terbaik dan paling kuat. Sangat mudah untuk memodifikasi file apk dengannya.
Taranfx

Saya telah menulis posting blog di sini: codexplo.wordpress.com/2012/03/15/… tetapi sekali lagi, akan sulit untuk kode yang dikaburkan ...
rokonoid


Jawaban:


80

Pertama, file apk hanyalah file jar yang dimodifikasi. Jadi pertanyaan sebenarnya adalah dapatkah mereka mendekompilasi file dex di dalamnya. Jawabannya adalah semacam. Sudah ada disassembler, seperti dedexer dan smali . Anda dapat mengharapkan ini hanya menjadi lebih baik, dan secara teoritis pada akhirnya akan memungkinkan untuk mendekompilasi ke sumber Java yang sebenarnya (setidaknya kadang-kadang). Lihat pertanyaan sebelumnya yang menguraikan DEX menjadi kode sumber Java .

Yang harus Anda ingat adalah kebingungan tidak pernah berhasil. Pilih lisensi yang baik dan lakukan yang terbaik untuk menegakkannya melalui hukum. Jangan buang waktu dengan tindakan teknis yang tidak dapat diandalkan.


45
Jangan pernah bilang tidak akan pernah. Kebingungan tidak akan menghentikan pencuri yang gigih tetapi akan memperlambat atau menghalangi banyak pencuri lainnya. Memproses dengan Proguard adalah cara yang mudah dan TERPERCAYA untuk mengaburkan kode Anda dan sebagai bonus, kode itu juga akan dioptimalkan. Dan itu termasuk dalam Android SDK, jadi itu didukung oleh Google.
Barry Fruitman

3
Kebingungan pasti berhasil, tetapi Anda harus lebih jelas menentukan apa tujuan Anda. Jelas satu-satunya cara agar Anda dapat menyimpan kode sumber Anda benar-benar aman adalah dengan tidak pernah memberikan akses siapa pun ke sana, server atau klien. Perhatikan bahwa Proguard tidak berfungsi dengan baik pada kelas yang memiliki referensi dalam file XML. Anda perlu memanfaatkan kebingungan manual untuk menyiasatinya.
MattC

35

Dekompilasi file APK dimungkinkan. Tetapi mungkin sulit untuk memahami kode jika dikaburkan.

ApkTool untuk melihat sumber daya di dalam File APK

  • Ekstrak AndroidManifest.xml dan semua yang ada di folder res (file layout xml, gambar, html yang digunakan di webview dll ..)
  • perintah: apktool.bat d sampleApp.apk
  • CATATAN: Anda dapat mencapai ini dengan menggunakan utilitas zip seperti 7-zip. Tapi, Ini juga mengekstrak file .smali dari semua file .class.

Menggunakan dex2jar

  • Menghasilkan file .jar dari file .apk, kita membutuhkan JD-GUI untuk melihat kode sumber dari .jar ini.
  • perintah: dex2jar sampleApp.apk

Mendekompilasi .jar menggunakan JD-GUI

  • mendekompilasi file .class (di-obfuscated- dalam kasus aplikasi android, tetapi kode asli yang dapat dibaca diperoleh dalam kasus file .jar lainnya). yaitu, kami mendapatkan kembali .java dari aplikasi.

apktool tidak memuntahkan file sumber java! Hanya smali
IgorGanapolsky

1
Seperti yang sudah saya katakan di jawaban, apktool membuat .jar dari .apk dan kita harus menggunakan alat seperti JD-GUI untuk mendekompilasi .jar untuk mencapai file sumber .java.
gtiwari333

1
kau benar-benar menyelamatkan hidupku! pos yang luar biasa! Saya kehilangan kode dua hari terakhir karena SSD yang gagal (sayangnya, saya tidak berkomitmen untuk git). Namun, saya memang memiliki apk dan sekarang saya memiliki sumber saya, ingat, sedikit berbeda, tetapi sumber!
Farcrats

3

Saya juga dapat menambahkan, bahwa saat ini dimungkinkan untuk mendekompilasi aplikasi Android secara online, tidak perlu perangkat lunak!

Berikut 2 opsi untuk Anda:


decompileandroid.com sedang offline (ketika Anda mengunggah apk Anda akan mengalami masalah saat mengunduhnya lagi) dan javadecompilers.com/apk telah menempatkan apk saya dalam antrian untuk waktu yang lama. Saya offline, lalu online, masih dalam antrian. Saya menghapus semua riwayat penelusuran dan sekarang apk yang saya unggah untuk kedua kalinya berada dalam antrean.
iOSAndroidWindowsMobileAppsDev

1

Unduh alat jadx ini https://sourceforge.net/projects/jadx/files/

Unzip dan kemudian di folder lib jalankan file jadx-gui-0.6.1.jar sekarang telusuri file apk Anda. Selesai. Secara otomatis apk akan mendekompilasi dan menyimpannya dengan menekan tombol simpan. Semoga berhasil untuk Anda. Terima kasih


0

Terkadang Anda mendapatkan kode yang rusak, saat menggunakan dex2jar/ apktool, terutama dalam loop. Untuk menghindari hal ini, gunakan jadx , yang mendekompilasi bytecode dalvik menjadi kode sumber java, tanpa membuat .jar/ .classfile terlebih dahulu seperti dex2jarhalnya (menurut saya apktool menggunakan dex2jar). Ini juga open-source dan dalam pengembangan aktif. Ia bahkan memiliki GUI, untuk GUI-fanatik. Cobalah!


0

Apakah pengguna dapat mengubah file apk aplikasi saya kembali ke kode sebenarnya?

Iya.

Orang dapat menggunakan berbagai alat untuk:

  • analisis: apk Anda
  • decode / hack apk Anda
    • gunakan FDex2untuk membuang dexfile
      • lalu gunakan dex2jaruntuk mengonversi kejar
        • lalu gunakan jadxuntuk mengonversi ke javakode sumber

Jika ya - adakah cara untuk mencegahnya?

Iya. Beberapa (dapat digabungkan) cara untuk mencegah (derajat tertentu) ini:

  • tingkat rendah: kebingungan kode
    • menggunakan Android ProGuard
  • tingkat tinggi: gunakan skenario android harden

Lebih jelasnya bisa merujuk tutorial bahasa Mandarin saya :安卓 应用 的 安全 和 破解


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.