Python-apk安全检测--反编译资源文件(Smali+class+java)代码实现-01

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33668011/article/details/82801091

       前面我们已经将环境都安装好了,现在我们就开始搭建一个项目来做反编译啦!首先我们说一下我这边项目的一个目录结构:config(配置文件目录),res(反编译目录资源),util(工具目录),test(测试代码目录)

1.config目录:主要房租一些配置文件全局的获取部分需要的设置

2.res目录:apk文件目录(apk_dir);class文件目录(class_dir);java文件目录(java_dir);smali文件目录(smali_dir)

3.util目录:配置文件读取类(config),常规文件读写类(fileds),数据库操作类(sqlTool)    等

4.test:放置主要核心代码文件

如图:

至于一些工具了我们这里就不进行详细的说明了(我之前的文章中都有进行说明),主要重点将放在核心代码实现上。

一。我们要获取到常规反编译文件(Smali)

先定义几个目录文件方便我们放置不同类型的文件

def __init__(self, apkName):
        """相当于java的初始化过程"""
        self.apk_dir = Config("apk").get("apk_dir") + apkName + ".apk"
        self.class_dir = Config("apk").get("class_dir") + apkName
        self.java_dir = Config("apk").get("java_dir") + apkName
        self.smali_dir = Config("apk").get("smali_dir") + apkName

之后就是通过调用工具对apk进行反编译了

def decompileSmali(self):
        """反编译获取Smali 文件"""
        if not os.path.exists(self.smali_dir):
            os.makedirs(self.smali_dir)
        else:
            shutil.rmtree(self.smali_dir)
            os.makedirs(self.smali_dir)
        os.system("apktool d -f " + self.apk_dir + " -o " + self.smali_dir)
        return self.smali_dir

之后我们进行调试一下看看结果(目标apk:cartoonchild.apk)

if __name__ == '__main__':
    decompile = apkDecompile("app_3.0.4_updateA_release")
    decompile.decompileSmali()

稍等一会我们就可以看到控制台及文件目录中已包含相关文件

到这里Smali文件就反编译完成了,是不是特别简单。。。。。

猜你喜欢

转载自blog.csdn.net/qq_33668011/article/details/82801091