APK终端安全分析法
最后更新于
最后更新于
被编译的代码文件(.dex文件)
资源文件(resources)
assets
证书(certificates)
清单文件(manifest file)
lib 目录包含了指定处理器的已编译代码,是特定于处理器的软件层,可分为如下目录
步骤:
解压APK文件并找到classes.dex
apktool 反编译APK文件,命令如下: java -jar apktool.jar d APKfile -o outdir
smail目录中的文件即为反编译出的代码
dex2jar反编译classes.dex文件
可通过IDA翻译出伪代码分析程序的逻辑
文件
说明
classes.dex
DEX是Dalvik EXecutable的简称,classes.dex是将程序中的类和逻辑代码编译成Dalvik虚拟机可以理解的dex文件格式,由Dalvik虚拟机加载并运行,通常为APK的主要代码文件
resources.arsc
这个文件包含了一些预编译的资源文件,如二进制的XML文档等
META-INF目录
在编译生成一个APK包时会对所有要打包的文件做一个SHA-1的校验计算,并把计算结果放在META-INF目录下。 在Android平台上安装APK包时,安装器会对包里的文件进行校验,如果校验结果与META-INF目录下的内容不一致,系统就不会安装这个APK
res目录
res目录主要包含了一些未被编译入resources.arsc的资源文件
assets目录
assets 目录是一个含有应用程序资源的目录,但是在打包 APK 时不会对 assets目录下的文件做任何处理,并需要使用AssetManager来访问
AndroidManifest.xml
每个应用的根目录中都必须包含一个 AndroidManifest.xml 文件,这个清单文件为Android系统提供有关应用的基本信息,例如,应用的名字、版本、所需权限、注册的服务、引用的库文件等,系统必须获得这些信息才能运行应用代码。 该文件在打包时会被编译成二进制XML格式,可以使用工具反编译回XML文本格式。
目录
说明
Armeabi
包含所有基于ARM处理器的编译后代码
armeabi-v7a
包含所有基于ARMv7及更高版本的处理器的编译后代码
arm64-v8a
包含所有基于ARMv8、ARM64及更高版本的处理器的编译后代码
x86
包含所有基于x86处理器的编译后代码
x86_64
包含所有基于x86_64处理器的编译后代码
Mips
包含所有基于MIPS处理器的编译后代码