Membalikkan rekayasa dari file APK ke proyek

244

Saya tidak sengaja menghapus proyek saya dari Eclipse , dan yang tersisa adalah file APK yang saya transfer ke ponsel saya. Apakah ada cara untuk membalikkan proses mengekspor aplikasi ke file .apk, sehingga saya bisa mendapatkan proyek saya kembali?

Marko Cakic
sumber
2
Anda tahu bahwa gerhana memiliki riwayat versi sendiri?
eis
4
jika Anda menulis sesuatu yang penting bagi Anda, Anda harus menggunakan VCS. Bitbucket memiliki repositori pribadi gratis.
lxknvlk
github.com/skylot/jadx
Saurabh Bhoomkar

Jawaban:

287

Ada dua alat yang berguna yang akan menghasilkan kode Java (kasar tetapi cukup baik) dari file APK yang tidak dikenal.

  1. Unduh alat dex2jar dari dex2jar .
  2. Gunakan alat untuk mengonversi file APK ke JAR :

    $ d2j-dex2jar.bat demo.apk
    dex2jar demo.apk -> ./demo-dex2jar.jar
  3. Setelah file JAR dibuat, gunakan JD-GUI untuk membuka file JAR. Anda akan melihat file Java.

Outputnya akan mirip dengan:

JD GUI

rahul
sumber
6
cara mendapatkan file sumber daya
srini
26
cmd sudah ditinggalkan, gunakan d2j-dex2jarsaja (v0.0.9.15).
Fredrick Gauss
1
@sri cukup ganti nama file apk untuk zip dan mengekstraknya, Anda akan memiliki file sumber daya di resfolder
Hoang Huynh
8
@HoangHuynh Anda akan memiliki resfolder dengan file xml yang tidak dapat dibaca
S.Thiongane
6
Dalam Macjika Anda tidak dapat menggunakan dex2jar: permission deniedkemudian melakukan hal ini $sudo chmod +x d2j-dex2jar.sh
Min2
81

Pertama-tama saya sarankan this video semoga ini menghapus semua keraguan Anda

Jika tidak silakan lewati saja

Procedure for decoding .apk files, step-by-step method:

Step 1:

Buat folder baru dan masukkan file .apk di dalamnya (yang ingin Anda dekode). Sekarang ganti nama ekstensi .apkfile ini menjadi .zip(mis .: ubah nama dari filename.apk menjadi filename.zip) dan simpan.

Jika ada masalah dalam konversi menjadi .zip, harap merujuk link

Setelah mendapatkan .zip sekarang Anda mendapatkan file class.dex, dll. Pada tahap ini Anda dapat melihat file yang dapat digambar tetapi tidak xml dan java, jadi lanjutkan. Jika Anda tidak melihat ekstensi, periksa konfigurasi

Step 2:

Sekarang ekstrak file apk zip ini di folder yang sama. Sekarang unduh dex2jar dari inilink

dan ekstrak ke folder yang sama. Sekarang buka command prompt dan ubah direktori ke folder itu.

Kemudian tulis dex2jar classes.dexdan tekan enter. Sekarang Anda mendapatkan classes.dex.dex2jarfile di folder yang sama.

Kemudian unduh java decompiler

Dan sekarang klik dua kali pada jd-gui dan klik pada file yang terbuka. Kemudian buka classes.dex.dex2jarfile dari folder itu. Sekarang Anda mendapatkan file kelas dan menyimpan semua file kelas ini (klik pada file kemudian klik "simpan semua sumber" di jd-gui) dengan nama src. Ekstrak file zip itu(classes_dex2jar.src.zip) dan Anda akan mendapatkan semua file java aplikasi.

Pada tahap ini Anda mendapatkan sumber java tetapi file xml masih tidak dapat dibaca, jadi lanjutkan.

Step 3:

Sekarang buka folder baru lain dan letakkan file-file ini

  1. letakkan file .apk yang ingin Anda dekode

  2. unduh Apktool untuk windows v1.xAndApktool

instal jendela menggunakan google dan letakkan di folder yang sama

  1. unduh file framework-res.apk menggunakan google dan letakkan di folder yang sama (Tidak semua file apk membutuhkan file framework-res.apk)

  2. Buka jendela perintah

  3. Arahkan ke direktori root APKtool dan ketik perintah berikut: apktool if framework-res.apk.

Perintah di atas harus menghasilkan Framework installed ....

  1. apktool d "appName" .apk ("appName" menunjukkan aplikasi yang ingin Anda dekode) sekarang Anda mendapatkan folder file di folder itu dan sekarang Anda dapat dengan mudah membaca file xml juga.

Step 4: Akhirnya kami mendapat res/serta kode proyek java yang merupakan target kami pada awal.

P.S. Jika Anda tidak bisa mendapatkan folder res dengan langkah-langkah di atas, silakan instal yang baru apktool

  • Apakah Java 1.7 diinstal? Instal Apktool 2.x
  • Apakah Java 1.6 atau lebih tinggi diinstal? Instal Apktool 1.x

Enjoy and happy coding

Swapnil Sonar
sumber
sangat berguna. Hanya sesuatu yang belum Anda sebutkan: apktool.jartidak ada dalam paket yang sama, saya mendapatkannya dari paket sebelumnya dan menempelkannya di direktori yang sama apktool.
S.Thiongane
1
saya membalikkan kode insinyur tetapi mengapa nama kelas, variabel seperti aa, bc, dll dan juga banyak kesalahan
user2934930
1
tidak dapat melakukannya dalam cmd
Meghal Agrawal
ada cara lain untuk melakukan itu?
Meghal Agrawal
2
@ user2934930 Ini berarti bahwa kode telah dikaburkan menggunakan ProGuard.
cascal
58

Tidak ada perangkat lunak & Tidak terlalu banyak langkah ..

Cukup unggah APK Anda & dapatkan semua sumber daya Anda dari situs ini ..

https://www.apkdecompilers.com/

Situs web ini akan mendekompilasi kode yang disematkan dalam file APK dan mengekstrak semua aset lain dalam file tersebut.

catatan: Saya mendekompilasi file APK saya & mendapatkan kode dalam satu miniute dari situs web ini

Pembaruan 1 :

Saya menemukan situs dekompiler online lain,

http://www.javadecompilers.com/apk/ - Tidak berfungsi terus-menerus meminta pemblokiran popup

Pembaruan 2:

Saya menemukan aplikasi apk dekompiler di play store,

https://play.google.com/store/apps/details?id=com.njlabs.showjava

Kami dapat mendekompilasi file apk di ponsel android kami. dan kami juga dapat melihat file java & xml di aplikasi ini

Pembaruan 3:

Kita dapat menggunakan opsi lain untuk menganalisis fitur APK dari Android studio versi 2.2

Build -> Analyze APK -> Pilih APK Anda -> itu memberikan hasil

masukkan deskripsi gambar di sini

Ranjith Kumar
sumber
3
pada metode terakhir kita tidak bisa membuka kelas java, hanya menunjukkan nama metode
Choletski
@Choletski apakah Anda mencoba ShowJava? jika tidak coba & perbarui saya
Ranjith Kumar
@RanjithKumar terbatas pada ukuran APK 50 MB .. saya memiliki 85 MB APK untuk mendekompilasi.
Ravi Sharma
1
Bagaimana menjalankan proyek yang dikompilasi di android studio? adakah yang bisa menulis tentang ini?
mayur kukadiya
4

Tidak juga. Ada sejumlah suite dex disassembler / decompiler di luar sana seperti smali , atau dex2jar yang akan menghasilkan output semi-humanreadable (dalam kasus dex2jar, Anda bisa mendapatkan kode java melalui penggunaan sesuatu seperti JD-GUI tetapi prosesnya adalah tidak sempurna dan sangat tidak mungkin Anda dapat membuat ulang 100% kode sumber Anda. Namun, ini berpotensi memberi Anda tempat untuk mulai membangun kembali pohon sumber Anda.

Chris Thompson
sumber
@ Mac: Dia membutuhkan sumber bukan file APK !!
Shashank Kadne
2
@ShashankKadne mungkin saya tidak menerima kata-kata saya kembali
MAC
3

Ya, Anda bisa mendapatkan proyek Anda kembali. Cukup ganti nama yourproject.apkfilenya yourproject.zip, dan Anda akan mendapatkan semua file di dalam file ZIP itu. Kami mengubah ekstensi file dari .apk ke .zip. Dari file ZIP itu, ekstrak classes.dexfile tersebut dan dekompilasi dengan cara berikut.

Pertama, Anda memerlukan alat untuk mengekstrak semua kelas (dikompilasi) pada DEX ke JAR. Ada satu yang disebut dex2jar , yang dibuat oleh seorang siswa Cina.

Kemudian, Anda bisa menggunakan JD-GUI untuk mendekompilasi kelas-kelas di JAR ke kode sumber. Kode sumber yang dihasilkan harus cukup mudah dibaca, karena dex2jar menerapkan beberapa optimasi.

Bintang
sumber
3

Untuk platform Android, Anda dapat mencoba ShowJava , tersedia di Play Store.

Anda dapat berkonsultasi dengan kode yang dihasilkan melalui antarmuka aplikasi dan file java dan struktur folder yang dihasilkan disimpan dalam ShowJavafolder /sdcard, di samping hasilnya.jar file yang dari konversi.

Aplikasi ini gratis dengan spanduk iklan di bagian bawah tampilan utama, tetapi ada opsi pembelian dalam aplikasi ($ 3,99) untuk menghapusnya. Pembelian dalam aplikasi tidak menambah fungsionalitas selain menghapus spanduk iklan.

Pengungkapan: Saya bukan pengembang aplikasi dan saya juga tidak berafiliasi dengannya.

Stephane Piriou
sumber
Saya biasanya menggunakannya untuk ... Aplikasi yang bagus
Rahul Kushwaha
2

Ikuti langkah-langkah di bawah ini untuk melakukan ini atau cukup gunakan permata apkToJava untuk proses ini, bahkan mengurus menginstal alat yang diperlukan untuk itu berfungsi.

  • konversi file apk ke zip
  • unzip file tersebut
  • ekstrak class.dex dari sana
  • gunakan dex to jar untuk mengonversikan tables.dex menjadi file jar
  • gunakan jadx gui untuk membuka file jar sebagai kode sumber java
Ajit Singh
sumber
2

Jika Anda mencari alternatif profesional, lihat JEB Decompiler dari PNF Software.

Ada versi demo yang memungkinkan Anda mendekompilasi sebagian besar kode.

Nick
sumber
2

Berikut adalah beberapa alat yang dapat Anda gunakan untuk melakukan rekayasa terbalik dari file APK ke kode sumber:

  1. Dex2jar
  2. Dekompiler Java
  3. Apktool
  4. Penganalisa Apk
Mandeep Yadav
sumber
2

Di Android Studio 3.5, Sangat mudah bahwa Anda dapat mencapainya dalam satu menit. Berikut ini adalah langkah proses yang bijaksana.

1: Buka Android Studio, Tekan tombol jendela -> Ketik Android Studio -> klik ikon untuk membuka layar splash studio android yang akan terlihat seperti ini.

masukkan deskripsi gambar di sini

2: Di sini Anda dapat melihat opsi "Profil atau debug APK" klik dan pilih file apk Anda dan tekan ok.

masukkan deskripsi gambar di sini

3: Ini akan membuka semua kelas manifes dan java Anda dalam satu menit tergantung ukuran apk.

masukkan deskripsi gambar di sini

Itu dia.

Imran Qamer
sumber
2

Coba alat ini: https://decompile.io , ini berjalan di iPhone / iPad / Mac masukkan deskripsi gambar di sini

Qing Xu
sumber