android逆向学习,笔记(二)

Dalvik指令与APK文件结构

一、Dalvik指令集

1.v命名与p命名寄存器

说明:
eg:
v1,,v2,v3…
p1,p2,p3…

2.Dalvik字节码类型描述符。

字节符 类型 说明
V void 只能用于返回值类型
Z boolean 变量值只能是真(ture)
B byte 字节型
S short 短整型
C char 字符型
I int 整数型
J long 长整型
F float 浮点型
D double(64位) 双精度浮点型
L java类类型 package.name.ObjectName
[ 数组类型 [I 表示一个整型以为数据,等于java中的int[],数组最大为255个

3.跳转指令

指令 说明 符号
if-eq 等于则跳转 ==
if-ne 不等于则跳转 !=
if-lt 小于则跳转

4.方法调用指令

invoke

5.数据定义指令

const const-string
eg:
const-string v1,”LoveZhuzhu”

其实相当于赋值语句。

6.操作指令

move

eg:
move v1,v2, 把v2的数据移到v1里。
相当于v1=v2;

7.简单代码分析

.method
    invoke-virtual{v1},Ljava/lang/String;->length()I  //取v1长度为5
    move-result v2 //将v1长度都结果赋值给v2 v2=5
    const/4 v3,0x1 //v3=1
    if-eq v2,v3, :cond_0
    :code_1
    ...
    ...
    ...
    ...
    :cnd_0
    return-void
.end method

二 APK文件结构

android逆向学习,笔记(二)_第1张图片

文件名 说明
AndroidMainifest.xml 配置清单
assets 资源
lib 动态库 so
res 资源库
smail classes.dex
META-INF 签名
resources.arsc 语言包

你可能感兴趣的:(android逆向学习,笔记(二))