废话不多说,直接上代码 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脚本就已经完成了。
扫描二维码关注公众号,回复:
3949523 查看本文章