用apktool批量反編譯apk檔案,apktool反編譯apk
寫在前面的話
這個是一個十分簡單的指令碼,非常簡單。為什麼要寫,因為我是來騙分數的。
應用情境
主機上有一堆APK檔案,是按照類別分好的,現在用apktool 反編譯它們,然後在按照類別和apk的名字來儲存它們
實現
要使用這個指令碼,你需要安裝一下apktool.注釋已經很詳細了,希望可以有用。當然,這個用python實現的,你也可以寫個shell指令碼。
#!/usr/bin/env python# coding=utf-8'''@author : chicho@date : 2015-01-01@function : use apktool to decompile apk files @rununing : python python decompileAPK.py'''import os# apk 的儲存路徑apkPath = "/home/chicho/test/apps/"# 由於APK的儲存是按照類別來劃分的,所以擷取到每一個apk的儲存類別dirlist = os.listdir(apkPath)# 用apktool 反編譯apk 之後的儲存路徑outputPath="/home/chicho/test/apktool_out/"# 將apk 反編譯之後還是將它們按照原先的類別儲存for i in range(len(dirlist)): # 得到apk 檔案夾下的每一個子的類別 filelist = apkPath + dirlist[i] # 擷取每個類別的路徑 apklist = os.listdir(filelist) # 擷取每個路徑下的apk 列表 category_output = outputPath + dirlist[i] # 輸出的路徑列表 if not os.path.exists(category_output): #如果輸出的路徑不存在那麼就建立一個路徑 os.makedirs(category_output) for APK in apklist: portion=os.path.splitext(APK) #將apk檔案按照它們的檔案名稱和尾碼做一個分割 apkoutPath=os.path.join(category_output,portion[0]) #portion 中 儲存的是apk的檔案名稱APK=os.path.join(apkPath+dirlist[i],APK) #if not os.path.exists(apkoutPath): # os.makedirs(apkoutPath) cmd = "apktool d {0} {1}".format(APK, apkoutPath)# 反編譯出來apk 之後按照檔案名稱在儲存 os.system(cmd)print "all work done! Happy new year~"