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

33.第二阶段x64游戏实战-InLineHook

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

本次游戏没法给

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

上一个内容:32.第二阶段x64游戏实战-封包-公共call

本次写的是关于劫持ws2_32.send函数,劫持ws2_32.send函数后就可以获得包内容和包长,然后就可以把包内容打印到一个界面中,这样就可以很容易的分析出数据包的规律,然后就可以伪造封包来发送

本次使用InLineHook,它是一个比较简单的hook方式,什么是InLineHook呢?

如下图红框是ws2_32.send函数头部,InLineHook就是把下图红框的代码复制出来,然后改成jmp(跳转),这个jmp跳转到我们的代码中,然后在我的代码中执行劫持的逻辑,执行完劫持的逻辑再执行原本复制的代码,然后再jmp回去

要实现InLineHook有几个问题

1.要在什么位置改?

2.改几个字节?

这是要考虑的问题

还有如果要直接改成jmp跳转它还比较麻烦,jmp跳转到我们的代码,我们的代码执行完,它还得知道原本位置才能在跳回去,要跳过去要跳回来这要两个地址,写两个地址代码写起来就比较复杂

首先是解决jmp跳转的问题,如下图把jmp改成call就可以了,call的时候就会把它下一行代码的地址放到栈里,然后我们在劫持的代码里直接ret就可以了

mov rax,ws2_32.7FFC5A513ABA call rax

上面两行代码的硬编码:48 B8 BA 3A 51 5A FC 7F 00 00 FF D0

它占用12个字节,现在问题2也知道了,最少要改12个字节

然后来到ws2_32.send函数头部,找12个字节,如下图红框12个字节,但是最后2字节会把原本的汇编代码砍断,这样就没法写了,所以就要重新找位置

如下图红框,这个代码就很合适,12字节都是完整的,没有砍断的情况,

复制它的二进制

57 41 56 41 57 48 81 EC 80 00 00 00

修改代码,复制48 B8 BA 3A 51 5A FC 7F 00 00 FF D0,然后如下图选择二进制粘贴

粘贴之后

然后再来到下图红框位置,也是上方的rax的值

然后输入 add rsp, 0x8,这个一句的原因,当执行call的时候rsp-0x8位置会写入下一行代码的内存地址,这里原本的执行逻辑不会有rsp-0x8,所以这里的add rsp,0x8就是为了恢复rsp

然后复制 57 41 56 41 57 48 81 EC 80 00 00 00,如下图选择二进制粘贴,要用鼠标选中12个字节以上,再点击粘贴,不然会发现粘贴的不全

完整的代码,下图中用的是jmp,因为这里不好取地址,下一章会用代码实现ret,注意根据本章步骤改好代码,然后操作游戏发送数据包,如果崩溃了就说明,下图红框位置的内存地址权限不够,也就是没有执行代码的权限,在原本代码附近位置的内存地址很大几率是可以执行的


img

http://www.xdnf.cn/news/690949.html

相关文章:

  • Jmeter——JDBC连接数据库相关
  • 【vscode】切换英文字母大小写快捷键如何配置
  • 《Google I/O 2025:AI浪潮下的科技革新风暴》
  • 宁夏农业科技:创新引领,赋能现代农业新篇章
  • c语言实现Linux命令行补全机制
  • 运用集合知识做斗地主案例
  • 智能指针的使用及原理
  • MCP 登场:掘金开启 AI 前端项目部署新时代
  • 第三章、数据链路层
  • C++智能指针用法及内存管理
  • 双因子COX 交互 共线性 -spss
  • 多态 向上转型
  • YOLO人体姿态估计Pytorch推理ONNX模型推理
  • Android-GestureDetector学习总结
  • 微信小程序(uniapp)对接腾讯云IM
  • Vue 实例生命周期
  • 2025.5.28总结
  • 接口幂等性原理与方案总结
  • Avue表单个别字段实现全选的思路
  • 【Pandas】pandas DataFrame drop
  • Transformer核心技术解析LCPO方法:精准控制推理长度的新突破
  • Redis学习(十四)主从复制的工作原理、集群搭建(一主二从)
  • Android 云手机横屏模式下真机键盘遮挡输入框问题处理
  • [AD] Noxious LLMNR+DHCP+NTLMv2+Kerberos+SMB
  • 高精度导航 | RTK:2025年高精度导航算法综述,包括:原理,数据,公式,完整代码,开源代码链接
  • 网络协议之办公室网络是怎样的?
  • Mac M1编译OpenCV获取libopencv_java490.dylib文件
  • xcode 旧版本、历史版本下载
  • 【C/C++】高性能网络编程之Reactor模型
  • 网站缓存入门与实战:浏览器与Nginx/Apache服务器端缓存,让网站速度起飞!(2025)