Android软件安全与逆向分析入门-贰-熟悉Dalvik字节码

本文介绍了Dalvik字节码的概念、指令集及其在Android软件逆向分析中的应用,通过手写Dalvik版HelloWorld示例,深入浅出地解释了数据操作、数据定义、实例操作、数组操作、异常处理、跳转和比较指令等核心内容。

Dalvik字节码即Smali(索马里?哈哈)汇编.不明白的地方看上一节:
Android软件安全与逆向分析入门-壹-初识反编译

下面是浓缩的精华:

Dalvik指令集13种指令,比x86汇编好学的多.另外Android4.0之前没有两个字节的指令,新增的两个字节长度的指令一般是用来指向更大数据或者操作范围的.

但是你想学会它,就得在了解它后去用它,《Android软件安全与逆向分析》P52.有例子.手写Dalvik版HelloWorld.
以下大部分是主命令,主命令前后为修饰命令.

  1. 数据操作指令:
    move
  2. 返回:
    return
  3. 数据定义指令:
    const
  4. 锁指令:
    monitor-enter vAA #为指定的对象获取锁
    monitor-exit vAA #释放指定的对象的锁
  5. 实例操作指令:
    类型转换,检查及新建等.
  6. 数组操作指令:
    获取数组长度,新建数组,数组赋值,数组元素取值与赋值.
  7. 异常指令:
    throw vAA #寄存器中指定类型的异常
  8. 跳转指令:
    goto
    switch
    if-test #两个寄存器比较
    if-testz #和零比较
  9. 比较指令:
    cmp
  10. 字段操作指令:
    对象实例的字段进行读写操作.
  11. 方法调用指令:
    invoke 调用类实例的方法.
    实例方法类型有:
    • 虚方法
    • 父类方法
    • 直接方法
    • 静态方法
  12. 数据转换指令:
    见名知意.
  13. 数据运算指令:
    ……

好的.今天就简单介绍到这里.咱们下节见.
统计

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值