Android逆向基礎----Dalvik位元組碼

來源:互聯網
上載者:User

標籤:描述符   []   padding   tab   返回   對象引用   from   roi   資料操作   

參考此微博,更多詳細內容可以到這裡查看

http://blog.csdn.net/dd864140130/article/details/52076515

 

Dalvik位元組碼

1、寄存器位32位,64位元據(double)用兩個相鄰的32寄存器表示。

2、兩種類型:基本類型和參考型別(對象和數組)

 

全限定名是什麼?

以String為例,其完整名稱是Java.lang.String,那麼其全限定名就是java/lang/String;,即java.lang.String的”.”用”/”代替,並在末尾添加分號”;”做結束符.

 

Dalvik位元組碼類型描述元

 

V     void               只能用於傳回值類型

Z     boolean         邏輯值,返回真(true)假(false)

B     byte              位元組型

S     short             短整型

C     char              字元型

I      int                 整數型

J      long(64位)長整型

F     float              浮點型

D     double          雙精確度浮點

L     物件類型,java類

java->package.name.ObjectName;

Davik->Lpackage/name/ObjectName

[      數群組類型

java->int[]     int[][]      三維數組

Davik->[I;      [[I;   [[[I;

 

欄位的描述

 

Davik中對欄位的描述分為兩種,對基本類型欄位的描述和對參考型別的描述,但兩者的描述格式一樣:

物件類型描述符->欄位名:類型描述元;

比如com.sbbic.Test類中存在String類型的name欄位及int類型的age欄位,那麼其描述為:

 

Lcom/sbbic/Test;->name:Ljava/lang/String;

Lcom/sbbic/test;->age:I

 

Dalvik指令集

資料定義指令      const

const-賦值方法 寄存器名 附加內容

指令

描述

const/4 vA,#+B

將數值符號擴充為32後賦值給寄存器vA

const-wide/16 vAA,#+BBBB

將數值符號擴充為64位後賦值個寄存器對vAA

const-string vAA,[email protected]

通過字串索引高走字串賦值給寄存器vAA

const-class vAA,[email protected]

通過類型索引擷取一個類的引用賦值給寄存器vAA

資料操作指令      move

指令

描述

move vA,vB

將vB寄存器的值賦值給vA寄存器,vA和vB寄存器都是4位

move/from16 vAA,VBBBB

將vBBBB寄存器(16位)的值賦值給vAA寄存器(7位),from16表示源寄存器vBBBB是16位的

move/16 vAAAA,vBBBB

將寄存器vBBBB的值賦值給vAAAA寄存器,16表示源寄存器vBBBB和目標寄存器vAAAA都是16位

move-object vA,vB

將vB寄存器中的對象引用賦值給vA寄存器,vA寄存器和vB寄存器都是4位

move-result vAA

將上一個invoke指令(方法調用)操作的單字(32位)非對象結果賦值給vAA寄存器

move-result-wide vAA

將上一個invoke指令操作的雙字(64位)非對象結果賦值給vAA寄存器

mvoe-result-object vAA

將上一個invoke指令操作的對象結果賦值給vAA寄存器

move-exception vAA

儲存上一個運行時發生的異常到vAA寄存器

 

3.跳轉指令

if-eq

等於則跳轉

==

if-ne

不等於則跳轉

!=

if-lt

小於則跳轉

<

if-ge

大於或等於則跳轉

>=

if-gt

大於則跳轉

> 

if-le

小於或等於則跳轉

<=

goto

無條件跳轉

 

switch

分支跳轉

 

 

返回0 實現跳轉

 

Android逆向基礎----Dalvik位元組碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.