首页 > 代码库 > 用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~"





















用apktool批量反编译apk文件