• 游客 你好!
    ✿ MoeBBS 全部交流群公示 ✿
    诋毁本身就是一种仰望👑
  • 论坛资源声明
    1.本论坛所有资源均由用户自行发布,版权归原作者所有,未经允许,禁止非法转载、复制或用于商业用途。
    2.若您认为论坛中的任何资源侵犯了您的合法权益(如版权、肖像权等),请提供相关证明材料通过站内信,邮箱或工单与我们联系,我们将在核实后尽快处理或移除相关内容。
    3.本论坛无法100%保证用户发布内容的准确性、完整性或合法性,使用相关资源前请您自行甄别其风险与适用性,后果由使用者自行承担。
【CS2】Lua教程 - 实现PrintToChat

教程 【CS2】Lua教程 - 实现PrintToChat

✅ Mengta 论坛官方售卖站点
本教程不提供最终实现代码🤓
本站资源链接:逆向基础教程

教程开始

在CS2 SDK中搜索到client端
CBaseHudChat类中有个名为ChatPrintf的成员函数
1737049966914.webp


我们理清思路
这个ChatPrintf是CBaseHudChat类中的函数
所以我们想要调用这个函数

我们就需要想办法获取这个类的指针

所以我们直接搜CBaseHudChat *看看怎么能取到CBaseHudChat的指针
看到了一个很有意思的东西GET_HUDELEMENT
1737055561244.webp


我们发现这是一个宏定义
1737055624856.webp


好 我们发现
GetHud是返回CHud的引用
然后调用了CHud类中的FindElement函数
1737055803807.webp


我们看到FindElement函数中有一个字符串 这是一个很好的切入点
1737055991166.webp


我们在IDA中搜索这个字符串
1737056056449.webp


我们查看这个字符串的引用
1737056097898.webp


然后我们定位进去 看函数头
发现实际情况 不需要传入CHud的指针 只需要传入字符串即可
1737056168635.webp


我们为这个函数生成签名
1737056360298.webp


这里演示Fa的API
我们调用utils.find_pattern 这是Fa的API可以找到函数签名的内存地址
然后我们通过ffi定义函数指针 将内存地址转换为函数指针
然后我们传入字符串 即可获取到CBaseHudChat的指针
1737060315244.webp


我们搜索ChatPrintf
发现CBaseHudChat::MsgFunc_SayText函数里有对ChatPrintf的调用
我们注意到下面有一个字符串引用
1737060378804.webp


我们在IDA查找这个字符串 然后定位引用
1737060440142.webp


然后我们发现其中一个函数 结构与SDK中的CBaseHudChat::MsgFunc_SayText函数相似
然后注意到这里有个函数有"%s"字符串 且位于CBaseHudChat类
我们猜测这个是我们要找的CBaseHudChat::ChatPrintf函数
1737060586437.webp


我们注意到函数头没有调用约定 那么我们默认为cdecl
而且我们知道 cdecl一般用于参数个数可变的函数
所以我们猜测这个函数就是CBaseHudChat::ChatPrintf函数
1737060778091.webp


我们为这个函数生成签名
1737060896747.webp


然后我们按照刚才一样的办法
用函数签名找到内存地址
然后又将内存地址转为函数指针
1737060952533.webp


然后我们将其封装为函数
进入游戏进行测试
1737061214749.webp

 

附件

  • 1737055442549.webp
    1737055442549.webp
    2.1 KB · 查看: 19
  • 1737061171534.webp
    1737061171534.webp
    8.4 KB · 查看: 32
  • 1737056317662.webp
    1737056317662.webp
    13.8 KB · 查看: 24
🎉 测试成功 🎉
1737061691295.webp
 
Similar content 最多查看 查看更多

相似主题

  • 文章 文章
现在CS2外挂层出不穷,基本大部分的外挂功能都已被实现,其中在我研究过程中比较有意思的就是外部静默自瞄。当然静默自瞄在注入游戏后是很容易实现的,只需要Hook CreateMove这个函数进行拦截CMD这个结构数据,然后进行视角的修改即可,但外部比较难实现这种方法,但也可以从此函数入手来研究,所以就有接下来的分析过程。 注:此文章仅分享逆向过程以供学习参考,并无传播、提供外挂等非法程序。...
回复
0
查看
329
删除会员 232
  • 文章 文章
该系列持续更新中 感兴趣可以关注 【前言&基础】字符串引用查找 【进阶-1】通过调用向上溯源 【科普】__fastcall等调用约定 【科普】虚函数表vftable和偏移offset 【进阶-2】向下查找&call指令分析 【进阶-3】通过偏移在虚表找函数 【进阶-4.1】虚函数反查虚表中其他虚函数 【进阶-4.2】多态导致的特殊情况
回复
1
查看
380
  • 红包主题
  • 文章 文章
教程 编译源代码 |编译|
Hello and welcome to the Intro of Pasting world 我注意到很多人就是不喜欢使用记事本(maybe)来编译东西,所以我们决定制作一个关于如何编译秘籍的小指南! 1) Visual Studio 您需要安装 Visual Studio - 下载 为了本指南,我们将使用 Visual Studio 19 欢迎 您看到此屏幕: (Visual...
回复
1
查看
95
  • 文章 文章
#version 1.1 import os import sys import time import re import json import requests from PyQt5.QtGui import QFont, QIcon from bs4 import BeautifulSoup from PyQt5.QtWidgets import (QApplication...
回复
0
查看
11
一.安装Steamcmd 确保有 60GB 可用空间和比较好的网络环境并解压Steamcmd到对应文件夹中 打开Steamcmd.exe 登录steam: login anonymous app_update 730 validate 出现以下行段时完成安装 Success! App '730' fully installed.<br>Steam 如果你只要更新CS2...
回复
4
查看
769
后退
顶部 底部