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