<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

安卓如何逆向_Dalvik 寄存器,字節碼,指令格式 2

jf_78858299 ? 來源:dust安全隨記 ? 作者:dust ? 2023-01-30 16:25 ? 次閱讀
  1. 數據操作指令
    1. move
      Move vA,vB       將vB寄存器的值賦給vA寄存器,源寄存器與目的寄存器都為4move-wide vA,vB  為4為的寄存器對賦值,源寄存器與目的寄存器都為4Move/from16 vAA,vBBBB     將vBBBB寄存器的值賦予vAA寄存器,源寄存器16位,目的寄存器8move-object vA,vB         出現object即為對象,這里就是為對象賦值,源寄存器和目的寄存器都是4move-object/from16 vAA,vBBBB   為對象賦值,源寄存器為16位,目的寄存器為8move-object/16 vAA,vBBBB       為對象賦值,源寄存器與目的寄存器都為16move-result vAA  將上一個invoke類型的指令操作的單子非都西昂結果賦值給vAA寄存器
      move-result-wide vAA 將上一個invoke類型指令操作的雙字非對象結果賦給vAA寄存
      move-exception vAA 保存運行時發生的異常到vAA寄存器
      
  2. 返回指令
    1. return 
      return-void  表示函數從一個void方法返回,返回值為空
      return vAA   表示函數返回一個32位非對象類型的值,返回寄存器為8位的寄存器vAA
      return-wide vAA 表示函數返回一個64位非對象類型的值,返回寄存器為8位的寄存器vAA
      return-object vAA 返回一個對象類型d值,返回寄存器為8位的寄存器vAA
      
  3. 數據定義指令
    1. const
      數據定義指令用來定義程序中用到的常量,字符串,類等數據
      const/4 vA,#+B  將數值符號擴展位32位后賦給寄存器vAA
      const/16 vAA,#+BBBB  將數值符號擴展位32位后賦給寄存器vAA
      const vAA,#+BBBBBBBB  將數值賦給寄存器vA
      const/high16 vAA,#+BBBB0000  將數值右邊0擴展為32位后賦給寄存器vAA
      const-string vAA,string@BBBB 通過字符串索引構造一個字符串并賦值給寄存器vAA
      const-string/jmbo vAA,string@BBBBBBBB 通過字符串索引(較大)構造一個字符串并賦給寄存器vAA
      const-class vAA,type@BBBB 通過類型索引獲取一個類引用并賦給寄存器vAA
      
  4. 實例操作指令
    1. check-cast vAA,type@BBBB:check-cast 0
      將vAA寄存器中的對象引用轉換成指定的類型
      如果失敗會爆出classcastException異常
      如果類型B指定的是基本類型,對于非基本類型的A來說,運行時會失敗
      
      
      instanmce-of vA,vB
      判斷vB寄存器中的對象引用是否可以轉換成指定的類型
      如果可以vA寄存器賦值為1,否則vA寄存器賦值為0
      
      
      new-instance vAA,type@BBBB 
      構造一個指定類型對象的新實例,并將對象引用賦值給vAA寄存器,類型符type指定的類型不能是數組類
      
  5. 數組操作指令
    數組操作包括獲取數組長度,新建數組,數組賦值,數組元素取值與賦值等操作
    array-length vA,vB
    獲取vB寄存器中數組的長度并將值賦給vA寄存器
    數組長度指的是數組的條目個數
    
    
    new -array vA,vB type@CCCC
    構造指定類型(type@CCCC)與大小(vB)的數組,并將值賦給vA寄存器
    filled-new-array {vC,vD,vE} 
    構造指定類型(type@CCCC)與大小(vB)的數組,并指定了參數,并將值賦給vA寄存器
    
  6. 異常指令
    throw vAA 拋出vAA寄存器中指定類型的異常
    
  7. 跳轉指令
    goto:無條件跳轉
    switch:分支跳轉
    packed-switch :有規律跳轉
    if :條件跳轉  if-eq:等于  if-ne:不等于
    
  8. 比較指令
  9. 字段操作指令
    普通字段 => iget 讀---從后往前走 ,iput 寫---從前往后走
    靜態字段 => sget 讀 , sput寫
    
  10. 方法調用指令
invoke-virtual :調用實例的虛方法
invoke-super : 調用實例的父類/基類方法
invoke-direct :調用實例的直接方法
invoke-static :調用實例的靜態方法
invoke-interface: 調用實例的接口方法
  1. 數據轉換指令
opcode vA,vB
數據轉化指令用于將一種類型的數值轉換成另一種類型
vB寄存器放需要轉換的數據,轉換后的結果保存在vA寄存器中
  1. 數據運算指令
add 加
sub 減
mul 乘
div 除
rem 模
andorxor  異或
shl 有符號左移
shr 有符號右移
ushr 無符號右移
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 寄存器
    +關注

    關注

    30

    文章

    5113

    瀏覽量

    118012
  • 數據
    +關注

    關注

    8

    文章

    6522

    瀏覽量

    87732
  • 編譯
    +關注

    關注

    0

    文章

    622

    瀏覽量

    32441
收藏 人收藏

    評論

    相關推薦

    寄存器加載與存儲指令

    本帖最后由 ax918 于 2012-2-21 16:01 編輯 這種指令用于把單一的數傳入或者傳出一個寄存器。支持的數據類型有字(32 位 ) 、半字(16 位)和字節。常用的
    發表于 02-21 15:59

    ARM寄存器的總結

    ARM處理共有37個寄存器: 1) 31個通用寄存器,包括程序計數(PC)。這些寄存器都是32位的;
    發表于 07-19 21:20

    ARM寄存器的總結

    其它狀態和控制信息。每種異常模式都有一個程序狀態保存寄存器SPSR。當異 常出現時,SPSR用于保存CPSR的狀態。 CPSR和SPSR的格式如表所示: 1)條件標志: N,Z,C,V大多數
    發表于 05-28 10:38

    [資料分享]+《Android軟件安全與逆向分析》

    不同的寄存器表示方法——v命名法與p命名法 42  3.2.5  Dalvik字節的類型、方法與字段表示方法 43  3.3  Dalvik
    發表于 09-26 10:53

    ARM寄存器的總結

    狀態保存寄存器SPSR。當異常出現時,SPSR用于保存CPSR的狀態。CPSR和SPSR的格式如表所示:1)條件標志: N,Z,C,V大多數指令可以檢測這些條件
    發表于 04-26 14:33

    ARM寄存器的總結

    禁止位,當前處理模式以及其它狀態和控制信息。每種異常模式都有一個程序狀態保存寄存器SPSR。當異常出現時,SPSR用于保存CPSR的狀態CPSR和SPSR的格式如表所示1)條件標志
    發表于 05-13 11:46

    ARM寄存器的總結

    狀態保存寄存器SPSR。當異常出現時,SPSR用于保存CPSR的狀態。CPSR和SPSR的格式如表所示:1)條件標志: N,Z,C,V大多數指令可以檢測這些條件
    發表于 07-02 09:45

    寄存器與匯編指令

    逆向學習筆記3——寄存器與匯編指令
    發表于 05-07 16:40

    寄存器指令詳解

    00110 000 00101 0110011即為:0x007302b3整數寄存器寄存器指令(R類)RV32I定義了幾種算術R類操作指令,所有操作都是讀取rs1和rs
    發表于 03-01 07:28

    ARM指令分類與匯編指令格式簡析

    的條件編碼, 如EQ,NE: 指令操作符編碼, 如LDR, STR{S}: 決定指令的執行是否影響CPRS的值: 包含第一個源操作數的寄存器編碼: 目標寄存器編碼: 第二個源操作數AR
    發表于 04-14 09:25

    寄存器尋址方式

    寄存器尋址方式   寄存器尋址是對由指令選定的工作寄存器(R0--R7)進行讀/寫,由指令操作碼
    發表于 03-14 15:29 ?2586次閱讀

    寄存器的Load/Store指令詳解

    (Single Register) 這些指令在ARM寄存器和存儲器之間提供更靈活的單數據項傳送方式。數據項可以是字節、16位半字或32位字。 ② 多寄存器Load/Store內存訪問
    發表于 10-18 15:57 ?1次下載
    單<b class='flag-5'>寄存器</b>的Load/Store<b class='flag-5'>指令</b>詳解

    淺談單寄存器數據傳送指令

    11.5 單寄存器數據傳送指令 Thumb指令集支持寄存器的裝載和存儲,即LDR和STR指令。8和類型的Load/Store
    發表于 10-19 10:04 ?1次下載

    逆向基礎之寄存器和內存詳解

    本文主要介紹的是逆向基礎的寄存器和內存方面的信息,首先介紹的是逆向主要是做什么的,其次對編程和機器架構做了個簡介,最后詳細的闡述了逆向基礎的寄存器
    發表于 04-26 09:52 ?2790次閱讀

    安卓如何逆向_Dalvik 寄存器,字節碼,指令格式 1

    0x01 dalvik寄存器 ``` 32位,所有類型, ?
    的頭像 發表于 01-30 16:24 ?348次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>