apk是android Package的缩写,即Android安装包。apk是类似Symbian Sis或Sisx的文件格式。通过将APK文件直接传到Android模拟器或Android手机中执行即可安装。
1.apk文件目录
asset 资源文件
lib ARM X86 so
MET-TNF 签名文件夹
CERT.RSA
CERT.SF
MANIFEST.MF
res
图片 - drawable
布局 - layout
菜单 - menu
resources.arsc资源
classes.dex->可执行程序
androidManifest.xml 配置文件
2.反编译apk
apk文件=>压缩包
.java=>.class=>.dex 正向编译
.dex=>.smali=>.class 反向编译 apktool dex2jar
AndroidManifest.xml
classes.dex
resources.arsc
3.编程语言
java代码 => smali汇编
c/c++ => ARM汇编
4.虚拟机
java虚拟机
java字节码
基于栈架构
dalvik虚拟机(jit机制)
Android 5.0以下
dalvik字节码
dalvik可执行文件体积更小
基于寄存器架构
art虚拟机
Android 5.0版本以上
5.dalvik汇编语言分析
dalvik指令格式
dex文件反汇编工具
smali.jar\ddx.jar
了解dalvik寄存器
dalvik中的寄存器都是32位
寄存器之v命名法与p命名法
局部变量寄存器
参数寄存器
dalvik字节码
类型
smali=>java
v void
z boolean
B byte
S short
C char
I int
j long
F float
D double
L java类类型
[ 数组类型
字段
Lpackage/name/ObjectName;->FieldName:Ljava/lang/String;
方法
Lpackage/name/ObjectName;->MethodName(III)Z
6.App逆向分析
静态分析
词法分析/语法分析
反汇编工具
dalvik字节码/IDA Pro=>.dex=>smali
.dex(dex2jar)=>.jar=>jd_gui
动态调试
dalvik虚拟机
jdwp(调试有线协议)=> jdb/intellij/jswat
ddm调试监视器
ddms(dalvik调试监视器服务)
ro.debuggable = 1(adb shell getprop ro.debuggable)
android.debuggable="true"
logcat(调试信息)/ method profiling(跟踪程序的执行流程)
使用logcat查看调试信息
调试信息/消息过滤器