De Android Java-code is gecompileerd in Dalvik-bytecode, die redelijk leesbaar is. Ik vraag me af of het in theorie en in de praktijk mogelijk is om decompilatiesoftware voor Dalvik-bytecode te schrijven?
De Android Java-code is gecompileerd in Dalvik-bytecode, die redelijk leesbaar is. Ik vraag me af of het in theorie en in de praktijk mogelijk is om decompilatiesoftware voor Dalvik-bytecode te schrijven?
Het is niet alleen mogelijk, maar het is al gedaan, en niet slechts één keer. Hier zijn er drie waarvan ik weet, en er kunnen er meer zijn.
Kivlad door Cody Brocious
DAD door Zost (Androguard-project):
JEB door Nicolas Falliere (commercieel)
Dan zijn er alle Java-decompilers die kunnen worden gebruikt na gebruik van dex2jar
of Dare op het Dalvik-binaire bestand.
Ik denk dat het mogelijk moet zijn, zelfs met de huidige Java-decompilers, door hun code te patchen. Ze hebben minstens één groot verschil - terwijl JVM stack-gebaseerd is, is Dalvik register-gebaseerd. Dit verschil kan worden afgehandeld met niet zo veel code. Tweede verschil - bytecode-indeling. Je hebt dus code nodig die het Dalvik-bytecode-formaat kan demonteren.
Vergeet http://dexter.dexlabs.org/ niet - Dexter is een statische Android-applicatieanalysetool.
Een ander hulpmiddel is Bytecode Viewer :
https://github.com/Konloch/bytecode-viewer
Bytecode Viewer is een geavanceerde lichtgewicht 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 en meer. Het is volledig in Java geschreven en het is open source. Het wordt momenteel onderhouden en ontwikkeld door Konloch.
Naast de software die door Igor wordt vermeld, zijn er ook tools zoals apktool die kunnen worden gebruikt om code te decompileren: het transformeert de dalvik-bytecode naar smali, een taal die specifiek is voor de virtuele dalvik-machine (zie instructies / opcodes hier bijvoorbeeld).
U kunt ook bronnen in de applicatie bewerken en de applicatie opnieuw bouwen (maar het zal de originele handtekening verbreken omdat u opnieuw -teken het met uw eigen sleutel)