开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 13453|回复: 213
收起左侧

[易源码分享] 【首发】32位程序实现64位函数的真正底层调用,syscall

    [复制链接]
发表于 2022-7-20 20:24:00 | 显示全部楼层 |阅读模式   四川省宜宾市
分享源码
界面截图:
是否带模块: 纯源码
备注说明: -
本帖最后由 ANormalUser 于 2022-7-21 08:55 编辑

前言:

  • 本源码直接使用syscall汇编实现底层的x64函数的调用,不走任何多余的流程(包括64位的ntdll也不走)

实现:

  • 其实实现起来也不困难:
  • 用CE看ntdll最后走向内核的实现,无非都是很简单的:
  • 先把rcx值给r10,然后赋值eax内核调用号(SSDT函数序号),然后判断CPU是否支持快速调用,支持就直接使用syscall,不支持使用int 2E中断门。
  • 本源码相当于直接将64位这些函数的实现过程直接使用汇编写了出来,其实并不复杂,主要是64位传参和32位的约定不同,64位使用rcx,rdx,r8,r9传递前4个参数,从第五个参数开始才使用rsp堆栈传参,明白了这一点,实现64位的syscall其实并不困难。
  • 64位内存读写测试(可以看到在0x100000000处成功申请内存并实现读写和内存属性修改):
  • 测试:真正的系统驱动信息获取(利用NtQuerySystemInformation_x64实现,纯粹的32位NtQuerySystemInformation是不可能实现的,论坛上的驱动信息获取基本没有几个正确的,看驱动的入口点地址就看得出来,64位长的入口点地址才是64位系统下的驱动应该有的地址):

PS:

  • 更多功能可自行拓展

源码:


x64Get.e (49.4 KB, 下载次数: 369)

评分

参与人数 12好评 +12 精币 +43 收起 理由
被封禁言 + 1 开源精神必须支持~
inat + 1 + 2 感谢分享,很给力!~
易语言资源网 + 1 + 3 开源精神必须支持~
1051496412 + 1 + 2 支持开源~!感谢分享
a524666979 + 1 果然大佬跟我们普通人研究的方向都不一样
付广帅 + 1 + 2 能调用c++整的yolo的dll么
福仔 + 1 + 20 支持开源~!感谢分享
国王软件 + 1 + 2 新技能已get√
天雷 + 1 + 2 支持开源~!感谢分享
冰点 + 1 + 5 感谢分享,很给力!~
猪滴寳貝哝 + 1 + 2 开源精神必须支持~
Bszk + 1 + 3 新技能已get√

查看全部评分


本帖被以下淘专辑推荐:

签到天数: 1 天

发表于 2024-3-12 13:37:07 | 显示全部楼层   浙江省台州市
  果然大佬跟我们普通人研究的方向都不一样
回复 支持 反对

使用道具 举报

结帖率:80% (4/5)

签到天数: 26 天

发表于 2023-10-24 10:57:22 | 显示全部楼层   湖南省郴州市
6666666666666666666666
回复 支持 反对

使用道具 举报

发表于 2023-7-19 00:08:11 | 显示全部楼层   山东省潍坊市
果然大佬跟我们普通人研究的方向都不一样
回复 支持 反对

使用道具 举报

结帖率:94% (15/16)

签到天数: 4 天

发表于 2023-7-18 14:17:24 | 显示全部楼层   福建省宁德市
wchj2 发表于 2022-11-23 07:44
RCX、RDX,也就是进syscall前。为何参数都是4字节对齐? x64不应该是8字节对齐的吗。 ...

因为没进之前他只能识别整数型也就是4字节所以ECX和EDX合起来就是长整数型也就是8字节
回复 支持 反对

使用道具 举报

结帖率:67% (2/3)

签到天数: 5 天

发表于 2023-7-2 16:18:50 | 显示全部楼层   河南省郑州市
感谢分享
回复 支持 反对

使用道具 举报

结帖率:0% (0/4)

签到天数: 4 天

发表于 2023-3-18 23:07:00 | 显示全部楼层   湖南省湘潭市
感谢分享
回复 支持 反对

使用道具 举报

结帖率:75% (6/8)

签到天数: 1 天

发表于 2023-2-26 06:04:08 | 显示全部楼层   广东省广州市
回复 支持 反对

使用道具 举报

发表于 2023-1-25 06:51:15 | 显示全部楼层   广东省广州市
        开源精神必须支持~
回复 支持 反对

使用道具 举报

结帖率:25% (2/8)

签到天数: 19 天

发表于 2022-11-23 07:44:12 | 显示全部楼层   广西壮族自治区贵港市
RCX、RDX,也就是进syscall前。为何参数都是4字节对齐? x64不应该是8字节对齐的吗。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 诚聘英才| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表