当前位置: 首页 > news >正文

1.第二阶段x64游戏实战-x86和x64的区别

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!

本次游戏没法给

内容参考于:微尘网络安全

上一个内容:这是第一章

x64相比较与x86来说是简单的,因为x64的游戏都比较新,对游戏加的一些防护也比较少,而且它的游戏数据相对于x86来说更简单,更容易分析,很多32位游戏都进行了升级加入了64位版本

主要记住x64函数由于64位处理器多了几个寄存器,编译器会优先使用寄存器传参从而增加性能

传参优先使用rcx、rdx、r8、r9,其余参数使用栈传

rcx(第一个参数)

rdx(第二个参数)

r8(第三个参数)

r9(第四个参数)

函数调用之前会申请一块栈空间,访问栈时使用rbp+偏移的方式

寄存器的区别:

64位寄存器兼容源32位寄存器,下图是常用的64位寄存器

调用约定

x86中使用stdcall(调用的函数进行平栈操作)、cdecl(调用完函数我们自己手动平栈)、fastcall等

x64使用类似fastcall的约定,fastcall前4个参数会使用rcx(第一个参数)、rdx(第二个参数)、r8(第三个参数)、r9(第四个参数),4个参数之外的使用栈传参

栈的使用

32位代码在函数中使用push和pop等指令改变栈的大小

64位代码在函数中在函数执行之前会申请一块栈空间,如下图sub rsp,0x80这样的代码申请栈空间,至于sub后面的数是多少取决于编译器

申请之后访问变量时或存放变量时采用,mov rbp-0x10, 0x10这样的代码进行操作

32位代函数中会频繁push或pop,这就会导致esp频繁变动,所以64位函数比32位函数性能会好

fastcall汇编代码

使用CE搜索的血量

如下图可以看出内存地址很长了是8字节的

游戏中血量修改成2361,再次搜索

然后就能找到游戏中血量在当前电脑内存的位置了

下图1和2都要双击

双击完2如下图修改数值为12,修改完游戏中也会变化,如果不变化可以尝试关闭角色详情窗口重新打开

然后角色数据一般都会写到一个结构体或一个类中,所以找到了血量也会找到其它的属性,比如防御力、怒气、闪避、暴击率、外功、内功等

鼠标右击如下图,选择浏览相关内存区域

如下图右击选择4字节(DEC),意思是以4字节十进制的模式显示数据

通过与游戏中角色属性界面的对比下图红框都是角色属性的值


img

相关文章:

  • 批量将 PDF 转换为 Word/PPT/Txt/Jpg图片等其它格式
  • Wireshark学习
  • 批量将多个彩色的 PDF 转换为黑白色
  • 2025年公路水运安全员 C 证考试内容及练习题
  • JS 防抖与节流
  • xr-frame 用cube代替线段实现两点间的连线
  • SQL Server中账号权限
  • std::string不是直接的 DATETIME类型,因此在插入数据库时,通常可以直接将这个字符串传递给数据库,它会自动将其转换为 DATETIME类型
  • 自动化浏览器的测试框架playwright 支持多种浏览器Chromium、Firefox 和 WebKit
  • OpenManus和OWL如何选?
  • 刷题记录(LeetCode 994.腐烂的橘子)
  • 使用ProcessBuilder执行FFmpeg命令,进程一直处于阻塞状态,一直没有返回执行结果
  • Pytorch学习笔记(十二)Learning PyTorch - NLP from Scratch
  • Springboot读取nacos配置
  • 从tensorflow导入keras失败?
  • deepseek本地部署并搭建个人知识库
  • AIP-192 文档
  • ROS2软件架构全面解析-rmw软件框架
  • 使用系统自带的磁盘清理工具清理c盘空间 以及手动删除临时文件
  • leetcode141.环形链表
  • 公司网站建设方案/杭州百度快照
  • 河南郑州消费情况/天津seo公司
  • 广州营销网站建设/百度河南代理商
  • inititle 网站建设/网站代理公司
  • 电竞竞猜网站 建设/怎么免费制作网页
  • 网站建设 pdf/手机怎么自己制作网页