可以先把smali轉(zhuǎn)化為dex文件,然后再用 dex2jar轉(zhuǎn)化一次。我之前也遇到過跟你一樣的情況就是這么處理的。祝你好運(yùn)!
創(chuàng)新互聯(lián)專注于林口網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供林口營銷型網(wǎng)站建設(shè),林口網(wǎng)站制作、林口網(wǎng)頁設(shè)計(jì)、林口網(wǎng)站官網(wǎng)定制、微信小程序開發(fā)服務(wù),打造林口網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供林口網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
smali2java是一個(gè)將smali代碼反編譯成java代碼的工具。
smali2java工具基于apktool v1.5.0(baksmali v1.3.4)生成的smali文件,依賴于smali文件中的代碼行數(shù)(.line關(guān)鍵字)和變量別名(.local關(guān)鍵字)等信息,可以最大程度還原原始的java代碼。還原出的java代碼將具有原始的變量命名,代碼的順序也與原始的java代碼保持一致。
本工具也具有局限性,僅適用于帶有行數(shù)和變量別名信息的smali文件(java編譯器的編譯選項(xiàng)可以在生成的字節(jié)碼中剔除這些信息)。
把java代碼轉(zhuǎn)成smali代碼共需要以下三個(gè)步驟
1、編譯java代碼為class文件
javac smaliTest.java
這個(gè)比較簡單,會生成smaliTest.class文件
2、把class文件轉(zhuǎn)成dex文件
我們知道apk包里java代碼最后生成的是class.dex文件,把class轉(zhuǎn)化成dex文件就需要用到android SDK提供的一個(gè)工具dx,該jar包位于android-sdk\build-tools\23.0.1\lib,找到該包后執(zhí)行以下命令
java -jar dx.jar --dex --output=smaliTest.dex smaliTest.class
3、把dex轉(zhuǎn)化成smali文件
這時(shí)候會使用到另外一個(gè)工具baksmali,該工具位于android-sdk\platform-tools\,找到該包后執(zhí)行以下命令
java -jar baksmali.jar smaliTest.dex
OK,完成,此時(shí)會生成一個(gè)out目錄,在out目錄下的smaliTest.smali就是我們要看到的smali代碼了