Android 反编译(四)了解.smail方法
来源:互联网 发布:python for line in f 编辑:程序博客网 时间:2024/06/06 08:58
看一个.smail的方法
.registers 使用这个指令指定方法中寄存器的总数
.method private testIf(I)V .locals 3 .param p1, "a" # I .prologue .line 34 const/4 v0, 0x5 if-ne p1, v0, :cond_0 .line 35 sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream; const-string v1, "a\u7684\u503c\u4e3a 5" invoke-virtual {v0, v1}, Ljava/io/PrintStream;->print(Ljava/lang/String;)V .line 39 :goto_0 return-void .line 37 :cond_0 sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream; new-instance v1, Ljava/lang/StringBuilder; invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V const-string v2, "a\u7684\u503c\u4e3a ? :" invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v1 invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object v1 invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v1 invoke-virtual {v0, v1}, Ljava/io/PrintStream;->print(Ljava/lang/String;)V goto :goto_0 .end method
看着一大堆有点晕,其实这就是一个if判断
private void testIf(int a){ if (a == 5){ System.out.print("a的值为 5"); }else { System.out.print("a的值为 ? :"+a); } }
下面自己总结了一下怎么看.smail的方法,我们看第一行.method private testIf(I)V,其中 .method就是开始一个方法,private是修饰类型(比如:public等),testIf就是方法名称,(I)括号里是参数 I 是int类型。可以看.smail文件之 JavaBean类
.locals 使用这个指定表明方法中非参寄存器的总数,放在方法的第一行
寄存器采用v和p来命名
v表示本地寄存器,p表示参数寄存器,关系如下
如果一个方法有两个本地变量,有三个参数
v0 第一个本地寄存器 v1 第二个本地寄存器 v2 p0 (this) v3 p1 第一个参数 v4 p2 第二个参数 v5 p3 第三个参数
.registers 使用这个指令指定方法中寄存器的总数
line 就不用说了,就是对应的行数
move v0, v3 #把v3寄存器的值移动到寄存器v0上.
const v0, 0x1 #把值0x1赋值到寄存器v0上。
详细的需要去了解以下汇编,如果懂汇编就爽了。嘿嘿结束就是.end method
阅读全文
0 0
- Android 反编译(四)了解.smail方法
- Android 反编译之smail
- Android 反编译 smail语法基础
- Android 反编译(三)java文件 和 .smail文件判断和循环比较
- android 反编译apk ,修改apk ,smail,插桩
- Android 反编译(二) .smail文件之 JavaBean类
- 【移动安全】Android App Smail代码动态跟踪调试方法
- Android 静态分析smail
- APK反编译之一:smail代码的基础
- Android逆向学习日记(一) 初学smail
- Android开发,Kotlin的了解与学习(四)-----基本语法之方法、操作符
- Android自定义View的实现方法,深入了解View(四)
- Android 反编译方法 防止反编译方法
- Android】【转】Smail的寄存器
- Android smail变量对照表
- Android工程反编译及方法(一)
- android反编译拿来主义方法
- Android反编译拿来主义方法
- 34岁!100天!学会Java编程(Day49-Day52)—OOP设计模式
- linux查看文件行号
- C语言作业(4)
- 机器学习理论 || GMM模型
- Mysql ERROR 1040 (HY000): Too many connections
- Android 反编译(四)了解.smail方法
- label设置字数超出不换行
- duilib的Combo控件滚动条不显示的问题
- .net 解析json格式数据
- Mac下采用zsh代替bash
- 关于支付宝商户(蚂蚁金服)api调用
- 40个js小技巧:屏蔽鼠标右键、取消选取、防止复制、粘贴、转换地址栏图标
- 资源、角色、用户、岗位的关系(工作中用到的)
- 微信小程序—两种方式实现上拉加载与下拉刷新