java smali代码 解读_Android逆向之动态分析smali篇

本文介绍了Android逆向过程中动态分析smali代码的方法,包括smali语言的基础语法、动态调试技巧和使用smalidea插件进行调试的步骤。通过实例展示了smali代码的逻辑和调试过程。
摘要由CSDN通过智能技术生成

本期斗哥将带来Anoid逆向之动态分析smali篇。

0X01 smali语言简述

smali语言是Dalvik的反汇编语言因Android虚拟机Dalvik不是执行java虚拟机JVM编译后生成的class文件,而是执行再重新整合打包后生成的dex文件,dex文件反编译之后就是smali代码。

接触过Android逆向的小伙伴都会遇到smali语言,简单的逆向过程 [apk -> smali -> java]。有的逆向工具无法将smali语言反编译成java源码,只逆向到smali语言这层。或者反编译成java源码无法运行(smali宽松型语言)。

markdown-img-paste-2018110110172689.png

0X02 smali语言语法

####原始数据类型://smali----java

B----byte

C----char

D----double

F----float

I----int

J----long

S----short

V----void

Z----boolean

[XXX-----array

Lxxx/yyy----object

####基础语法:语法:

.field  定义变量

.method  方法

.parameter  方法参数

.prologue  方法开始

.line 12  此方法位于第12行

invoke-super  调用父函数

const/high16 v0, 0x7fo3  把0x7fo3赋值给v0

invoke-direct  调用函数

return-void  函数返回void

.end method  函数结束

new-instance  创建实例

iput-object  对象赋值

iget-object  调用对象

invoke-static  调用静态函数

####smali跳转语句:"if-eq vA, vB, :cond_**" 如果vA等于vB则跳转到:cond_**

"if-ne vA, vB, :cond_**" 如果vA不等于vB则跳转到:cond_**

"if-lt vA, vB, :cond_**" 如果vA小于vB则跳转到:cond_**

"if-ge vA, vB, :cond_**" 如果vA大于等于vB则跳转到:cond_**

"if-gt vA, vB, :cond_**" 如果vA大于vB则跳转到:cond_**

//le 小于等于

//eqz 等于0

//nez 不等于0

//ltz 小于0

//gez 大于等于0

//g

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值