首页
社区
课程
招聘
[讨论]x64系统下可以在32位程序中注入64位代码么?
发表于: 2013-10-2 15:12 7081

[讨论]x64系统下可以在32位程序中注入64位代码么?

2013-10-2 15:12
7081
突发奇想,在x64环境下可以把x86作为一个子系统来看
那么32位程序只使用了低2GB,其余的与64位程序一样
那么我就想是否可以在32位程序的高地址(>2GB)的地方注入代码
且代码指令集是x64的
求教育

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

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 778
活跃值: (208)
能力值: ( LV9,RANK:260 )
在线值:
发帖
回帖
粉丝
2
32位程序好像都加载了Ntdll.dll,wow64.dll,wow64win.dll,wow64cpu.dll。关键是这几个DLL都是64位的,32位程序怎么运行?我想可能是32位程序发出某个中断后,系统就从32位指令集切换到64位指令集,然后跳到这几个64位DLL上,这几个DLL再将32位程序的API调用转换成64位的API调用,因为32位程序进不了内核
2013-10-2 16:12
0
雪    币: 952
活跃值: (1821)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
当然可以 你跟踪一下32位系统下怎么调用api的过程就懂了 其中就涉及了 32位指令和64位指令切换
2013-10-2 16:30
0
雪    币: 496
活跃值: (286)
能力值: ( LV13,RANK:400 )
在线值:
发帖
回帖
粉丝
4
不能。
~~~~~
2013-10-2 16:39
0
雪    币: 141
活跃值: (318)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
我估计也不能。。
感觉原理可能就像 32位API兼容16位API一样的原理吧(只是猜测,)
2013-10-2 19:12
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
如果我没记错的话,ring3下是读取不了32位程序的64位地址的。你进ring0倒是可以,不过到ring0你想干啥干啥了
32位程序调用api最后会在ntdll里面进入一个远跳转,将cs段设置为64位段,这是跳到wow64cpu里面再去执行64位的ntdll,然后再返回
2013-10-2 22:19
0
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
深入解析windows操作系统  里面讲到这一点的。 应该是不行的。
2013-10-2 22:27
0
雪    币: 211
活跃值: (118)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
ring3 下你写不了>2G的地址的数据。
2013-10-3 01:06
0
雪    币: 75
活跃值: (638)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
9
写64位的指令集是没问题,空间应该不行
2013-10-3 09:34
0
游客
登录 | 注册 方可回帖
返回
//