Is het mogelijk om een ​​Android .apk-bestand te decompileren?

Kunnen de gebruikers het apk-bestand van mijn applicatie terug converteren naar de daadwerkelijke code?
Als ze dat doen – is er een manier om dit te voorkomen?


Antwoord 1, autoriteit 100%

Ten eerste is een apk-bestandslechts een aangepast jar-bestand. Dus de echte vraag is of ze de dex-bestanden erin kunnen decompileren. Het antwoord is een soort van. Er zijn al disassemblers, zoals dedexeren smali. Je kunt verwachten dat deze alleen maar beter worden, en theoretisch zou het uiteindelijk mogelijk moeten zijn om te decompileren naar de daadwerkelijke Java-bron (althans soms). Zie de vorige vraag DEX decompileren in Java-broncode.

Wat je moet onthouden is dat verduistering nooit werkt. Kies een goede licentie en doe je best om deze via de wet af te dwingen. Verspil geen tijd met onbetrouwbare technische maatregelen.


Antwoord 2, autoriteit 45%

Decompilatie van APK-bestand is mogelijk. Maar het kan moeilijk zijn om de code te begrijpen als deze onduidelijk is.

Gebruik Aapt(onderdeel van de Android SDK) of AXMLParser(van AndroGuard) om informatie van een APK-bestand te analyseren en te bekijken

  • Haalt de inhoud van het AndroidManifest.xml-bestand op

  • Toont verschillende informatie (bijv. machtigingen, activiteiten, services, ontvangers van uitzendingen, …)

  • Opdracht:

    Aapt

    aapt dump badging sampleApp.apk
     aapt dump permissions sampleApp.apk
     aapt dump xmltree sampleApp.apk
    

    AXMLParser

    apkinfo sampleApp.apk
    

Gebruik ApkToolof NinjaDroidom de bronnen van een APK-bestand te demonteren en te bekijken

  • Demonteert de bytecode naar smali/assembly

  • Extracteert het AndroidManifest.xml, het CERT.RSA-bestand en alles in de res-map (lay-out xml-bestanden, afbeeldingen, html’s die in webview worden gebruikt, enz.)

  • Opdracht:

    ApkTool

    apktool.bat d sampleApp.apk
    java -jar apktool.jar -q decode -f sampleApp.apk -o myOutputDir
    

    NinjaDroid

    ninjadroid MyApk.apk --all --extract myOutputDir/
    
  • OPMERKING:je kunt iets soortgelijks bereiken door een zip-hulpprogramma zoals 7-zip te gebruiken. Maar deze tools extraheren ook de .smali-bestanden van alle .class-bestanden.

Gebruik dex2jarom de DEX-bestanden van een APK-bestand in Java-code te decompileren

  • Genereert het .jar-bestand van een .apk-bestand (merk op dat de Java-code van Android-apps meestal versluierd is)

  • JD-GUI nodig om de broncode van het .jar-uitvoerbestand te bekijken

  • Opdracht:

    dex2jar sampleApp.apk
    d2j-dex2jar.sh -f sampleApp.apk -o myOutputDir/sampleApp.jar
    

Gebruik JD-GUI om het .jar-bestand te bekijken

  • Decompileert de .class-bestanden (verdoezeld in het geval van Android-apps, maar niet in het geval van andere .jar-bestanden) en toont de bijbehorende Java-code

Antwoord 3, autoriteit 4%

Ik kan er ook aan toevoegen dat het tegenwoordig mogelijk is om de Android-applicatie online te decompileren, geen software nodig!

Hier zijn 2 opties voor jou:


Antwoord 4

Download deze jadx-tool https://sourceforge.net/projects/jadx/files/

Pak het uit en in de lib-map voer je het jadx-gui-0.6.1.jar-bestand uit en blader je nu door je apk-bestand.
Het is klaar. APK zal automatisch decompileren en opslaan door op de knop Opslaan te drukken.
Hoop dat het voor je zal werken.
Bedankt


Antwoord 5

Kunnen de gebruikers het apk-bestand van mijn applicatie terug converteren naar de daadwerkelijke code?

ja.

Mensen kunnen verschillende tools gebruiken om:

  • analyse: uw APK
  • decodeer/hack je apk
    • FDex2gebruiken om het dex-bestand te dumpen
      • gebruik vervolgens dex2jarom te converteren naar jar
        • vervolgens jadxgebruiken om te converteren naar javabroncode

Als ze dat doen, is er een manier om dit te voorkomen?

ja. Verschillende (kunnen gecombineerde) manieren om dit (in zekere mate) te voorkomen:

  • laag niveau: code verduistering
    • met Android ProGuard
  • hoog niveau: gebruik Android Harden-scenario

Meer details vind je in mijn Chinesetutorial: 安卓应用的


Antwoord 6

Soms krijg je gebroken code als je dex2jar/apktoolgebruikt, met name in loops. Om dit te voorkomen, gebruikt u jadx, dat dalvik-bytecode decompileert in Java-broncode, zonder een .jar/.classbestand eerst zoals dex2jardoet (apktool gebruikt dex2jar denk ik). Het is ook open-source en in actieve ontwikkeling. Het heeft zelfs een GUI, voor GUI-fanaten. Probeer het!


Antwoord 7

Ja, er is heel veel software beschikbaar om een ​​.apk-bestand te decompileren.

Onlangs had ik een ultieme lijst samengesteld van 47 beste APK-decompilersop mijn website. Ik heb ze in 4 verschillende secties ingedeeld.

  1. Open source APK-decompilers
  2. Online APK-decompilers
  3. APK-decompiler voor Windows, Mac of Linux
  4. APK-decompiler-apps

Ik hoop dat deze verzameling u zal helpen.

Link: https://www.edopedia.com/blog/best- apk-decompilers/

Other episodes