Smali

作者: 和尚无花 | 来源:发表于2020-07-19 22:31 被阅读0次


基础

基本类型:取首字母大写(特殊的:boolean  Z;long J)
Object类型:LPackageName/ObjectName;(必须有这个分号,在cocos中调用android方法时也是用分号隔开的)
数组:[type-name
方法:func-name(param1param2param3……)return-type

备忘

smali代码展示格式:行号+表达式

内部内:class$class,用$连接内部类
WMWActivity$MessageHandler

->表示所属关系。class;->field:type

smali是基于寄存器的,所有操作需要经过寄存器。
本地寄存器表示:v0,v1……。
参数寄存器表示:p0,p1……。在static函数中p0表示第一个参数,在非static函数中,p0表示field所在类的实例(this)。

指令集

格式:操作指令-操作类型 本地寄存器,参数寄存器……  
操作指令:iget表示获取instance fields;sget表示获取static fields;aget表示获取数组。put和get一样用法,作用是赋值
操作类型:-boolean,-object。不带这两个则表示操作类型是基本数据类型。

方法调用

1,invoke-调用方式{v0,v1} 2,invoke-调用方式/range{v0 .. v5}(参数多时使用)
调用方式:-direct,-virtual,-static,-super,-interface。

参考资料

Smali介绍:https://blog.csdn.net/lpohvbe/article/details/7981386
指令集:https://blog.csdn.net/u012184539/article/details/82720733
GitHub smali:https://github.com/JesusFreke/smali





相关文章

网友评论

      本文标题:Smali

      本文链接:https://www.haomeiwen.com/subject/hxyvqktx.html