android逆向 registers,android逆向学习,今天的任务是为smali文件做注释

[AppleScript] 纯文本查看 复制代码.class public LHello; #定义类名Hello.super Ljava/lang/Object; #定义父类

.source "Hello.java" #源文件名,经过混淆的文件可能逆向得不到这一项

# direct methods

.method public constructor ()V #声明 这是不含参数的一个构造函数,构造器

.registers 1 #寄存器的个数

.prologue #单词是开场白的意思,是代码起始指令

.line 1 #行号

invoke-direct {p0}, Ljava/lang/Object;->()V #构造函数的函数体

return-void

.end method

.method public static main([Ljava/lang/String;)V #这是main函数的声明,V表示返回值是void类型

.registers 5

.prologue

.line 7

new-instance v0, LHello; #新实例化Hello对象

invoke-direct {v0}, LHello;->()V #调用实例的直接对象,我理解为Hello v1 = new Hello();中的new后面的部分

.line 8

sget-object v1, Ljava/lang/System;->out:Ljava/io/PrintStream; #静态字段操作符,out是字段名,LJava/io/PrintStream是字段类型,这里应该是与System.out有关的

const/4 v2, 0x5 #赋值操作

const/4 v3, 0x3

invoke-virtual {v0, v2, v3}, LHello;->foo(II)I #调用虚拟函数foo(int ,int)

move-result v0 #将foo()函数返回的Int只赋给v0

invoke-virtual {v1, v0}, Ljava/io/PrintStream;->println(I)V #调用println()函数

.line 9

return-void #不返回

.end method #main方法结束

# virtual methods

.method public foo(II)I #foo()函数的声明

.registers 5

.prologue

.line 3

add-int v0, p1, p2 #p1+p2的值给v0

sub-int v1, p1, p2 #p1-p2的值给v1

mul-int/2addr v0, v1 #v0xv1的值给v0

return v0 #返回v0

.end method

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值