x86_64 系统调用原理

x86_64 系统调用原理,第1张

64位系统调用的过程,

使用了特殊的指令syscall(加载msr到rip),该指令将cpu ring从3变为0,并执行保存在MST_LSTAR的syscall函数的地址。

entry_SYSCALL_64_after_hwframe(汇编)

查找到系统调用号与函数的对应表

do_syscall_64 ->syscall_table nr 完成系统调用

完成后,调用prepare_exit_to_usermode和

USERREG_SYSRET64 swapgs sysretq 返回用户态

相比于32位时int 80中断的模式,效率上应该会好很多。

64位相对于32位系统,多使用了一个特殊模块寄存器,不使用中断,效率上应该高很多。

这个是不好搞的。32位的dll,64位的是读不起来的。我以前在网上下载过一个能分4个桌面的Msvell.dll,这个是只兼容32位的,一般你可以看一下,用任务管理器打开用"revers32/64 (软件的位置)://(文件的名称).(扩展名) begin!logo来试一下。如果兼容那就用如果不兼容,那就是位数不一样。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11731803.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存