Android 使用python3將jar轉smail
阿新 • • 發佈:2018-11-06
廢話不多說,直接上程式碼 class JarManager(object): def getJarList(self,file_dir): result = [] for root, dirs, files in os.walk(file_dir): result = files # 當前路徑下所有非目錄子檔案 return result def excuteJar2Dex(self,path,jars): for jar in jars: dexPath = path+"\\build\\"+str(jar.split('.jar')[0:][0])+".dex " dexcmd = path+"\\tools\dx --dex --output="+dexPath + path+"\\channel\\"+jar os.popen(dexcmd) time.sleep(8) if os.path.exists(dexPath): smailCmd = "java -jar "+path+"\\tools\\"+"baksmali.jar -o "+path+"\\smail\\"+"\\ "+dexPath os.popen(smailCmd) time.sleep(5) if __name__ == "__main__": jarManager = JarManager() path = (os.path.dirname(os.path.abspath(__file__))) jarNameList = jarManager.getJarList(path+"\channel\\") jarManager.excuteJar2Dex(path,jarNameList)
實現邏輯:
1.獲取當前目錄
path = (os.path.dirname(os.path.abspath(__file__)))
2.獲取指定目錄下所有的jar檔案,返回型別為集合
jarNameList = jarManager.getJarList(path+"\channel\\")
def getJarList(self,file_dir): result = [] for root, dirs, files in os.walk(file_dir): result = files # 當前路徑下所有非目錄子檔案 return result
3.將獲取到的jar檔案全部轉為dex檔案,這裡需要依賴dx.bat和dx.jar
3.1,迴圈集合取出所有的jar檔案
3.2,拼接需要執行的cmd命令
3.3,執行cmd命令
for jar in jars: dexPath = path+"\\build\\"+str(jar.split('.jar')[0:][0])+".dex " dexcmd = path+"\\tools\dx --dex --output="+dexPath + path+"\\channel\\"+jar os.popen(dexcmd)
4.將執行命令得到的dex檔案轉為smail檔案,這裡需要依賴baksmail.jar檔案
smailCmd = "java -jar "+path+"\\tools\\"+"baksmali.jar -o "+path+"\\smail\\"+"\\ "+dexPath os.popen(smailCmd)
到這裡python指令碼就已經完成了。