CSGO外挂开发笔记

游戏方面

-insecure -> 不启用VAC(加在游戏启动参数里)
1way 蹲在别人打不到的地方,然后突然站起来。

常用控制台指令

mp_maxrounds 0
bot_stop 1
map 地图名
quit 退出

各种名词

FSN -> FrameStageNotify
CM -> CreateMove
LBY -> Lowerbody(下半身对应的Yaw)
AA -> Anti-Aim(所谓的大陀螺)
Resolver -> 解析器(AntiAntiAim)

逆向部分

函数特征码

用IDA,先搜 string,搜要找的函数,找到相关 string 之后看交叉引用,再往上脱,找到函数头部,然后用这个插件就可以了。

虚函数的index

这个有两种办法,一种是看 GitHub 上的 source-sdk,然后一个一个函数数,数到几,index就是几,不过那个有的已经变了,这个时候还是还用 IDA,但是我也暂时没搞明白怎么用
IDA 弄

动态调试

动态调试我用 x64dbg,调试的时候 VAC 会给你不少异常,这个在这篇文章里说过怎么解决。
然后就是要注意一下 VAC,动态调试的时候一定要关掉 VAC,否则VAC之。

网络验证开发思路火花

本文采用C/S架构。

用户登陆验证

这个比较容易,select用户table的user、pass字段,若查询失败则登陆失败,反之,则登陆成功。

产品是否到期

伪代码: return (到期时间的时间戳 >= 现在时间的时间戳);
返回true则产品已经过期,false则还没有过期。

Session

在用户table里建一个 session id 字段
用户登陆成功后,S端生成(要替换掉旧的 session id)并返回一个 session id(必须独一无二)。
S端需要有一个验证 session id 的函数。

C端登陆后

C端登陆成功后让外挂DLL知道刚才从S端过来的 session id,然后访问S端的验证 session id 函数,检查对不对。

防多个用户同时使用(非实时)

C端每隔3分钟访问一下S端的 session id 验证函数,检查是否OK。(意思就是,新用户登陆之后,旧的 session id 就会废掉)
若某个 session id 超过10分钟没有访问过验证函数,则删掉该 session id。