Therdel/cssHack

GitHub: Therdel/cssHack

一个面向 Counter-Strike: Source 的跨平台(GNU/Linux 与 Windows)游戏作弊工具,集成了自瞄、连跳、无后座力等功能,并运用代码注入、函数 Hook 和特征码扫描等技术实现对游戏更新的抗性。

Stars: 23 | Forks: 3

# 跨平台 Counter-Strike: Source 作弊工具 ##### 适用于 GNU/Linux 和 Windows https://user-images.githubusercontent.com/14974231/142050572-a557c6a9-42d9-40d3-9584-dd1b008f7f88.mp4 ### 功能 - 连跳 (Bunnyhop) - 自瞄 (Aimbot) - **360 度盲狙自瞄 (360 NoScope Aimbot)** - 基于 FOV / 距离瞄准 - 瞄准键 (Aimkey) - 自动射击 - 无后座力 - 无视觉后座力 - 自动扳机 - **360 度盲狙自动扳机 (360 NoScope Triggerbot)** - 视觉效果 - *真实* 准星 / 实际子弹角度 - 绘制有效 FOV - 玩家位置/朝向 - 游戏内置作弊菜单 - 紧急停止键 (按下按钮禁用所有功能) ### 媒体 - FOV 自瞄 - [360 自瞄](media/360_hack.mp4) - 连跳 - 玩家位置/朝向 - 无后座力 - 子弹 ESP ### 使用的技术 - **代码注入** - Windows:CreateRemoteThread/LoadLibrary 方法 - GNU/Linux:GDB attach/dlopen 脚本 - **Detouring / Hooking (绕行/挂钩)** - 绕行至 thiscall / 泛型 lambda - Trampolines (跳板) / Thunking (转换) - 函数中部 / jmp 绕行 - 调用重定向 - **自动偏移** (抗游戏更新) - [特征码扫描](https://wiki.alliedmods.net/Signature_Scanning),在游戏二进制文件更改后仍能保持功能 (BoyerMoore 的自有 [变体](https://github.com/Therdel/BoyerMoore-DontCare)) ### 致谢 - [aixxe](https://aixxe.net/2016/09/shared-library-injection) - GNU/Linux SO 注入 ## 入门指南 ### 构建 1. **[仅限 GNU/Linux]**
安装编译器和工具 sudo apt-get install cmake ninja clang clang-tools 安装用于 32 位编译的包 (*游戏仅支持 32 位*) sudo apt-get install gcc-multilib g++-multilib 安装 OpenGL 开发库 *用于渲染* sudo apt-get install libgl-dev libxext-dev libudev-dev libxkbcommon-dev **[仅限 Windows]**
安装编译器、工具和 Windows SDK winget install --id=Kitware.CMake -e winget install --id=Ninja-build.Ninja -e winget install -i LLVM.LLVM 待测试 (不起作用,没有匹配输入条件的包) winget install -e --id Microsoft.WindowsSDK 通过安装 `Visual Studio` 来安装最新的 Windows SDK 2. 克隆仓库 git clone https://github.com/Therdel/cssHack.git --recurse-submodules --shallow-submodules --depth=1 cd cssHack 3. 构建 # 配置构建 cmake -DCMAKE_BUILD_TYPE:STRING=Debug -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DCMAKE_C_COMPILER:FILEPATH=/usr/bin/clang -DCMAKE_CXX_COMPILER:FILEPATH=/usr/bin/clang++ --no-warn-unused-cli -S . -B ./build -G Ninja # 构建 cmake --build ./build --config Debug --target all --parallel ### 注入 **使用需自行承担风险** #### Windows *Winject 1.7* 易于使用,**使用需自行承担风险**。可从例如 [oldschoolhack.me](https://www.oldschoolhack.me/en/downloads/tools/3610-winject-17) 获取 #### GNU/Linux - 我在 ```scripts/``` 目录中打包了三个脚本:*inject.bash*、*eject.bash* 和 *reinject.bash*。我为这些脚本改编了 [aixxe](https://aixxe.net/2016/09/shared-library-injection) 的思路。 - 您可能需要调整脚本中的路径。 - 这些脚本会将 GDB 调试器附加到游戏进程以进行注入。在正常情况下,不允许对我们未启动的进程执行此操作。因此,在每次登录会话中使用 sudo 权限执行一次 ```scripts/disable_ptrace_scope.bash``` 才能使用这些脚本。 ### 开发与调试 VSCode 扩展 (参见 [.vscode/extensions.json](.vscode/extensions.json)): - [C/C++ Extension Pack](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools-extension-pack) - [CodeLLDB](https://marketplace.visualstudio.com/items?itemName=vadimcn.vscode-lldb) 使用 LLDB 进行调试,因为库是使用 Clang(LLVM) 构建的 ### Counter-Strike: Source 版本 - 此作弊工具是为 32 位版本制作的,因此在 [2025 年 2 月的 64 位更新](https://steamdb.info/patchnotes/17399420/) 后已失效 - 您可以通过降级到 [Build 17399420](https://steamdb.info/patchnotes/6946501/) (最后一个 32 位版本) 在本地尝试 - 请参阅 [此指南](https://steamcommunity.com/sharedfiles/filedetails/?id=889624474) 通过 Steam 控制台进行降级 - 请参阅 [./game_cfg/appmanifest_240.acf](game_cfg/appmanifest_240.acf) 中的 Linux 版本清单 ### 兼容的 Cheat-Engine 版本 Cheat-Engine 7.1 ## TODO - [ ] 修复紧急停止键 (现状:仅在注入后立即生效) - [ ] 升级所有 cmakelists 版本 - [ ] 在不安装 Visual Studio 的情况下安装 Windows SDK - [ ] Windows 清单 - [ ] 降级教程 (从最新版本降至 Linux + windows) - isCrouching (更好的是:BoneAim) - 不要瞄准位于 (0,0,0) 被踢出的机器人 - 自动手枪 - 使用 s_client_localplayer_shotsfired - 如果装备手枪,当该值变为 1 时松开 - BSP 解析 - 实现 - [Valve BSP 文档](https://www.unknowncheats.me/forum/counterstrike-global-offensive/136369-bsp-parsing.html) - [算法](https://www.unknowncheats.me/forum/counterstrike-global-offensive/136369-bsp-parsing.html) - [Source SDK 2013 解析器?](https://github.com/Therdel/source-sdk-2013/blob/0d8dceea4310fde5706b3ce1c70609d72a38efdf/mp/src/public/gamebspfile.h) - [Source SDK 2013 光线追踪器?](https://github.com/Therdel/source-sdk-2013/blob/0d8dceea4310fde5706b3ce1c70609d72a38efdf/mp/src/public/raytrace.h) - [ReactiioN1337/valve-bsp-parser](https://github.com/ReactiioN1337/valve-bsp-parser) - 访问骨骼:[CBoneAccessor](https://github.com/Therdel/source-sdk-2013/blob/0d8dceea4310fde5706b3ce1c70609d72a38efdf/mp/src/public/bone_accessor.h#L20) - 带有 BSP 解析的 CSS 外挂 [源码](https://github.com/ALittlePatate/CSS-external) - 功能 - 自瞄:仅可见目标 - 自瞄:优先处理看着我的敌人 (90° FOV 锥形追踪) / 瞄准我的敌人 (更窄的锥形追踪) - ESP:可见性 - ESP:看到我 - ESP:瞄准我 - ESP:HEAD 表情 - 骨骼矩阵 - 实现 - 手动 1. 通过 footpos+viewHeight+-5 获取玩家头部骨骼的位置 2. 找到骨骼矩阵候选者的基址指针 3. 对带有 bot_mimic 的机器人重复此操作 - 但让它们处于不同的高度并使用它们的雷达脚部位置 4. 找到该骨骼矩阵候选者的基址指针 5. 对两者进行指针扫描 6. 两个指针必须位于相似的位置 - 实体列表 - [?位置](https://www.google.com/url?sa=t&source=web&rct=j&opi=89978449&url=https://www.youtube.com/watch%3Fv%3DelKUMiqitxY&ved=2ahUKEwiBsc6X55qQAxX8SPEDHTpuEhIQ3aoNegQIAxAC&usg=AOvVaw3MO61Z5QqIcPg7CJRCN9nl) - 通过 [CreateInterface](https://www.unknowncheats.me/forum/4149974-post321.html) 使用 Source SDK - 位置: 2287AA2C maybe_bonelist 23533A9C probably_bonelist 23533800 bonelist_beg 2353415C short_bonelist_3x4x9 231EF568 > bonlist_beg 231EF800 > bonlist_beg 231EF810 > bonlist_beg 231EF0E0 localplayer_viewoffsetZ 231EF258 localplayer_pos_feet - 功能 - 全骨骼瞄准 (最大伤害) - ESP:骨骼 - ESP:正确的方框 ESP - 使用 Source SDK (另请参阅骨骼矩阵,信息重复) - [x] 如何使用 CreateInterface 实际获取接口? - 使用 dlsym/`MemoryUtils::getSymbolAddress(libNames::client, "CreateInterface")` - 来源:`sp/src/public/tier1/interface.h`::`DLL_EXPORT void* CreateInterface(const char *pName, int *pReturnCode)` - [x] 使用 IDA 寻找 CreateInterface 符号或其他东西 - 过滤玩家:[来源0](https://www.unknowncheats.me/forum/4141444-post2.html) - `IClientEntityList::GetClientEntity(int)` 用于 0..64 - 检查是否为 null - `static_cast` 为 `C_BaseEntity` - 检查 `bool C_BaseEntity::IsPlayer()` - 从 `C_BaseAnimating* C_BaseEntity::GetBaseAnimating()` 获取 `C_BaseAnimating*` - `CBoneAccessor C_BaseAnimating::m_BoneAccessor` -> 转换为派生类 - `const matrix3x4_t& CBoneAccessor::GetBone( int iBone ) const` - ? ... `bool C_BaseAnimating::SetupBones( matrix3x4_t *pBoneToWorldOut, int nMaxBones, [..])`? - [ ] `IPlayerInfo *CBasePlayer::GetPlayerInfo()` - [ ] [IPlayerInfo](src/public/game/server/iplayerinfo.h) - `getHealth()` - `getName()` - `GetTeamIndex()` - `IsConnected()` (如果玩家槽位有效) - `GetArmorValue()` - `GetWeaponName()` - `GetLastUserCommand()` - [IBaseClientDLL::CreateMove](https://developer.valvesoftware.com/wiki/Usercmd) - **有趣的接口** - mp/src/public/engine/IEngineTrace.h::IEngineTrace - master:[IEngineTrace](src/public/engine/IEngineTrace.h) - mp/src/game/client/cliententitylist.cpp::IClientEntityList - master:[src/public/icliententitylist.h](IClientEntityList) - [IVDebugOverlay](src/public/engine/ivdebugoverlay.h) - [Youtube 演示 CSGO](https://www.youtube.com/watch?v=PvEK--0DdhU) - `C_BaseEntity::TraceAttack()` - Netvars 代码 [frk1/hazedumper-rs](https://github.com/frk1/hazedumper-rs/blob/master/src/games/csgo/netvars.rs)
标签:Aimbot, Bash脚本, Boyer-Moore, Bunnyhop, C++, Counter-Strike: Source, CS:S, Detour, DLL注入, ESP, FPS, Game Hack, GDB注入, GNU/Linux, Hooking, Inline Hook, LoadLibrary, No Recoil, Triggerbot, Visuals, 内存修改, 函数Hook, 开源游戏作弊器, 数据擦除, 无后坐力, 流量审计, 游戏作弊, 特征码扫描, 端点可见性, 第一人称射击, 签名扫描, 自动扳机, 自瞄, 视觉辅助, 连跳, 透视