安卓逆向--Smali语法基础(一)


博文建议有安卓开发基础的同学阅读。

Smali是什么?

Smali是安卓系统里的Java虚拟机(Dalvik)所使用的一种.dex格式文件的汇编器,而Baksmali是反汇编器。其语法是一种宽松式的Jasmin/dedexer语法。

Smali语言其实就是一种面向Dalvik的汇编语言(汇编语言是一种用于电子计算机、微处理器、微控制器,或其他可编程器件的低级语言。在不同的设备中,汇编语言对应着不同的机器语言指令集。使用汇编语言编写的源代码,然后通过相应的汇编程序将它们转换成可执行的机器代码。这一过程被称为汇编过程。),我们用smali语言写的代码通过汇编器就转换成Dalvik可以执行的dex文件。

对应的有两个工具,smali.jar将Smali文件转换为dex文件,baksmali.jar则是将dex文件转换为smali文件。apktool能反编译出smali文件就是因为它里面用了baksmali工具。
Smali语法

 

简写 含义
B byte
C char
D double (64 bits)
F float
I int
J long (64 bits)
S short
V void 只能用于返回值类型
Z boolean

 

对象类型

表现形式:L对象所在包位置/对象名称;

一般形式:Ljava/lang/String;

数组类型

表现形式:[数组内容

一般形式:[Ljava/lang/String

方法

表现形式:L表示对象;->i(L第一个参数;L第二个参数;)I

一般形式:Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I

字段

表现形式:L对象类型;->字段名称:L字段类型;

一般形式:ff = "aa"; 转换后是 Lcom/example/reforceapk/MyLog;->ff:Ljava/lang/String


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM