Android Java代碼被編譯為Dalvik字節代碼,這是很容易理解的。我想知道,在理論上和實踐上是否有可能為Dalvik字節碼編寫反編譯軟件?
Android Java代碼被編譯為Dalvik字節代碼,這是很容易理解的。我想知道,在理論上和實踐上是否有可能為Dalvik字節碼編寫反編譯軟件?
這不僅可能,而且已經完成,而不僅僅是一次。這是我所知道的三個,而且可能還有更多。
科迪·布羅維奇的基夫拉德
DAD(Androguard項目):
JEB,作者Nicolas Falliere(商業)
我認為,即使是當前的Java反編譯器,也可以通過修補其代碼來實現。它們至少有一個很大的區別-JVM是基於堆棧的,而Dalvik是基於寄存器的。不用太多代碼就可以處理這種差異。第二個區別-字節碼格式。因此,您需要使用能夠反彙編Dalvik字節碼格式的代碼。
別忘了 http://dexter.dexlabs.org/- Dexter是一個靜態的android應用程序分析工具。
另一個工具是字節碼查看器:
https://github.com/Konloch/bytecode-viewer
字節碼查看器是高級輕量級Java字節碼查看器,GUI Java反編譯器,GUI字節碼編輯器,GUI Smali,GUI Baksmali,GUI APK編輯器,GUI Dex編輯器,GUI APK反編譯器,GUI DEX反編譯器,GUI Procyon Java反編譯器,GUI Krakatau ,GUI CFR Java反編譯器,GUI FernFlower Java反編譯器,GUI DEX2Jar,GUI Jar2DEX,GUI Jar-Jar,十六進制查看器,代碼搜索器,調試器等。它完全用Java編寫,並且是開源的。 Konloch目前正在維護和開發它。