這是smali2java下載,本人自己寫的將smali反編譯為java代碼的工具,支持apk和jar包直接反編譯為java代碼,適用于java代碼未經編譯優(yōu)化,保留了源碼行數(shù)和變量名稱的情況。
smali2java是將Android字節(jié)碼用可閱讀的字符串形式表現(xiàn)出來的一種語言,可以稱之為Android字節(jié)碼的反匯編語言。使用baksmali或apktool可以將Android應用程序包(apk或jar)反編譯為smali代碼。
smali2java工具基于apktool v1.5.0(baksmali v1.3.4)生成的smali文件,依賴于smali文件中的代碼行數(shù)(.line關鍵字)和變量別名(.local關鍵字)等信息,可以最大程度還原原始的java代碼。還原出的java代碼將具有原始的變量命名,代碼的順序也與原始的java代碼保持一致。因此,本工具也具有局限性,僅適用于帶有行數(shù)和變量別名信息的smali文件(java編譯器的編譯選項可以在生成的字節(jié)碼中剔除這些信息)。
smali2java使用了apktool將Android字節(jié)碼文件轉換為smali文件。界面顯示中使用了CCrystalTextView作為java語法高亮顯示控件,
smali2java工具基于apktool v1.5.0(baksmali v1.3.4)生成的smali文件,依賴于smali文件中的代碼行數(shù)(.line關鍵字)和變量別名(.local關鍵字)等信息,可以最大程度還原原始的java代碼。還原出的java代碼將具有原始的變量命名,代碼的順序也與原始的java代碼保持一致。因此,本工具也具有局限性,僅適用于帶有行數(shù)和變量別名信息的smali文件(java編譯器的編譯選項可以在生成的字節(jié)碼中剔除這些信息)。