1.dalvik寄存器:32位,所有类型,<=32 一个寄存器 64:使用两个相邻寄存器
2.寄存器的命名法:v :局部变量寄存器 v0-vn 参数寄存器 vn-vn+m
p:参数寄存器p0 -pn 变量寄存器 v0-vn
第一种:
第二种:
3.dex文件反汇编工具
.java编译成.class在编译成.dex 最后反编译得到samli文件
.java →.class → .dex → smali
dx.jar: .class打包.dex
dx --dex --output=Decrypt.dex com/yijinda/demo/Decrypt.class
Baksmali.jar: . dex反编译成smali
java -jar baksmali.jar -o smali_out/ classes.dex
Samli.jar : .smali打包成.dex
java -jar smali.jar smali_out/ -o classes.dex
4.dalvik字节码类型
Dalvik → java
B |
byte |
C |
char |
S |
short |
I |
int |
J |
long |
F |
float |
D |
double |
Z |
boolean |
V |
void |
L |
java类类型 |
[ |
数组类型 |
5.字段
Lpackage/name/ObjectName;->FieldName:Ljava/lang/String;
字段格式:类型(包名+类名)->字段名称:字段类型
6.方法
Lpackage/name/ObjectName;->MethodName (III) Z
(III) Z:这部分表示的是方法的签名信息
总结:
- 寄存器
- 寄存器命名法
- Dex文件反汇编工具
- Dalvik字节码类型
- 字段
- 方法