整理Dalvik指令 和 APK文件结构

来源:互联网 发布:战锤狂鲨淘宝上一百多 编辑:程序博客网 时间:2024/05/01 19:47

 看了个学习视频,整理了下Dalvik指令 备忘:

一、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- 语言包

0 0
原创粉丝点击