APK文件结构:
APK文件其实是zip格式(一种压缩格式),但后缀名被修改为apk。
1, 清单文件:是每个应用都必须定义和包含的,它描述了应用的名字、版本、权限、引用的库文件等等信息(程序全局配置文件)。
2, classes.dex是java源码编译后生成的java字节码文件(首先是java文件通过jdk编译成字节码文件然后经过dex编译成classes.dex)。。
3, res目录存放资源文件,包括图片,字符串等等。
4, META-INF目录下存放的是签名信息,用来保证apk包的完整性和系统的安全(保证里面的资源不能被随意替换)( 如何获取应用程序的签名信息?)。
5,lib目录下的子目录armeabi存放的是一些so文件。
6,assets目录可以存放一些配置文件,这些文件的内容在程序运行过程中可以通过相关的API获得。
7,resources.arsc 编译后的二进制资源文件的索引(apk文件的资源表(索引) 相当于R文件)。
——————————————————————————————————————————>
apk反编译:使用apk反编译工具将apk中的源文件和资源反编译出来,将得到的资源文件进行处理,已达到个性化定制、汉化apk等目的。
1.apk后缀名改成zip或rar解压,获取 classes.dex 文件,用dex2jar转换成jar包(注:直接解压出来的资源文件是不能直接打开的,要用第一步的反编译工具,dex2jar.bat文件
目录不要有中文)。
2使用apktool 反编译工具.
反编译:机器码(汇编语言) → 高级编程语言。
计算机软件反向工程(Reverse engineering)也称为计算机软件还原工程,是指通过对他人软件的目标程序(比如可执行程序)进行“逆向分析、研究”工作,以推导出他人的软件产品所使用的思路、原理、结构、算法、处理过程、运行方法等设计要素,某些特定情况下可能推导出源代码。反编译作为自己开发软件时的参考,或者直接用于自己的软件产品中。