Dalvik指令与APK文件结构

2018-01-30 05:15:31 -0500

一、Dalvik指令集

1.v命名与p命名寄存器
v1 v2 v3-------
p1 p2 p3-------


2.Daalvik字节码类型描述符
V void 只能用于返回值类型
Z boolean 变量值只能是 真(true) 或 假(false)
B byte 字节型
S short 短整型
C char 字符型
I int 整数型
J long(64位) 长整型
F float 浮点型
D double(64位) 双精度浮点型
L java类类型 package.name.ObjectName Lpackage/name/ObjectName;
[ 数组类型 [I表示一个整型一维数组,等于java中的int[]。注意多位数数组的维数最大为255个。[[I=int[][] [[[I=int[][][]
3.跳转指令
if-eq 等于则跳转 ==
if-ne 不等于则跳转 !=
if-lt 小于则跳转 <
if-ge 大于或等于则跳转 >=
if-gt 大于则跳转 >
if-le 小于或等于则跳转 <=
goto 无条件跳转
switch 分支跳转

返回0 实现跳转


Pswitch_0
。。。
。。。
。。。
Pswitch_1
。。。
。。。
。。。
Pswitch_2
。。。
。。。
。。。

4.方法调用指令 invoke

5.数据定义指令 const const-string

const-string v1,“youren”

6.操作指令 move

move v1,v2,

=======================================================
.method
invoke-virtual {v1}, Ljava/lang/String;->length()I 取V1长度 12345 =5

move-result v2 将v1长度结果赋值给v2 v2=5

const/4 v3, 0x1 v3=1
goto :cond_1
if-ne v2, v3, :cond_0

:cond_1
...
...
...
...
...

:cond_0
return-void
.end method
============================================================
二、APK文件结构:

AndroidManifest.xml -配置清单
apktool.yml - 重新打包必须文件
assets - 资源
lib - native 动态库 so
res - 资源库
smali - classes.dex
META-INF -签名
resources.arsc- 语言包
«Newer      Older»
Comment:
Name:

Back to home

Subscribe | Register | Login | N