0x01 dalvik寄存器
32位,所有類型, <=32一個(gè)寄存器
64位:使用兩個(gè)相鄰寄存器
0x02 寄存器的命名法:
v:局部變量寄存器 v0-vn 參數(shù)寄存器 vn-vn+m
p:參數(shù)寄存器p0 -pn 變量寄存器 v0-vn
0x03 dex文件反匯編工具
.java編譯成.class在編譯成.dex 最后反編譯得到samli文件
.java -->.class -->.dex -->samli
dx.jar ----- .class打包.dex
dx --dex --output=Decrypt.dex com/xxx/xxx/Decrypt.class
Baksamli.jar------- .dex反編譯成 samli
java -jar baksmali.jar -o smali_out/class.dex
Samli.jar-----.smali打包成.dex
java -jar smali.jar smali_out/ -o classes.dex
0x04 dalvik字節(jié)碼類型
Dalvik | java |
---|---|
B | byte |
C | char |
S | short |
I | int |
J | long |
f | float |
D | double |
Z | boolean |
V | void |
L | java類類型 |
[ | 數(shù)組類型 |
0x05 字段
表示的是成員變量
字段格式: 類型(包名/類名) ->字段名稱:字段類型
Lpackage/name/ObjectName;->FieldName:Ljava/lang/String;
相當(dāng)于
Package com.yjh
Class ObjectName{
String FieldName;
}
0x05 方法
字段格式: 類型(包名/類名) ->方法名方法的簽名信息
Lpackage/name/ObjectName;->MethodName(III)Z
(III)Z:這部分表示方法的簽名信息
相當(dāng)于
Package com.yjh
Class ObjectName{
public boolean MethodName(int a,int b ,int c){
}
}
0x06 dalvik指令格式
基礎(chǔ)字節(jié)碼-名稱后綴/字節(jié)后綴 目的寄存器 源寄存器
名稱后綴是wide,表示數(shù)據(jù)寬度為64位
字節(jié)碼后綴是from16,表示源寄存器為16位
move-wide/from16 vAA,vBBBB
move 為基礎(chǔ)字節(jié)碼,即opcode
wide 為名稱后綴,標(biāo)識(shí)指令操作的數(shù)據(jù)寬度為64位
from16 為字節(jié)后綴,標(biāo)識(shí)源為一個(gè)16位的寄存器引用變量
VAA 為目的寄存器,它始終在源寄存器簽名,取值范圍為v0-v255
VBBBB 為源寄存器,取值范圍v0-65535
Dalvik指令集中大多數(shù)指令用到了寄存器作為目的操作數(shù)活源操作數(shù),其中
A/B/C/D/E/F/G/H 代表一個(gè)四位的數(shù)值,
AA/BB/.../HH 代表一個(gè)8位的數(shù)值,
AAAA/BBBB/.../HHHH 代表一個(gè)16位的數(shù)值
0x06 dalvik指令
- 空操作指令
nop
空操作指令的助記符為nop。它的值為00,通常nop指令被用來做對(duì)齊碼使用,無實(shí)際操作
-
寄存器
+關(guān)注
關(guān)注
31文章
5433瀏覽量
124338 -
編譯
+關(guān)注
關(guān)注
0文章
679瀏覽量
33957 -
安卓
+關(guān)注
關(guān)注
5文章
2151瀏覽量
58662
發(fā)布評(píng)論請(qǐng)先 登錄
[資料分享]+《Android軟件安全與逆向分析》
多寄存器Load/Store內(nèi)存訪問指令
單寄存器的Load/Store指令詳解

Thumb指令集之多寄存器數(shù)據(jù)傳送指令解析

淺談單寄存器數(shù)據(jù)傳送指令
指令指針寄存器是什么_作用有哪些

指令指針寄存器和指針寄存器差異性在哪兒

評(píng)論