首页 > 代码库 > Chapter3——进入Android Dalvik虚拟机(二)

Chapter3——进入Android Dalvik虚拟机(二)

Dalvik汇编语言基础

Dalvik虚拟机为自己设计了一套指令集,并制定了自己的指令格式调用规范

位描述约定如下:

  • 每16位的字采用空格分隔开来
  • 每个字母表示4位,每个字母按顺序从高字节开始,排列到低字节。每4位之间可能使用竖线「|」表示不同的内容。
  • 顺序采用A~Z的单个大写字母作为一个4位操作码,op表示一个8位的操作码。
  • 「∅」来表示这字段所有位为0值。

以「A|G|op BBBB F|E|D|C」为例,

指令中间两个空格每个分开的部分大小为16位;

第一个16位A|G|op,高8位由A和G组成,低字节由操作码op组成;

第二个16位BBBB表示一个16位的偏移值;

第三个16位由F、E、D、C四个字节组成,在这里他们表示寄存器参数

 

单纯通过位标识还无法确定一条指令,必须通过指令格式标识来指定指令的格式编码。在书的38页,这里不摘录了。

 

DEX文件反汇编工具

目前主流的DEX可执行文件反汇编工具有BakSmali何Dedexer。其中BakSmali还支持打包反汇编代码重新生成DEX文件,使用更广泛。