Android-Java-koden er samlet i Dalvik-byte-kode, noe som er ganske leselig. Jeg lurer på, er det mulig i teorien og i praksis å skrive en dekompileringsprogramvare for Dalvik-byte-kode?
Android-Java-koden er samlet i Dalvik-byte-kode, noe som er ganske leselig. Jeg lurer på, er det mulig i teorien og i praksis å skrive en dekompileringsprogramvare for Dalvik-byte-kode?
Det er ikke bare mulig, men det er allerede gjort, og ikke bare en gang. Her er tre jeg vet om, og det kan være flere.
Kivlad av Cody Brocious
DAD av Zost (Androguard-prosjekt):
JEB av Nicolas Falliere (kommersiell)
Så er det alle Java-dekompilerer som kan brukes etter bruk av dex2jar
eller Tør på Dalvik-binæren.
Jeg synes det burde være mulig selv med nåværende Java-dekompilatorer, ved å lappe koden deres. De har minst en stor forskjell - mens JVM er stakkbasert, er Dalvik registerbasert. Denne forskjellen kan håndteres med ikke så mye kode. Andre forskjell - bytecode-format. Så du trenger å bruke kode som kan demontere Dalvik bytecode-format.
Ikke glem http://dexter.dexlabs.org/ - Dexter er et statisk Android-applikasjonsanalyseverktøy.
Et annet verktøy er Bytecode Viewer :
https://github.com/Konloch/bytecode-viewer
Bytecode Viewer er en avansert lett Java Bytecode Viewer, GUI Java Decompiler, GUI Bytecode Editor, GUI Smali, GUI Baksmali, GUI APK Editor, GUI Dex Editor, GUI APK Decompiler, GUI DEX Decompiler, GUI Procyon Java Decompiler, GUI Krakatau , GUI CFR Java Decompiler, GUI FernFlower Java Decompiler, GUI DEX2Jar, GUI Jar2DEX, GUI Jar-Jar, Hex Viewer, Code Searcher, Debugger og mer. Den er skrevet helt på Java, og den er åpen. For tiden vedlikeholdes den og utvikles av Konloch.
I tillegg til programvaren som er oppført av Igor, finnes det også verktøy som apktool som kan brukes til å dekompilere kode: den forvandler dalvik bytecode til smali, et språk som er spesifikt for dalviks virtuelle maskin (se instruksjoner / opcodes her for eksempel).
Du kan også redigere ressurser i applikasjonen, og bygge applikasjonen tilbake (men den vil bryte den originale signaturen, ettersom du må re -tegn den med din egen nøkkel)