APK dosyasından projeye tersine mühendislik


244

Projemi Eclipse'den yanlışlıkla sildim ve kalan tek şey telefonuma aktardığım APK dosyası. Bir uygulamayı .apk dosyasına verme işlemini tersine çevirmenin bir yolu var mı, bu yüzden projemi geri alabilir miyim?



2
tutulmanın kendine ait bir sürüm geçmişi olduğunu biliyor musun?
eis


4
sizin için önemli bir şey yazıyorsanız, bir VCS kullanmalısınız. Bitbucket'in ücretsiz özel depoları vardır.
lxknvlk

Yanıtlar:


287

Bilinmeyen bir APK dosyasından Java kodu (kaba ama yeterince iyi) oluşturacak iki yararlı araç vardır.

  1. Dan dex2jar aracını indirin dex2jar .
  2. APK dosyasını JAR'a dönüştürmek için aracı kullanın :

    $ d2j-dex2jar.bat demo.apk
    dex2jar demo.apk -> ./demo-dex2jar.jar
  3. JAR dosyası oluşturulduktan sonra, JAR dosyasını açmak için JD-GUI kullanın. Java dosyalarını göreceksiniz.

Çıktı şuna benzer olacaktır:

JD GUI


6
kaynak dosyaları nasıl
edinilir

26
cmd kullanımdan kaldırılmıştır, d2j-dex2jarbunun yerine kullanın (v0.0.9.15).
Fredrick Gauss

1
@sri sadece apk dosyasını zip ve ayıklamak için yeniden adlandırın, resklasördeki kaynak dosyalara sahip olacaksınız
Hoang Huynh

8
@HoangHuynh resokunamayan xml dosyaları olan bir klasöre sahip
olacaksınız

6
Gelen Macsen dex2jar kullanılamaz eğer: permission deniedo zaman bunu $sudo chmod +x d2j-dex2jar.sh
Min2

81

Her şeyden önce thisvideoyu tavsiye ederim bu tüm şüphelerinizi temizler

Değilse lütfen içinden geçin

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

Step 1:

Yeni bir klasör oluşturun ve içine .apk dosyasını (kodunu çözmek istediğiniz) koyun. Şimdi bu .apkdosyanın uzantısını yeniden adlandırın .zip(örn. Rename yerine filename.apk yerine filename.zip) ve kaydedin.

.Zip biçimine dönüştürmede sorunlar varsa lütfen link

.Zip aldıktan sonra şimdi classes.dex dosyaları, vb olsun. Bu aşamada xml ve java dosyalarını çekilebilir ancak göremezsiniz, bu yüzden devam edin. Uzantıların geçtiğini görmüyorsanız yapılandırmayı kontrol edin

Step 2:

Şimdi bu zip apk dosyasını aynı klasörde çıkarın. Şimdi dex2jar'ı buradan indirinlink

ve aynı klasöre ayıklayın. Şimdi komut istemini açın ve dizini bu klasöre değiştirin.

Sonra yazın dex2jar classes.dexve enter tuşuna basın. Şimdi classes.dex.dex2jaraynı klasöre dosya alıyorsunuz .

Sonra java decompiler indirin

Ve şimdi jd-gui'ye çift tıklayın ve açık dosyaya tıklayın. Ardından classes.dex.dex2jardosyayı bu klasörden açın. Şimdi sınıf dosyalarını alıyorsunuz ve tüm bu sınıf dosyalarını kaydediyorsunuz (dosyaya tıklayın, sonra jd-gui'deki "tüm kaynakları kaydet" e tıklayın) src name. Bu zip dosyasını ayıklayın (classes_dex2jar.src.zip)ve uygulamanın tüm java dosyalarını alacaksınız.

Bu aşamada java kaynağı alırsınız, ancak xml dosyaları hala okunamıyor, bu yüzden devam edin.

Step 3:

Şimdi yeni bir klasör açın ve bu dosyaları yerleştirin

  1. kodunu çözmek istediğiniz .apk dosyasını koy

  2. Apktool for windows v1.xAnd indirApktool

google'ı kullanarak pencereyi yükle ve aynı klasöre koy

  1. google kullanarak framework-res.apk dosyasını indirin ve aynı klasöre koyun (Tüm apk dosyaları framework-res.apk dosyasına ihtiyaç duymaz)

  2. Bir komut penceresi açın

  3. APKtool kök dizinine gidin ve aşağıdaki komutu yazın: apktool if framework-res.apk.

Yukarıdaki komut ile sonuçlanmalıdır Framework installed ....

  1. apktool d "appName" .apk ("appName" kodunu çözmek istediğiniz uygulamayı gösterir) şimdi bu klasörde bir dosya klasörü alıyorsunuz ve şimdi kolayca xml dosyalarını da okuyabilirsiniz.

Step 4: Sonunda res/başlangıçta hedefimiz olan java proje kodunu aldık .

P.S. Yukarıdaki adımları izleyerek res klasörü alamıyorsanız, lütfen yeni yükleyin apktool

  • Java 1.7 yüklü mü? Apktool 2.x'i yükleyin
  • Java 1.6 veya daha üstü yüklü mü? Apktool 1.x'i yükleyin

Enjoy and happy coding


gerçekten yararlı. Bahsetmediğiniz bir şey: apktool.jaraynı pakette değil, eski bir paketten aldım ve aynı direkte yapıştırdım apktool.
S.Thiongane

1
i kodu mühendis ters ama neden sınıf adı, değişken aa, bc, vb ve aynı zamanda birçok hata gibi
user2934930

1
cmd bunu yapamıyorum
Meghal Agrawal

Bunu yapmanın başka bir yolu var mı?
Meghal Agrawal

2
@ user2934930 Bu, kodun ProGuard kullanılarak gizlendiği anlamına gelir.
cascal

58

Yazılım yok ve çok fazla adım yok ..

APK'nızı yükleyin ve tüm kaynaklarınızı bu siteden alın.

https://www.apkdecompilers.com/

Bu web sitesi APK dosyalarına gömülü kodu çözecek ve dosyadaki diğer tüm varlıkları çıkaracaktır.

not: APK dosyamı koda ediyorum ve kodu bu web sitesinden bir dakika içinde alıyorum

Güncelleme 1 :

Başka bir çevrimiçi decompiler sitesi buldum,

http://www.javadecompilers.com/apk/ - Pop-up engelleme için sürekli çalışmıyor

Güncelleme 2:

Oyun mağazasında apk decompiler uygulamasını buldum,

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

Android telefonumuzdaki apk dosyalarını kodabiliriz. ve ayrıca bu uygulamada java ve xml dosyalarını görüntüleyebiliyoruz

Güncelleme 3:

Android stüdyosu 2.2 sürümünden APK seçeneğini analiz etmek için başka bir seçenek kullanabiliriz

Oluştur -> APK'yi Analiz Et -> APK'nızı Seçin -> sonuç verir

resim açıklamasını buraya girin


3
son yöntemde java sınıfını açamıyoruz, sadece yöntem isimlerini gösteriyor
Choletski

@Choletski ShowJava'yı deniyor musunuz? beni denemek ve güncellemek
Ranjith Kumar

@RanjithKumar onun 50 MB APK boyutu ile sınırlı .. Ben koda 85 MB APK var.
Ravi Sharma


1
Bu ayrıştırılmış projeyi android stüdyoda nasıl çalıştırırım? Herkes bu konuda yazabilir.
mayur kukadiya


4

Pek sayılmaz. Bir dizi vardır dex / disassembler Decompiler suit orada böyle olarak ufak olduğu veya dex2jar dex2jar durumunda yarı insanlar tarafından okunabilir çıkışı (üreteceği, gibi bir şey kullanmak suretiyle java kodunu alabilirsiniz JD-GUI ama süreçtir mükemmel değil ve kaynak kodunuzu% 100 yeniden oluşturabilirsiniz, ancak kaynak ağacınızı yeniden oluşturmaya başlamak için size bir yer verebilir.


@MAC: APK dosyasına değil kaynağa ihtiyacı var !!
Shashank Kadne

2
@ShashankKadne sözlerimi geri alamıyorum
MAC

3

Evet, projenizi geri alabilirsiniz. Sadece yourproject.apkdosyayı yeniden adlandırın ve yourproject.zipbu ZIP dosyasının içindeki tüm dosyaları alacaksınız. Dosya uzantısını .apk yerine .zip olarak değiştiriyoruz. Bu ZIP dosyasından, dosyayı ayıklayın classes.dexve aşağıdaki şekilde eşleştirin.

İlk olarak, DEX üzerindeki tüm (derlenmiş) sınıfları bir JAR'a çıkarmak için bir araca ihtiyacınız vardır. Çinli bir öğrenci tarafından yapılan dex2jar adlı bir tane var .

Ardından, JAR'daki sınıfları kaynak koduna dönüştürmek için JD-GUI'yi kullanabilirsiniz . Dex2jar bazı optimizasyonlar uyguladığından, sonuçtaki kaynak kodu oldukça okunabilir olmalıdır.


3

Android platformu için Play Store'da bulunan ShowJava'yı deneyebilirsiniz .

Oluşturulan koda uygulama arabirimi üzerinden başvurabilirsiniz ve oluşturulan java dosya ve klasörleri yapısı , dönüşümden elde edilen dosyanın yanında yer alan ShowJavaklasörde saklanır ./sdcard.jar

Uygulama, ana görünümün alt kısmında bir reklam banner ile ücretsizdir, ancak kaldırmak için bir uygulama içi satın alma seçeneği (3,99 $) vardır. Uygulama içi satın alma, reklam banner'ını kaldırmanın yanı sıra herhangi bir işlev eklemez.

Açıklama: Uygulamanın geliştiricisi değilim, ne de ona bağlıyım.


Genellikle bu uygulama ... Güzel uygulama
Rahul Kushwaha

2

Bunu yapmak için aşağıdaki adımları izleyin veya bu işlem için apkToJava gem'i kullanın , çalışması için gerekli araçları yüklemeye bile özen gösterir.

  • apk dosyasını zip'e dönüştür
  • dosyayı aç
  • classes.dex dosyasını çıkarın
  • classes.dex dosyasını jar dosyasına dönüştürmek için dex'i jar'a kullanın
  • jar dosyasını java kaynak kodu olarak açmak için jadx gui kullanın

2

Profesyonel bir alternatif arıyorsanız, JEB Decompiler'a bir göz atın , PNF Software'den .

Çoğu kodu koda etmenizi sağlayacak bir demo sürümü var.


2

Bir APK dosyasından kaynak koduna tersine mühendislik uygulamak için kullanabileceğiniz araçlardan bazıları şunlardır:

  1. Dex2jar
  2. Java kod çözücü
  3. Apktool
  4. APK Analizörü

2

Android Studio 3.5'te, bir dakika içinde başarabilmeniz çok kolay. aşağıdaki adım adım bir süreçtir.

1: Android Studio'yu açın, pencere düğmesine basın -> Android Studio yazın -> böyle görünecek android studio açılış ekranını açmak için simgeye tıklayın.

resim açıklamasını buraya girin

2: Burada "Profil veya APK hata ayıklama" seçeneğine tıklayın ve apk dosyanızı seçin ve Tamam'a basın.

resim açıklamasını buraya girin

3: Tüm manifest ve java sınıflarınızı apk boyutuna bağlı olarak bir dakika içinde açacaktır.

resim açıklamasını buraya girin

Bu kadar.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.