Bir Android .apk dosyasını yeniden derlemek mümkün müdür?


86

Kullanıcılar uygulamamın apk dosyasını gerçek koda dönüştürebilir mi? Eğer yaparlarsa - bunu önlemenin bir yolu var mı?


1
APK'yi yeniden derlemenin birkaç yöntemi vardır . Sadece APKTool'u daha sık kullanıyorum, en iyisi ve en güçlüsü. Onunla apk dosyalarını değiştirmek çok kolaydır .
Taranfx

Burada bir blog yazısı yazdım: codexplo.wordpress.com/2012/03/15/… ama yine, gizlenmiş kod için zor olurdu ...
rokonoid


Yanıtlar:


80

İlk olarak, bir apk dosyası yalnızca değiştirilmiş bir jar dosyasıdır. Yani asıl soru, içindeki dex dosyalarını çözebilirler mi? Cevap bir çeşit. Dedexer ve smali gibi sökücüler zaten var . Bunların yalnızca daha iyi olmasını bekleyebilirsiniz ve teorik olarak nihayetinde gerçek Java kaynağına (en azından bazen) yeniden derlemek mümkün olacaktır. DEX'i Java kaynak koduna dönüştüren önceki soruya bakın .

Unutmamanız gereken şey şaşkınlık asla işe yaramaz. İyi bir lisans seçin ve bunu kanun yoluyla uygulamak için elinizden gelenin en iyisini yapın. Güvenilir olmayan teknik önlemlerle zaman kaybetmeyin.


45
Asla asla Deme. Gizleme kararlı bir hırsızı durdurmaz, ancak diğerlerini yavaşlatır veya caydırır. Proguard ile işlem yapmak, kodunuzu gizlemenin kolay ve GÜVENİLİR bir yoludur ve bonus olarak onu da optimize eder. Ve Android SDK'ya dahildir, bu nedenle Google tarafından onaylanmıştır.
Barry Fruitman

3
Gizleme kesinlikle işe yarıyor, ancak hedefinizin ne olduğunu daha net tanımlamanız gerekiyor. Açıkçası, kaynak kodunuzu gerçekten güvende tutmanın tek yolu, hiç kimseye ona, sunucuya veya istemciye erişim vermemektir. Proguard'ın XML dosyalarında referansları olan sınıflarda iyi çalışmadığını unutmayın. Bunu aşmak için manuel gizleme kullanmanız gerekir.
MattC

35

APK dosyasının yeniden derlenmesi mümkündür. Ancak, kodu gizlenmişse anlamak zor olabilir.

APK Dosyası içindeki kaynakları görüntülemek için ApkTool

  • AndroidManifest.xml ve res klasöründeki her şeyi (düzen xml dosyaları, resimler, web görünümünde kullanılan html'ler vb.)
  • komut: apktool.bat d sampleApp.apk
  • NOT: Bunu, 7-zip gibi bir zip yardımcı programını kullanarak başarabilirsiniz. Ancak, tüm .class dosyalarının .smali dosyasını da çıkarır.

Dex2jar kullanma

  • .Apk dosyasından .jar dosyası oluşturur, bu .jar'daki kaynak kodunu görüntülemek için JD-GUI'ye ihtiyacımız var.
  • komut: dex2jar sampleApp.apk

JD-GUI kullanarak .jar'ın derlemesini çözme

  • .class dosyalarının derlemesini çözer (android uygulamasında karmaşık hale getirilir, ancak başka bir .jar dosyası durumunda okunabilir bir orijinal kod alınır). yani .java'yı uygulamadan geri alıyoruz.

apktool java kaynak dosyalarını tükürmez! Sadece smali
IgorGanapolsky

1
cevapta daha önce de söylediğim gibi, apktool .apk'dan .jar oluşturur ve .java kaynak dosyalarını elde etmek için .jar'ı derlemek için JD-GUI benzeri bir araç kullanmalıyız.
gtiwari333

1
hayatımı kurtardın! ne harika bir gönderi! Başarısız bir SSD nedeniyle son iki günlük kodu kaybettim (ne yazık ki gitmedim). Ancak, apk bende vardı ve şimdi kaynağım var, dikkat edin, biraz farklı ama kaynak!
farcrats

3

Ayrıca şunu da ekleyebilirim ki, günümüzde Android uygulamasını çevrimiçi olarak derlemek mümkündür, yazılım gerekmez!

İşte sizin için 2 seçenek:


decompileandroid.com çevrimdışı (apk'yi yüklediğinizde tekrar indirirken sorun yaşarsınız ) ve javadecompilers.com/apk apk'mi uzun süre sıraya koydu. Çevrimdışı oldum, sonra çevrimiçi oldum, hala kuyruktaydı. Tüm göz atma geçmişini temizledim ve ikinci kez yüklediğim apk artık kuyrukta.
iOSAndroidWindowsMobileAppsDev

1

Bu jadx aracını indirin https://sourceforge.net/projects/jadx/files/

Sıkıştırılmış dosyayı açın ve lib klasöründen sonra jadx-gui-0.6.1.jar dosyasını çalıştırın, şimdi apk dosyanıza göz atın. Bitti. Otomatik olarak apk, kaydet düğmesine basarak derlemeyi çözecek ve kaydedecektir. Umarım sizin için çalışacaktır. Teşekkürler


0

Bazen dex2jar/ kullanırken apktool, en önemlisi döngülerde kod kırılır . Bunu önlemek için, dalvik bayt kodunu java kaynak koduna dönüştüren jadx'i , ilk önce bir .jar/ .classdosyası oluşturmadan kullanın dex2jar(apktool, sanırım dex2jar kullanır). Aynı zamanda açık kaynaklıdır ve aktif geliştirme aşamasındadır. Hatta GUI fanatiği için bir GUI'ye sahiptir. Dene!


0

Kullanıcılar uygulamamın apk dosyasını gerçek koda dönüştürebilir mi?

Evet.

İnsanlar aşağıdakileri yapmak için çeşitli araçlar kullanabilir:

  • analiz: apk'niz
  • apk'nizin kodunu çözme / hackleme
    • dosyayı FDex2dökmek için kullanmadex
      • sonra dex2jardönüştürmek için kullanarakjar
        • Sonra kullanarak jadxiçin conver javakaynak kodu

Eğer yaparlarsa - bunu önlemenin bir yolu var mı?

Evet. Bunu önlemenin (belirli bir dereceye kadar) birkaç (birleştirilebilir) yolu:

  • düşük seviye: kod gizleme
    • Android kullanarak ProGuard
  • yüksek seviye: android güçlendirme senaryosunu kullanın

Daha fazla ayrıntı Çince öğreticime başvurabilir :安卓 应用 的 安全 和 破解


0

Evet, bir .apk dosyasını yeniden derlemek için kullanılabilecek tonlarca yazılım vardır.

Son zamanlarda, web sitemde en iyi 47 APK çözücünün nihai bir listesini derledim . Bunları 4 farklı bölüme ayırdım.

  1. Açık Kaynak APK Decompilers
  2. Çevrimiçi APK Ayrıştırıcıları
  3. Windows, Mac veya Linux için APK Decompiler
  4. APK Decompiler Uygulamaları

Umarım bu koleksiyon size yardımcı olur.

Bağlantı: https://www.edopedia.com/blog/best-apk-decompilers/

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.