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

图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软件安全与逆向分析》,作者:丰生强

Apktool(2)——使用前必须知道的apk知识的更多相关文章

  1. (转)【推荐】初级.NET程序员,你必须知道的EF知识和经验

    转自:http://www.cnblogs.com/zhaopei/p/5721789.html [推荐]初级.NET程序员,你必须知道的EF知识和经验   阅读目录   [本文已下咒.先顶后看,会涨 ...

  2. 《jQuery风暴》第2章 必须知道的JavaScript知识

    第2章 必须知道的JavaScript知识 JavaScript是jQuery应用的基础,掌握JavaScript这门语言是使用jQuery的基础条件.本章不会全面细致的讲解JavaScript的全部 ...

  3. 面试前必须知道的MySQL命令【explain】

    前言 只有光头才能变强 刷面试题的时候,不知道你们有没有见过MySQL这两个命令:explain和profile(反正我就见过了).. 之前虽然知道这两个命令大概什么意思,但一直没有去做笔记.今天发现 ...

  4. 你必须知道的EF知识和经验

    注意:以下内容如果没有特别申明,默认使用的EF6.0版本,code first模式. 推荐MiniProfiler插件 工欲善其事,必先利其器. 我们使用EF和在很大程度提高了开发速度,不过随之带来的 ...

  5. 【转】你必须知道的EF知识和经验

    注意:以下内容如果没有特别申明,默认使用的EF6.0版本,code first模式. 推荐MiniProfiler插件 工欲善其事,必先利其器. 我们使用EF和在很大程度提高了开发速度,不过随之带来的 ...

  6. 【推荐】初级.NET程序员,你必须知道的EF知识和经验

    阅读目录   推荐MiniProfiler插件 数据准备 foreach循环的陷进 AutoMapper工具 联表查询统计 性能提升之AsNonUnicode 性能提升之AsNoTracking 多字 ...

  7. 【推荐】你必须知道的EF知识和经验

    阅读目录   推荐MiniProfiler插件 数据准备 foreach循环的陷进 AutoMapper工具 联表查询统计 性能提升之AsNonUnicode 性能提升之AsNoTracking 多字 ...

  8. 你必须知道的EF知识和经验(转)

    注意:以下内容如果没有特别申明,默认使用的EF6.0版本,code first模式. 推荐MiniProfiler插件 工欲善其事,必先利其器. 我们使用EF和在很大程度提高了开发速度,不过随之带来的 ...

  9. ASP.NET 你必须知道的EF知识和经验

    原文:http://www.cnblogs.com/zhaopei/p/5721789.html

随机推荐

  1. Spring Boot到底是怎么运行的,你知道吗?

    导读 Spring Boot方式的项目开发已经逐步成为Java应用开发领域的主流框架,它不仅可以方便地创建生产级的Spring应用程序,还能轻松地通过一些注解配置与目前比较流行的微服务框架Spring ...

  2. Java之单元测试工具(Junit)

    Junit是Java单元测试框架,一般Eclipse里面会集成这个Junit4测试工具 既然是测试工具,虽然开发用得比较多,但作为测试人员也需要具备会Junit测试的思想,况且技多不压身 这里简单介绍 ...

  3. springBoot(7)---整合Mybaties增删改查

    整合Mybaties增删改查 1.填写pom.xml <!-- mybatis依赖jar包 --> <dependency> <groupId>org.mybati ...

  4. Jenkins系列之六——拉取指定branch或tag

    一.安装插件 Build With Parameters Git Paramet 系统管理——>管理插件——>可选插件——>右上角过滤框中输入上面两个插件的名字——>直接安装 ...

  5. Kubernetes 服务入口管理与 Nginx Ingress Controller

    Kubernetes 具有强大的副本,动态扩容等特性,每一次 Pod 的变化 IP 地址都会发生变化,所以 Kubernetes 引进了 Service 的概念.Kubernetes 中使用 Serv ...

  6. Ioc及Bean容器(三)

    专题一 IoC 接口及面向接口编程 什么是 IoC Spring 的Bean配置 Bean 的初始化 Spring 的常用注入方式 接口 用于沟通的中介物的抽象化 实体把自己提供给外界的一种抽象化说明 ...

  7. 一个前端开发者换电脑的过程(node & 淘宝镜像篇)

    当然,在我们安装了git和vscode之后,我们这个项目,在本地仍然是跑不起来的对吗?这句“npm run dev”就提示着我们需要有一个npm,npm是一个很强大的包管理工具,就像是安卓的应用商店, ...

  8. MyBatis源码解析(五)——DataSource数据源模块之非池型数据源

    原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/6675633.html 1 回顾 上一篇中我解说了数据源接口DataSource与数据源工厂 ...

  9. npm install 失败

    总结列表: 1. There is already an open DataReader associated with this Connection which must be closed fi ...

  10. 第一册:lesson sixty one.

    原文: A bad cold. A:Where is Jim? B:He is in bed. A:What's the matter with him? B:He fells ill. A:He l ...