首页
社区
课程
招聘
[讨论]对dalvik语法中的寄存器一点疑惑
发表于: 2013-4-10 15:53 6009

[讨论]对dalvik语法中的寄存器一点疑惑

2013-4-10 15:53
6009
反编译了几个android的apk,尝到甜头后,就想深入了解smali的语法了,对方法的参数传入后归那个寄存器很是疑惑,百度了些,也没弄明白,就用jdgui对着smali看。
现在发现在标明.locals的情况下,方法的参数在p类寄存器中,p0不是,p0好象是代表this,然后后面几个依次对应方法的参数。
在标明.registers的情况下还没摸清,有对这方面有心得的大牛请给指点下我上面的理解对不对,谢谢。

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 25
活跃值: (116)
能力值: ( LV4,RANK:100 )
在线值:
发帖
回帖
粉丝
2
.register 表示总的寄存器数
.local 表示本函数使用的寄存器数(不包括参数寄存器)

总的寄存器数(.register) = 本函数使用的寄存器数(.local) + 参数寄存器数

假如一个函数总寄存器数是5,参数个数是2
那么它一共用到五个虚拟寄存器v0, v1, v2, v3, v4
其中v0, v1, v2对应本地寄存器
v3, v4对应参数寄存器。注意这里的v3就是p0, v4就是p1

详细介绍可以看《Android 软件安全与逆向分析》42页。
2013-4-10 16:48
0
雪    币: 25
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
明白了,谢谢
2013-4-10 18:37
0
雪    币: 335
活跃值: (313)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
long用的是两个寄存器
2013-4-11 14:31
0
游客
登录 | 注册 方可回帖
返回
//