首页
社区
课程
招聘
[原创]android解释器----函数参数在寄存器存放顺序
发表于: 2019-11-14 14:18 3961

[原创]android解释器----函数参数在寄存器存放顺序

2019-11-14 14:18
3961
    第一次发帖,目前市面上的加固工具都已经实现了java vmp,但是网上的资料少之又少,这里就自己研究的java vmp前奏--解释器之寄存器的存放顺序做一下分享,希望对其他同学有所帮助,纯自己研究摸索的,如有不对的地方还请大神们指教。(看这篇文章之前希望你先去熟悉一下smali的语法和dex的结构哈)

1.先来看一下测试程序的java源码,这里我会对函数multi的参数的存放顺序做说明

2.再来看一下函数multi的反编译出来的smali代码:可以看到multi的四个入参分别对应p1,p2,p3,p4,熟悉smali的同学会知道因为multi不是static方法,所以这里会有一个隐藏的参数this,也就是p0;smali的代码中可以看到还使用到了临时变量v0.(后面将会对参数p0,p1,p2,p3,p4,v0的存放顺序来进行解释说明)

3.这里我们再来看一下对应的dex文件中的数据(用010Editor打开dex可以看到,这里希望你先自己去熟悉一下dex的结构)

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 1
支持
分享
最新回复 (11)
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
棒棒棒,讲解清晰易懂!
2019-11-14 14:38
0
雪    币: 7
活跃值: (263)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
简洁易懂,必须点赞
2019-11-14 15:02
0
雪    币: 9479
活跃值: (757)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
java vmp
好新颖的叫法
不过Java怎么实现vmp呢,除了 java to c
2019-11-14 16:19
0
雪    币: 24
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
无边 java vmp 好新颖的叫法 不过Java怎么实现vmp呢,除了 java to c
这里其实我不是很明确的知道你所说的java to c是哪种?我认为dalvik解释器解释java代码时本身也是java to c,用c语言解释执行java指令
2019-11-14 17:27
0
雪    币: 225
活跃值: (277)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
膜拜一下
2019-11-15 10:31
0
雪    币: 582
活跃值: (317)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
你好 能否QQ交流一下 Q:1990343340
我想请教一下ptrace 我是新手
一个问题被困了2天了
2019-11-15 14:06
0
雪    币: 9479
活跃值: (757)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
摇曳的小树叶 这里其实我不是很明确的知道你所说的java to c是哪种?我认为dalvik解释器解释java代码时本身也是java to c,用c语言解释执行java指令
dalvik解释器的是native
一般java2c指在so里运行java 代码
2019-11-15 14:13
0
雪    币: 24
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
无边 dalvik解释器的是native 一般java2c指在so里运行java 代码
后面有时间补充一篇invoke类型指令解释
2019-11-15 14:43
0
雪    币: 1380
活跃值: (1626)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
10
没看出这个和java vmp有啥关系,到是讲了些smali的寄存器相关内容,你的vmp在哪啊?
2019-11-16 21:29
0
雪    币: 24
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
aihacker 没看出这个和java vmp有啥关系,到是讲了些smali的寄存器相关内容,你的vmp在哪啊?
请看清楚标题,谢谢
2019-11-17 12:41
0
雪    币: 24
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
摇曳的小树叶 请看清楚标题,谢谢
看雪有大神开源了自己的vmp代码,不歪大神的demo,还有某大神的DCC,但是不歪大神的demo只是解释了算数运算,自己实现dex的指令的难点在invoke系列指令的实现,所以这里只就寄存器顺序说明,后面会更新invoke指令的解释原理,dex中方法抽离等可以参见不歪大神的demo
2019-11-17 12:54
0
游客
登录 | 注册 方可回帖
返回
//