zoukankan      html  css  js  c++  java
  • Apktool(2)——使用前必须知道的apk知识

    这里拿testapp.apk为例,如下图所示,左图为直接解压apk得到的文件,右图为apktool反编译得到的文件(反编译的使用在下一篇重点介绍)

    imageimage

    图1 解压apk和反编译apk得到的文件目录对比

    一.直接解压apk

    将apk文件当做zip文件,可用winrar或好压之类工具直接打开。

    AndroidManifest.xml是每一个应用必须定义和包含的,它描述了应用的名字、版本、权限、引用的库文件等信息。

    META-INF目录下存放的是签名信息,用来保证apk包的完整性和系统的安全。在eclipse编译生成一个apk包时,会对所有要打包的文件做一个校验计算,并把计算结果放在META-INF目录下。同样在Android平台安装apk时,应用管理器会对按照同样的算法对包里的文件做校验,如果校验结果与META-INF下的内容不一致,系统就不会安装这个apk。这就保证了apk包里的文件不能被随意替换。

    classes.dex是java源码编译生成的java字节码文件。

    res目录存放资源文件。

    resource.arsc是编译后的二进制资源文件。

    二.反编译apk

    smali目录下存放了程序所有反汇编代码。

    res目录则是程序中所有的资源文件,这些目录的子目录和文件与开发时的源码目录结构是一致的。跟直接解压apk得到的文件并不完全相同,该目录还包含了加密的resource.arsc被反编译出来的内容。

    参考文献:

    1.Android篡改apk文件的可行性分析:http://blog.csdn.net/zengyangtech/article/details/5735071

    2.《Android软件安全与逆向分析》,作者:丰生强

  • 相关阅读:
    Java 类与类之间的调用
    File类中的list()和listFiles()方法
    关于GITLAB若干权限问题
    JAVA 判断一个字符串是不是一个合法的日期格式
    JAVA日期加减运算
    Java读写文件的几种方法
    在Coding.net创建项目开发
    IntelliJ IDEA 创建项目project和module的关系
    对xml文件的简单解析
    Intellij IDEA使用总结
  • 原文地址:https://www.cnblogs.com/mliangchen/p/5084894.html
Copyright © 2011-2022 走看看