├── .gitignore ├── LICENSE ├── README.md ├── [教程] [Guided Hacking] Counterstrike Global Offensive └── README.md ├── [教程] [Zer0Mem0ry] Counterstrike Global Offensive └── README.md ├── [教程] [本人] Apex Legends ├── README.md ├── [dump] [offsets] [tools] │ ├── apex_202_10_10.md │ ├── apex_offsets.txt │ ├── dump_apex.exe │ └── get_apex_offsets.exe ├── [dump] │ ├── dump_apex.exe │ ├── main.cpp │ └── memory.hpp ├── [offsets] [pelite] │ ├── README.md │ └── pelite-0.9.0.zip ├── [辉光] [自瞄] [原始版本] │ ├── cheats.hpp │ ├── main.cpp │ ├── memory.hpp │ ├── overlay.hpp │ └── vectors.hpp ├── [辉光] [自瞄] [自瞄不稳待修改] │ ├── cheats.hpp │ ├── memory.hpp │ └── vectors.hpp └── [辉光] [锁头] [稳定版本] │ ├── README.md │ ├── cheats.hpp │ ├── demo.jpg │ ├── entity.hpp │ ├── main.cpp │ ├── memory.hpp │ └── offsets.hpp ├── [教程] [本人] Counterstrike Global Offensive ├── A.辅助程序最终效果演示 │ ├── README.md │ └── demo.jpg ├── B.使用CE查找自己的矩阵信息 │ ├── README.md │ └── demo.jpg ├── C.使用CE查找自己的角度信息 │ ├── README.md │ └── demo.jpg ├── D.使用CE查找自己的位置信息 │ ├── README.md │ └── demo.jpg ├── E.使用CE查找敌人和队友的位置信息 │ ├── README.md │ └── demo.jpg ├── F.使用CE查找敌人和队友的骨骼信息 │ ├── README.md │ └── demo.jpg ├── G.C++实现inline hook │ ├── README.md │ └── inline_hook.hpp ├── H.inline hook Direct3D9 │ ├── README.md │ ├── demo.jpg │ ├── dll_main.cpp │ ├── do_cheats.hpp │ ├── help_func.hpp │ └── inline_hook.hpp ├── I.imgui + 内外挂 │ ├── README.md │ ├── demo.jpg │ ├── 内挂 │ │ ├── dll_main.cpp │ │ ├── do_cheats.hpp │ │ ├── help_func.hpp │ │ └── inline_hook.hpp │ └── 外挂 │ │ ├── main.cpp │ │ └── main.h ├── J.DrawIndexedPrimitive的透视实现 │ ├── README.md │ └── demo.jpg ├── K.内存模式查找 │ ├── README.md │ ├── csgo.txt │ ├── 源码 │ │ ├── csgo_cheats.hpp │ │ ├── direct3d9.hpp │ │ ├── help_func.hpp │ │ └── main.cpp │ └── 自己矩阵前内存特征.txt ├── L.完善外挂功能 │ ├── README.md │ ├── csgo_cheats.hpp │ ├── demo.jpg │ ├── direct3d9.hpp │ ├── help_func.hpp │ └── main.cpp ├── M.外部辉光 + 连跳 │ ├── README.md │ ├── demo.jpg │ ├── main.cpp │ └── offset.h ├── N.CSGO外部武器换肤 │ ├── README.md │ ├── demo.jpg │ ├── main.cpp │ ├── main.h │ └── skin.txt ├── O.加载驱动的完美方法 │ ├── README.md │ └── temp.png ├── P.CSGO注入小助手 │ ├── README.md │ ├── csgo_inject.exe │ └── main.cpp ├── Q.hvh陀螺自瞄 │ ├── README.md │ ├── address.hpp │ ├── bsp_parser.hpp │ ├── cheats.hpp │ ├── main.cpp │ ├── memory.hpp │ └── obfuscator.hpp ├── R.绘制人物骨骼 │ ├── README.md │ ├── cheats.hpp │ ├── demo.png │ ├── main.cpp │ └── overlay.hpp ├── README.md └── [无视频]一些有用小代码 │ ├── CSGO简单接口类 │ ├── README.md │ ├── address.hpp │ ├── convar.hpp │ ├── main.cpp │ ├── memory.hpp │ └── netvar.hpp │ ├── overlay类 │ ├── main.cpp │ └── overlay.hpp │ └── 获取网络上的CSGO地址和偏移 │ ├── README.md │ └── main.cpp ├── [教程] [本人] Grand Theft Auto V ├── GTAHaXUI │ ├── GTAHaXUI.exe │ ├── stat.txt │ └── stats.txt └── README.md └── [教程] [本人] 利用驱动绕过检测的六种方法 ├── Ioctl [输入输出控制] ├── Driver_IOCTL │ ├── Driver_IOCTL.sln │ ├── Driver_IOCTL │ │ ├── Driver_IOCTL.inf │ │ ├── Driver_IOCTL.vcxproj │ │ ├── Driver_IOCTL.vcxproj.filters │ │ └── main.c │ └── User_IOCTL │ │ ├── User_IOCTL.vcxproj │ │ ├── User_IOCTL.vcxproj.filters │ │ ├── User_IOCTL.vcxproj.user │ │ └── main.cpp └── README.md ├── Mdl读取内存 ├── Driver.c ├── Driver.h └── main.cpp ├── MiProcessLoaderEntry隐藏驱动 ├── HideDriver.c ├── HideDriver.h ├── README.md └── demo.png ├── callback [回调] └── README.md ├── dispatch [分发] └── README.md ├── name pipe [命名管道] └── README.md ├── share memory [共享内存] └── README.md ├── socket [套接字] └── README.md └── trace cleaner [清跟踪] ├── Main.cpp ├── clean.hpp └── struct.h /.gitignore: -------------------------------------------------------------------------------- 1 | # Prerequisites 2 | *.d 3 | 4 | # Compiled Object files 5 | *.slo 6 | *.lo 7 | *.o 8 | *.obj 9 | 10 | # Precompiled Headers 11 | *.gch 12 | *.pch 13 | 14 | # Compiled Dynamic libraries 15 | *.so 16 | *.dylib 17 | *.dll 18 | 19 | # Fortran module files 20 | *.mod 21 | *.smod 22 | 23 | # Compiled Static libraries 24 | *.lai 25 | *.la 26 | *.a 27 | *.lib 28 | 29 | # Executables 30 | # *.exe 31 | *.out 32 | *.app 33 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 fengyihua 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 前言 2 | 3 | ## 说明 :green_book: 4 | 作者大学生一个,技术水平有限,而且学习方向也不是破解逆向相关的,有错误的地方还望大佬指点。 5 | 6 | ## 再次说明 :rotating_light: 7 | 教程以交流技术为主要目的,只学技术。 8 | 9 | ## 关于教程 :smile: 10 | 有很多东西作者是不懂的,毕竟作者当前水平也是处于[hello world]级别 11 | 12 | 所以项目后续会放其他大佬的教程链接 13 | 14 | ## 当前教程 :zap: 15 | 1.CSGO 16 | 17 | 2.GTA5 18 | 19 | 3.驱动 20 | 21 | 4.Apex Legends 22 | 23 | ## 未来计划 :pushpin: 24 | 其它游戏相关教程 25 | 26 | ## 联系作者 :memo: 27 | 以下情况的就不要加我啦 : 28 | 29 | 1 - 一上来就要我教你什么,人与人之间的礼貌呢 30 | 31 | 2 - 易语言问题,很抱歉我不会易语言 32 | 33 | 3 - 编译问题,有一种东西叫搜索引擎 34 | 35 | QQ : 2653290887 36 | 37 | ## 支持作者 :two_hearts: 38 | 给我点个Star咯 ^_^ 让我有更多动力给你们分享更多教程 39 | 40 | ## 防止游戏锁定电脑硬件 41 | [wmi-static-spoofer](https://github.com/Alex3434/wmi-static-spoofer) 42 | 43 | [hwid](https://github.com/btbd/hwid) 44 | 45 | [negativespoofer](https://github.com/SamuelTulach/negativespoofer) 46 | 47 | [mutant](https://github.com/SamuelTulach/mutante) 48 | 49 | [VolumeSerial](https://github.com/lallousx86/VolumeSerial) 50 | 51 | [hdd_serial_spoofer](https://github.com/namazso/hdd_serial_spoofer) 52 | 53 | ## 驱动映射程序 54 | [kdmapper](https://github.com/z175/kdmapper) 55 | 56 | [kdmapper-1803-1903](https://github.com/alxbrn/kdmapper-1803-1903) 57 | 58 | [kdmapper-1909](https://github.com/Dark7oveRR/kdmapper) 59 | 60 | [gdrv-loader](https://github.com/alxbrn/gdrv-loader) 61 | 62 | [EfiGuard](https://github.com/Mattiwatti/EfiGuard) 63 | 64 | [DSEFix](https://github.com/hfiref0x/DSEFix) 65 | 66 | [EfiDump](https://github.com/SamuelTulach/EfiDump) 67 | 68 | [TDL](https://github.com/hfiref0x/TDL) 69 | 70 | [UPGDSED](https://github.com/hfiref0x/UPGDSED) 71 | 72 | [Shark](https://github.com/9176324/Shark) 73 | 74 | [DisableWin10PatchguardPoc](https://github.com/killvxk/DisableWin10PatchguardPoc) 75 | 76 | [PPLKiller](https://github.com/Mattiwatti/PPLKiller) 77 | 78 | [ByePg](https://github.com/can1357/ByePg) 79 | 80 | [Stryker](https://github.com/hfiref0x/Stryker) 81 | 82 | ## 内核读写驱动 83 | [Kernel_Driver_Hack](https://github.com/TheCruZ/Kernel_Driver_Hack) 84 | 85 | [kernel-read-write-using-ioctl](https://github.com/beans42/kernel-read-write-using-ioctl) 86 | 87 | [km-um-communication](https://github.com/alxbrn/km-um-communication) 88 | 89 | [efi-memory](https://github.com/SamuelTulach/efi-memory) 90 | 91 | [KernelBhop](https://github.com/Zer0Mem0ry/KernelBhop) 92 | 93 | [EFI_Driver_Access](https://github.com/TheCruZ/EFI_Driver_Access) 94 | 95 | [Kernel-Bridge](https://github.com/HoShiMin/Kernel-Bridge) 96 | 97 | [memdrv](https://github.com/SamuelTulach/memdrv) 98 | 99 | [MdlReadWriteProcess-MDL](https://github.com/rring0/MdlReadWriteProcess-MDL-) 100 | 101 | ## DLL注入软件 102 | [Kernelmode-manual-mapping-through-IAT](https://github.com/mactec0/Kernelmode-manual-mapping-through-IAT) 103 | 104 | [modmap](https://github.com/btbd/modmap) 105 | 106 | [drvmap](https://github.com/not-wlan/drvmap) 107 | 108 | [smap](https://github.com/btbd/smap) 109 | 110 | ## 应用层内存读取技巧 111 | [access](https://github.com/btbd/access) 112 | 113 | [NoBastian](https://github.com/mlghuskie/NoBastian) 114 | 115 | [EUPMAccess](https://github.com/waryas/EUPMAccess/tree/master/EnablePhysicalMemory) 116 | 117 | [HLeaker](https://github.com/Schnocker/HLeaker) 118 | 119 | [vmread](https://github.com/h33p/vmread) 120 | 121 | [LSASS-Usermode-Bypass](https://github.com/ContionMig/LSASS-Usermode-Bypass) 122 | 123 | ## 特殊内存读写 124 | [dma_ip_drivers](https://github.com/Xilinx/dma_ip_drivers) 125 | 126 | [pcileech](https://github.com/ufrisk/pcileech) 127 | 128 | ## 绕过游戏反调试 129 | [ScyllaHide](https://github.com/x64dbg/ScyllaHide) 130 | 131 | [Mirage](https://github.com/stonedreamforest/Mirage) 132 | 133 | ## 反调试 134 | [Anti-debug](https://github.com/jguo52/Anti-debug) 135 | 136 | ## 挂钩IOCTL 137 | [CTL-hook](https://github.com/jguo52/IOCTL-hook) 138 | 139 | ## 异或字符串 140 | [xorstr](https://github.com/JustasMasiulis/xorstr) 141 | 142 | ## 驱动级隐藏 143 | [MasterHide](https://github.com/crvvdev/MasterHide) 144 | 145 | ## 驱动挂钩 146 | [KasperskyHook](https://github.com/iPower/KasperskyHook) 147 | 148 | ## 帮助库 149 | [nt_wrapper](https://github.com/JustasMasiulis/nt_wrapper) 150 | 151 | [KDU](https://github.com/hfiref0x/KDU) 152 | 153 | [TitanHide](https://github.com/mrexodia/TitanHide) 154 | 155 | [AntiCheat-Testing-Framework](https://github.com/niemand-sec/AntiCheat-Testing-Framework) 156 | 157 | [minhook](https://github.com/TsudaKageyu/minhook) 158 | 159 | [ghidra](https://github.com/NationalSecurityAgency/ghidra) 160 | 161 | [cutter](https://github.com/radareorg/cutter) 162 | 163 | [Detours](https://github.com/microsoft/Detours) 164 | 165 | [ReClass.NET](https://github.com/ReClassNET/ReClass.NET) 166 | 167 | ## 反汇编 168 | [zydis](https://github.com/zyantific/zydis) 169 | 170 | ## 挂钩库 171 | [HookLib](https://github.com/HoShiMin/HookLib) 172 | 173 | [DdiMon](https://github.com/tandasat/DdiMon) 174 | 175 | [HyperPlatform](https://github.com/tandasat/HyperPlatform) 176 | 177 | [kernelhook](https://github.com/adrianyy/kernelhook) 178 | 179 | [HyperBone](https://github.com/DarthTon/HyperBone) 180 | 181 | ## 字符串加密 182 | [skCrypter](https://github.com/skadro-official/skCrypter) 183 | 184 | ## 隐藏驱动 185 | [hidden](https://github.com/JKornev/hidden) 186 | 187 | [HideDriver](https://github.com/Sqdwr/HideDriver) 188 | 189 | ## 驱动枚举 190 | [WinObjEx64](https://github.com/hfiref0x/WinObjEx64) 191 | 192 | ## 清除跟踪痕迹 193 | [TraceCleaner](https://github.com/BadPlayer555/TraceCleaner) 194 | 195 | ## CSGO偏移 196 | [hazedumper](https://github.com/frk1/hazedumper/blob/master/csgo.hpp) 197 | 198 | ## CSGO作弊介绍 199 | [master-guide](https://github.com/csgohacks/master-guide) 200 | 201 | ## 绕过BattlEye检测 202 | [Splendid Implanter](https://github.com/haram/splendid_implanter) 203 | 204 | [BattlEye](https://github.com/Schnocker/NoEye) 205 | 206 | [BE-Bypass](https://github.com/UCRaptor/BE-Bypass) 207 | 208 | [BEDaisy](https://github.com/Aki2k/BEDaisy) 209 | 210 | ## 内核挂钩绘制 211 | [dxgkrnl_hook](https://github.com/vmcall/dxgkrnl_hook) 212 | 213 | ## UEFI 214 | [umap](https://github.com/btbd/umap) 215 | 216 | [dreamboot](https://github.com/quarkslab/dreamboot) 217 | 218 | ## 绕过EAC检测 219 | [EAC_dbp](https://github.com/Schnocker/EAC_dbp) 220 | 221 | [Eac-Bypass](https://github.com/Flashyyyyyy/Eac-Bypass) 222 | 223 | [EACReversing](https://github.com/adrianyy/EACReversing) 224 | 225 | [CVEAC-2020](https://github.com/thesecretclub/CVEAC-2020) 226 | 227 | ## 绕过VAC检测 228 | [VAC Bypass](https://github.com/danielkrupinski/VAC-Bypass) 229 | 230 | [VAC](https://github.com/danielkrupinski/VAC) 231 | 232 | [VAC Bypass Loader](https://github.com/danielkrupinski/VAC-Bypass-Loader) 233 | 234 | [vac3_inhibitor](https://github.com/zyhp/vac3_inhibitor) 235 | 236 | ## 逃离塔克夫辅助 237 | [Nathans-Tarkov-Radar-Public](https://github.com/CplNathan/Nathans-Tarkov-Radar-Public) 238 | 239 | ## CS:GO辅助 240 | [Osiris](https://github.com/danielkrupinski/Osiris) 241 | 242 | [RPM-WPM-project](https://github.com/mikeeek/RPM-WPM-project) 243 | 244 | [GarHal_CSGO](https://github.com/dretax/GarHal_CSGO) 245 | 246 | [heck_exe](https://github.com/h1ru5/heck_exe) 247 | 248 | [wok-csgo-sdk-v2](https://github.com/lagcomp/wok-csgo-sdk-v2) 249 | 250 | [SpyExternal1337hax](https://github.com/0TheSpy/SpyExternal1337hax) 251 | 252 | [NIXWARE-CSGO](https://github.com/Shaxzy/NIXWARE-CSGO) 253 | 254 | [Gladiatorcheatz-v2.1](https://github.com/sstokic-tgm/Gladiatorcheatz-v2.1) 255 | 256 | [norsefire](https://github.com/nbqofficial/norsefire) 257 | 258 | ## R6辅助 259 | [R6SDK](https://github.com/weak1337/R6SDK) 260 | 261 | [Internal-Rainbow-Six-Cheat](https://github.com/NMan1/Internal-Rainbow-Six-Cheat) 262 | 263 | ## APEX辅助 264 | [ApexGaming.py](https://github.com/AnusReaper/ApexGaming.py) 265 | 266 | [EzApexDMAAimbot](https://github.com/Y33Tcoder/EzApexDMAAimbot) 267 | 268 | ## GTA5辅助 269 | [gta5_cheats_1.50](https://github.com/FiYHer/gta5_cheats_1.50) 270 | 271 | [pHake](https://github.com/xhz8s/pHake) 272 | 273 | [subVerison_GTAV_Hack](https://github.com/AmazingPP/subVerison_GTAV_Hack) 274 | 275 | [GTA5_Cheats_Native_Menu](https://github.com/expvintl/GTA5_Cheats_Native_Menu) 276 | 277 | ## Pubg Mobile 278 | [pubg_mobile_memory_hacking_examples](https://github.com/atiksoftware/pubg_mobile_memory_hacking_examples) 279 | 280 | ## 相关网站 281 | 282 | [ 一号选手 - 英文 ](https://www.unknowncheats.me/forum/index.php) : 国外的全能型辅助论坛 283 | 284 | [ 二号选手 - 英文 ](https://guidedhacking.com/) : 真正的游戏作弊教程网站 285 | 286 | [ 三号选手 - 英文 ](https://void.to) : CSGO游戏的免费Hvh论坛 287 | 288 | -------------------------------------------------------------------------------- /[教程] [Guided Hacking] Counterstrike Global Offensive/README.md: -------------------------------------------------------------------------------- 1 | # [国外教程] 2 | 3 | 作者 : Guided Hacking 4 | 5 | 平台 : YouTube 6 | 7 | 语言 : C++ 8 | 9 | 说明 : 实在太多视频了,你们自己去这大佬主页找吧 10 | 11 | 教程 : :smile: 12 | 13 | ## 其它 14 | [How to solve Pride #1 CrackMe Tutorial - Beginner Level](https://youtu.be/H71G8ZRjWek) 15 | 16 | [HackTheBox Irked Walkthrough - UnrealIRCd Exploit](https://youtu.be/bab2t0QkZd8) 17 | 18 | [How to Unpack Malware, How to use Imprec, How to find OEP](https://youtu.be/Er0_FkLUk3U) 19 | 20 | [How to Hack Gwent - Witcher 3 Cheat Engine Tutorial](https://youtu.be/9mGdPevwwXw) 21 | 22 | [Practical Reverse Engineering 2 - Pg 35 Exercise 1 Sample J](https://youtu.be/5_LHA3sl7-4) 23 | 24 | [How to Hack MineSweeper x32dbg Reversing Tutorial](https://youtu.be/ixB7iaea4l0) 25 | 26 | [Practical Malware Analysis Walkthrough - Chapter 1 Labs](https://youtu.be/lwUve1VdFYs) 27 | 28 | [Kernel 2 - Usermode Communication - IOCTL Tutorial](https://youtu.be/eumG222Efzs) 29 | 30 | [HackTheBox Giddy Walkthrough Tutorial - Unifi Video Exploit](https://youtu.be/phgxctCHyHw) 31 | 32 | [Practical Reverse Engineering Exercise 1 Solution Page 11](https://youtu.be/1zY7lbcbBZQ) 33 | 34 | [HackTheBox Blue Walkthrough Eternal Blue Exploit MS17-010](https://youtu.be/sx9daqxvrrA) 35 | 36 | [Simple Wordpress Web Shell Tutorial](https://youtu.be/XHShse4z6ds) 37 | 38 | ## OpenGL 39 | 40 | [C++ Internal Trampoline Hook Tutorial - OpenGL Hook](https://youtu.be/HLh_9qOkzy0) 41 | 42 | [How to make an OpenGL ESP Tutorial](https://youtu.be/kGDKQXgxIrY) 43 | 44 | [OpenGL Hook - SwapBuffers Hook Tutorial - Drawing & Text 1/2](https://youtu.be/dEgva5-OsSY) 45 | 46 | [OpenGL Hook - SwapBuffers Hook Tutorial - Drawing & Text 2/2](https://youtu.be/6JV0dmLWMNs) 47 | 48 | 49 | ## CS420 50 | 51 | [CS420 - 1 Game Hacking Course Introduction](https://youtu.be/hj4rhfnikVs) 52 | 53 | [CS420 - 2 Memory Editing 1 - Game Hacking Course](https://youtu.be/xOBE_vWDX_I) 54 | 55 | [CS420 - 3 Base Systems - Hex, Decimal & Binary](https://youtu.be/nA7o5kmH6wg) 56 | 57 | [CS420 - 4 - How to Hex Edit Games - Game Hacking Course](https://youtu.be/EpcK8uk7lcY) 58 | 59 | [CS420 - 5 - Memory Editing & Data Types - Game Hacking Course](https://youtu.be/6KNNRqjpgGE) 60 | 61 | [CS420 6 - What is Virtual Memory ? Full Course](https://youtu.be/aPNcEckD1Qk) 62 | 63 | [CS420 7 - Virtual Memory & Multilevel Pointers Tutorial](https://youtu.be/_W0xdVO8-j4) 64 | 65 | ## Cheat Engine 66 | 67 | [Cheat Engine Tutorial Guide 1/3 Steps 1-5](https://youtu.be/Nib69uZJCaA) 68 | 69 | [Cheat Engine Tutorial Guide 2/3 Steps 6-9 Pointers and Code Injection](https://youtu.be/yjdSxL2DWfE) 70 | 71 | [Cheat Engine Tutorial Guide 3/3 Tutorial Games](https://youtu.be/H9_0exi5tCU) 72 | 73 | [How To Find Offsets, Entity Addresses & Pointers](https://youtu.be/YaFlh2pIKAg) 74 | 75 | [Cheat Engine How to Pointer Scan with Pointermaps](https://youtu.be/nQ2F2iW80Fk) 76 | 77 | [How to Hack Any Game C++ External Trainer Assault Cube 1/2](https://youtu.be/wiX5LmdD5yk) 78 | 79 | [How to Hack Any Game C++ External Trainer Assault Cube 2/2](https://youtu.be/UMt1daXknes) 80 | 81 | ## Tibia 82 | 83 | [OllyDBG Tibia Reverse Engineering & Function Calling Tutorial 1/3](https://youtu.be/zldW5gBc-JE) 84 | 85 | [How to make a Tibia Bot - MMO Botting Tutorial by Petko123 3/3](https://youtu.be/cp7DW6-mKc4) 86 | 87 | [Reverse Engineering Tibia Packet Function - x64dbg Tutorial 2/3](https://youtu.be/wVhuhYiA8-8) 88 | 89 | ## CSGO 90 | 91 | [How To Find CSGO NetVar Offsets Tutorial with IDA Pro](https://youtu.be/QdG9-jxOf8Y) 92 | 93 | [CSGO How to find m_bDormant offset tutorial bDormant](https://youtu.be/YCv3sqcPb6E) 94 | 95 | [Cody's C++ CSGO Bunnyhop Tutorial Part1 External](https://youtu.be/jO5GUhwd86U) 96 | 97 | [Cody's C++ CSGO Bunnyhop Tutorial Part2 Internal](https://youtu.be/fxqa5pBvnIU) 98 | 99 | [Cody CSGO Triggerbot Tutorial External Pt1](https://youtu.be/zEK1mF-DcWk) 100 | 101 | [Cody's CSGO Triggerbot Tutorial External Pt2](https://youtu.be/3eNNQD8c1W8) 102 | 103 | [How to Hack CSGO - CSGO Triggerbot Tutorial External Part3](https://youtu.be/XaOwqvEdK6Y) 104 | 105 | [How to Hack CSGO - C++ External CSGO Anti Flash Tutorial](https://youtu.be/PWhv0C0jD2k) 106 | 107 | [Cody's External C++ CSGO GlowHack Tutorial](https://youtu.be/jutZzuvX8Qs) 108 | 109 | [Cody's External C++ CSGO GlowHack Tutorial Pt.2](https://youtu.be/UWt3KMRXtEg) 110 | 111 | [Cody's External C++ CSGO Glow Tutorial Pt.3](https://youtu.be/SrzFQ_ab8ug) 112 | 113 | [C++ CSGO External bSpotted Hack - 2D Radar Tutorial](https://youtu.be/5VOkRJk1GVg) 114 | 115 | [D3D9 CSGO ESP Tutorial 1 - EndScene Hook Tutorial - esp1z1](https://youtu.be/7QDkceeykbI) 116 | 117 | [D3D9 CSGO ESP Tutorial 2 - EntityList & Snap Line ESP Tutorial](https://youtu.be/jnUZT2gWWuE) 118 | 119 | [D3D9 CSGO ESP Tutorial 3 - ESP Boxes, Health Bars & Recoil Crosshair](https://youtu.be/FXRXL7lQLTg) 120 | 121 | [D3D9 CSGO ESP Tutorial 4 - 3D Box ESP, Health & More](https://youtu.be/uwyNvHdLOmo) 122 | 123 | [D3D9 CSGO ESP Tutorial 5 - Direct3D Menu & More](https://youtu.be/FjRhxSiWA_Q) 124 | 125 | [CSGO Netvar Manager Tutorial - How to get Netvar offsets](https://youtu.be/hBA-_aAETX4) 126 | 127 | [CSGO CreateInterface - How to get Interfaces - GetInterface](https://youtu.be/HHHlNdmzYqA) 128 | 129 | [CSGO How to Call TraceRay - IEngineTrace Interface Tutorial](https://youtu.be/sv79Mgt_FmY) 130 | 131 | [CSGO How to Find TraceRay / TraceLine - Reversing Tutorial](https://youtu.be/hZQzJkzmPG4) 132 | 133 | [dwForceJump Bitfields & BitFlags - CSGO BunnyHop Tutorial - Explained](https://youtu.be/igtUR9on0NE) 134 | 135 | [C++ CSGO RCS Hack - Recoil Control System Tutorial - Quick & EZ](https://youtu.be/i99MqX5BjlI) 136 | 137 | [How to Find the ViewMatrix Offset CSGO](https://youtu.be/crT9zGviqVs) 138 | 139 | [CSGO Aimbot Tutorial & CalcAngle Explained](https://youtu.be/sDd8aBCCBbA) 140 | 141 | [How to Find and Reverse the CSGO EntityList with ReClass.NET](https://youtu.be/oXlOboQURy0) 142 | 143 | ## 上古卷轴5 144 | 145 | [C++ Skyrim Mods Part1: Introduction & Overlay](https://youtu.be/i8Cn7fydNUA) 146 | 147 | [C++ Skyrim Mods Part2: How to Find Entitylist & Hooking](https://youtu.be/aYN7IjGubuY) 148 | 149 | [C++ Skyrim Mods Part3: Writing the ESP](https://youtu.be/jOwTVLqaEsw) 150 | 151 | [C++ Skyrim Hacks Part4: NoClip Hack Tutorial Part 1](https://youtu.be/-ZJyAWDQXzM) 152 | 153 | [C++ Skyrim Mods Part5: NoClip Part 2](https://youtu.be/W0IgSTlGJTY) 154 | 155 | [C++ Skyrim Mods Part6: Map Teleport & ASM](https://youtu.be/NzyFl4_LM3M) 156 | 157 | [C++ Skyrim Mods Part 7: Find Bones & Write ESP](https://youtu.be/JtWPpbLAh8Q) 158 | 159 | ## DLL注入 160 | 161 | [Manual Mapping DLL Injection Tutorial - How to Manual Map 1of4](https://youtu.be/qzZTXcBu3cE) 162 | 163 | [Manual Mapping DLL Injection Tutorial 2of4](https://youtu.be/EXRm7tCOwGg) 164 | 165 | [Manual Mapping DLL Injection Tutorial 3of4](https://youtu.be/c8B--5lKbNg) 166 | 167 | [Manual Mapping DLL Injection Tutorial 4of4](https://youtu.be/_7SvkCGE67M) 168 | -------------------------------------------------------------------------------- /[教程] [Zer0Mem0ry] Counterstrike Global Offensive/README.md: -------------------------------------------------------------------------------- 1 | # [国外教程] 2 | 3 | 作者 : Zer0Mem0ry 4 | 5 | 平台 : YouTube 6 | 7 | 语言 : C++ 8 | 9 | 教程 : :smile: 10 | 11 | [C/C++ — Manual Dll Injection | Manual Mapping](https://youtu.be/X393OZqSPUk) 12 | 13 | [Dll Injection Explained - how it works + source code](https://youtu.be/IBwoVUR1gt8) 14 | 15 | [How Function Hooking / Detouring Works](https://youtu.be/b1ahj347pDc) 16 | 17 | [C/C++ Memory Hacking — Function Hooking / Detouring](https://youtu.be/JixHeLgQwHM) 18 | 19 | [C/C++ Kernel Mode / Game Hacking — CS:GO Undetectable External Bunnyhop! (VAC Bypass)](https://youtu.be/sJdBtPosWQs) 20 | 21 | [C/C++ Kernel Mode — Communcation From User space To Kernel Space (IOCTL)](https://youtu.be/1JWNrAk-Kx0) 22 | 23 | [C/C++ Cryptography — Simple CRC32 Brute Force Cracking Algorithm](https://youtu.be/yz4n3c_H1xk) 24 | 25 | [C/C++ Kernel Mode — Read/Write Process' Memory From Driver](https://youtu.be/1HVJqyTOL2Q) 26 | 27 | [Reverse-Engineering — Crack / Patch Program | Bypass Security Checks (IDA Cracking Part 1)](https://youtu.be/3d5Ler_8cHg) 28 | 29 | [Reverse-Engineering — Cracking a Program In Practice (IDA Cracking Part 2)](https://youtu.be/wq6fk5oDbVg) 30 | 31 | [C/C++ Prank Program — Screen Melting Effect](https://youtu.be/VrBxr0PD4xo) 32 | 33 | [C/C++ Disable Address Space Layout Randomization (ASLR) & DEP Of Another Program](https://youtu.be/9nq0RHfrAi4) 34 | 35 | [C/C++ Game Hacking — Simple Wallhack (CS:GO)](https://youtu.be/JPlAqPb4izs) 36 | 37 | [C/C++ Memory Hacking — Powerful Virus | Overwrite MBR](https://youtu.be/2Gfmw_6sYz4) 38 | 39 | [C/C++ Malware — Simple Keylogger | Log Keystrokes](https://youtu.be/8X2UOfkOuZY) 40 | 41 | [C/C++ Game Hacking — Simple Triggerbot (CS:GO)](https://youtu.be/QFWqjpceiuw) 42 | 43 | [Reverse Engineering — Decompiling A Virus To C Source Code (IDA Pro)](https://youtu.be/gYkDcUO9otQ) 44 | 45 | [C/C++ Game Hacking – Perfect Bunny Hop (CS:GO)](https://youtu.be/q78Fh1mrOU4) 46 | 47 | [C/C++ Memory Hacking — Self Modifying Code | Encrypt Memory At Runtime](https://youtu.be/MBvdWULRBU8) 48 | 49 | [C/C++ Memory Hacking — Code Cave | Inject function to a process](https://youtu.be/0NwlWaT9NEY) 50 | -------------------------------------------------------------------------------- /[教程] [本人] Apex Legends/README.md: -------------------------------------------------------------------------------- 1 | # 前言 2 | 3 | [apex dump](https://github.com/CasualX/pelite/tree/master/examples/apex) 4 | 5 | 这个我怎么搞都搞不过,老是编译失败,会rust的兄弟可以自己去试试看 6 | 7 | 搞不过,还是要自己写一个sig匹配,无语..... 8 | 9 | 在这里说一下过EAC的办法吧(我自己现在用的,没被封禁) 10 | 11 | 1.bypass pg(没过这个后面很难搞的,动不动就是0x109蓝屏) 12 | 13 | 2.read/write process memory driver(没读写驱动就没戏呀,我用MDL方式读写内存的) 14 | 15 | 3.hide driver(把驱动隐藏了为妙,不然不太稳感觉) 16 | 17 | 4.clear all trace(比如你使用了漏洞驱动/泄露签名证书驱动....这些痕迹都要清空了去) 18 | 19 | 5.hdd spoofer(我的电脑被锁硬件了,要改) 20 | 21 | 6.over(相对安全了) 22 | -------------------------------------------------------------------------------- /[教程] [本人] Apex Legends/[dump] [offsets] [tools]/dump_apex.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Apex Legends/[dump] [offsets] [tools]/dump_apex.exe -------------------------------------------------------------------------------- /[教程] [本人] Apex Legends/[dump] [offsets] [tools]/get_apex_offsets.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Apex Legends/[dump] [offsets] [tools]/get_apex_offsets.exe -------------------------------------------------------------------------------- /[教程] [本人] Apex Legends/[dump]/dump_apex.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Apex Legends/[dump]/dump_apex.exe -------------------------------------------------------------------------------- /[教程] [本人] Apex Legends/[dump]/main.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Apex Legends/[dump]/main.cpp -------------------------------------------------------------------------------- /[教程] [本人] Apex Legends/[dump]/memory.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Apex Legends/[dump]/memory.hpp -------------------------------------------------------------------------------- /[教程] [本人] Apex Legends/[offsets] [pelite]/README.md: -------------------------------------------------------------------------------- 1 | # 前言 2 | 3 | # 关于如何使用rust的pelite库解析apex的偏移与基址 4 | 5 | 因为我没有学过rust语言嘛,所以刚开始的时候都搞不过 6 | 7 | 搞了一天,各种测试,还是各种错误爆出来,我都无语了 8 | 9 | 后面去作者的github提问了一下,简直nice,一语道破呀 10 | 11 | 原因就是版本问题!!!!! 12 | 13 | 不能使用v0.8版本,前面的版本不支持,也爆很多错 14 | 15 | 我根据作者的提示,直接就用了v0.9的版本,简直nice,没有报错了 16 | 17 | 接下来我就说一下怎么个操作法 : 18 | 19 | 1.下载rust并进行安装(自己百度) 20 | 21 | 2.解压pelite-0.9.0后,进入该目录 22 | 23 | 3.进入examples的目录,你会看到apex/apisetschema/csgo/tf2这几个文件夹和其它一些文件 24 | 25 | 4.把rs类型的文件全部删除,文件夹不能删除啊 26 | 27 | 5.然后进入apex文件夹,把文件夹里面的rs文件全部复制出来(复制到examples文件夹里面) 28 | 29 | 6.回到pelite-0.9.0文件目录下,打开cmd 30 | 31 | 7.输入命令 cargo run --example main 32 | 33 | 8.OK,现在应该就能编译成功了,有了一个exe文件(就在pelite-0.9.0目录下,自己查找) 34 | 35 | 9.如何就是输入命令 main r5apex.bin > stdout.md 36 | 37 | 10.现在就能得到偏移了 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /[教程] [本人] Apex Legends/[offsets] [pelite]/pelite-0.9.0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Apex Legends/[offsets] [pelite]/pelite-0.9.0.zip -------------------------------------------------------------------------------- /[教程] [本人] Apex Legends/[辉光] [自瞄] [原始版本]/cheats.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Apex Legends/[辉光] [自瞄] [原始版本]/cheats.hpp -------------------------------------------------------------------------------- /[教程] [本人] Apex Legends/[辉光] [自瞄] [原始版本]/main.cpp: -------------------------------------------------------------------------------- 1 | #include "overlay.hpp" 2 | 3 | #include 4 | 5 | #include 6 | #include 7 | 8 | bool g_thread = true; 9 | 10 | void _cdecl glow_thread(void* data) 11 | { 12 | while (g_thread) 13 | { 14 | // 辉光 15 | glow_players(true); 16 | 17 | Sleep(1); 18 | } 19 | 20 | glow_players(false); 21 | return; 22 | } 23 | 24 | void _cdecl aim_thread(void* data) 25 | { 26 | while (g_thread) 27 | { 28 | // 自瞄玩家 29 | bool state = (GetAsyncKeyState(VK_LBUTTON) & 0x8000) || (GetAsyncKeyState(VK_CONTROL) & 0x8000); 30 | if (state) aimbot_players(); 31 | 32 | Sleep(1); 33 | } 34 | } 35 | 36 | int main(int argc, char* argv[]) 37 | { 38 | HANDLE hDriver = open_device(); 39 | if (hDriver == 0) return 0; 40 | 41 | if (initialize() == false) return 0; 42 | 43 | std::cout << _beginthread(glow_thread, 0, nullptr) << std::endl; 44 | std::cout << _beginthread(aim_thread, 0, nullptr) << std::endl; 45 | 46 | while (true) 47 | { 48 | std::cout << "wait for you input : " << std::endl; 49 | std::string line; 50 | getline(std::cin, line); 51 | 52 | if (line.size()) 53 | if (line[0] == 'q' || line[0] == 'Q') break; 54 | } 55 | 56 | g_thread = false; 57 | 58 | // 关闭辉光 59 | glow_players(false); 60 | 61 | return 0; 62 | } 63 | 64 | int __stdcall WinMain__( 65 | _In_ HINSTANCE hInstance, 66 | _In_opt_ HINSTANCE hPrevInstance, 67 | _In_ LPSTR lpCmdLine, 68 | _In_ int nShowCmd) 69 | { 70 | HANDLE hDriver = open_device(); 71 | if (hDriver == 0) return 0; 72 | 73 | HWND hWnd = FindWindowA("Respawn001", "Apex Legends"); 74 | if (hWnd) 75 | { 76 | overlay* g = new overlay(hWnd); 77 | g->create_overlay_window(); 78 | g->initialize(); 79 | g->message_handle(); 80 | } 81 | 82 | return 0; 83 | } -------------------------------------------------------------------------------- /[教程] [本人] Apex Legends/[辉光] [自瞄] [原始版本]/memory.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Apex Legends/[辉光] [自瞄] [原始版本]/memory.hpp -------------------------------------------------------------------------------- /[教程] [本人] Apex Legends/[辉光] [自瞄] [原始版本]/overlay.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Apex Legends/[辉光] [自瞄] [原始版本]/overlay.hpp -------------------------------------------------------------------------------- /[教程] [本人] Apex Legends/[辉光] [自瞄] [原始版本]/vectors.hpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | #define Assert( _exp ) ((void)0) 5 | 6 | #define FastSqrt(x) (sqrt)(x) 7 | 8 | #define M_PI 3.14159265358979323846 // matches value in gcc v2 math.h 9 | 10 | #define M_PI_F ((float)(M_PI)) // Shouldn't collide with anything. 11 | 12 | #define M_PHI 1.61803398874989484820 // golden ratio 13 | 14 | // NJS: Inlined to prevent floats from being autopromoted to doubles, as with the old system. 15 | #ifndef RAD2DEG 16 | #define RAD2DEG( x ) ( (float)(x) * (float)(180.f / M_PI_F) ) 17 | #endif 18 | 19 | #ifndef DEG2RAD 20 | #define DEG2RAD( x ) ( (float)(x) * (float)(M_PI_F / 180.f) ) 21 | #endif 22 | 23 | // MOVEMENT INFO 24 | enum 25 | { 26 | PITCH = 0, // up / down 27 | YAW, // left / right 28 | ROLL // fall over 29 | }; 30 | 31 | // decls for aligning data 32 | 33 | #define DECL_ALIGN(x) __attribute__((aligned(x))) 34 | 35 | #define ALIGN16 DECL_ALIGN(16) 36 | #define VALVE_RAND_MAX 0x7fff 37 | #define VectorExpand(v) (v).x, (v).y, (v).z 38 | 39 | struct matrix3x4_t 40 | { 41 | matrix3x4_t() {} 42 | matrix3x4_t( 43 | float m00, float m01, float m02, float m03, 44 | float m10, float m11, float m12, float m13, 45 | float m20, float m21, float m22, float m23) 46 | { 47 | m_flMatVal[0][0] = m00; m_flMatVal[0][1] = m01; m_flMatVal[0][2] = m02; m_flMatVal[0][3] = m03; 48 | m_flMatVal[1][0] = m10; m_flMatVal[1][1] = m11; m_flMatVal[1][2] = m12; m_flMatVal[1][3] = m13; 49 | m_flMatVal[2][0] = m20; m_flMatVal[2][1] = m21; m_flMatVal[2][2] = m22; m_flMatVal[2][3] = m23; 50 | } 51 | 52 | float* operator[](int i) { Assert((i >= 0) && (i < 3)); return m_flMatVal[i]; } 53 | const float* operator[](int i) const { Assert((i >= 0) && (i < 3)); return m_flMatVal[i]; } 54 | float* Base() { return &m_flMatVal[0][0]; } 55 | const float* Base() const { return &m_flMatVal[0][0]; } 56 | 57 | float m_flMatVal[3][4]; 58 | }; 59 | 60 | class VMatrix 61 | { 62 | public: 63 | 64 | VMatrix() {} 65 | VMatrix( 66 | float m00, float m01, float m02, float m03, 67 | float m10, float m11, float m12, float m13, 68 | float m20, float m21, float m22, float m23, 69 | float m30, float m31, float m32, float m33 70 | ) { 71 | m[0][0] = m00; 72 | m[0][1] = m01; 73 | m[0][2] = m02; 74 | m[0][3] = m03; 75 | 76 | m[1][0] = m10; 77 | m[1][1] = m11; 78 | m[1][2] = m12; 79 | m[1][3] = m13; 80 | 81 | m[2][0] = m20; 82 | m[2][1] = m21; 83 | m[2][2] = m22; 84 | m[2][3] = m23; 85 | 86 | m[3][0] = m30; 87 | m[3][1] = m31; 88 | m[3][2] = m32; 89 | m[3][3] = m33; 90 | } 91 | 92 | // array access 93 | inline float* operator[](int i) 94 | { 95 | return m[i]; 96 | } 97 | 98 | inline const float* operator[](int i) const 99 | { 100 | return m[i]; 101 | } 102 | 103 | // Get a pointer to m[0][0] 104 | inline float* Base() 105 | { 106 | return &m[0][0]; 107 | } 108 | 109 | inline const float* Base() const 110 | { 111 | return &m[0][0]; 112 | } 113 | 114 | public: 115 | // The matrix. 116 | float m[4][4]; 117 | }; 118 | 119 | class Vector 120 | { 121 | public: 122 | float x, y, z; 123 | Vector(void); 124 | Vector(float X, float Y, float Z); 125 | void Init(float ix = 0.0f, float iy = 0.0f, float iz = 0.0f); 126 | bool IsValid() const; 127 | float operator[](int i) const; 128 | float& operator[](int i); 129 | inline void Zero(); 130 | bool operator==(const Vector& v) const; 131 | bool operator!=(const Vector& v) const; 132 | inline Vector& operator+=(const Vector& v); 133 | inline Vector& operator-=(const Vector& v); 134 | inline Vector& operator*=(const Vector& v); 135 | inline Vector& operator*=(float s); 136 | inline Vector& operator/=(const Vector& v); 137 | inline Vector& operator/=(float s); 138 | inline Vector& operator+=(float fl); 139 | inline Vector& operator-=(float fl); 140 | inline float Length() const; 141 | inline float LengthSqr(void) const 142 | { 143 | return (x * x + y * y + z * z); 144 | } 145 | bool IsZero(float tolerance = 0.01f) const 146 | { 147 | return (x > -tolerance && x < tolerance && 148 | y > -tolerance && y < tolerance && 149 | z > -tolerance && z < tolerance); 150 | } 151 | Vector Normalize(); 152 | void NormalizeInPlace(); 153 | inline float DistTo(const Vector& vOther) const; 154 | inline float DistToSqr(const Vector& vOther) const; 155 | float Dot(const Vector& vOther) const; 156 | float Length2D(void) const; 157 | float Length2DSqr(void) const; 158 | Vector& operator=(const Vector& vOther); 159 | Vector operator-(void) const; 160 | Vector operator+(const Vector& v) const; 161 | Vector operator-(const Vector& v) const; 162 | Vector operator*(const Vector& v) const; 163 | Vector operator/(const Vector& v) const; 164 | Vector operator*(float fl) const; 165 | Vector operator/(float fl) const; 166 | // Base address... 167 | float* Base(); 168 | float const* Base() const; 169 | }; 170 | 171 | //=============================================== 172 | inline void Vector::Init(float ix, float iy, float iz) 173 | { 174 | x = ix; y = iy; z = iz; 175 | } 176 | //=============================================== 177 | inline Vector::Vector(float X, float Y, float Z) 178 | { 179 | x = X; y = Y; z = Z; 180 | } 181 | //=============================================== 182 | inline Vector::Vector(void) { Zero(); } 183 | //=============================================== 184 | inline void Vector::Zero() 185 | { 186 | x = y = z = 0.0f; 187 | } 188 | //=============================================== 189 | inline void VectorClear(Vector& a) 190 | { 191 | a.x = a.y = a.z = 0.0f; 192 | } 193 | //=============================================== 194 | inline Vector& Vector::operator=(const Vector& vOther) 195 | { 196 | x = vOther.x; y = vOther.y; z = vOther.z; 197 | return *this; 198 | } 199 | //=============================================== 200 | inline float& Vector::operator[](int i) 201 | { 202 | Assert((i >= 0) && (i < 3)); 203 | return ((float*)this)[i]; 204 | } 205 | //=============================================== 206 | inline float Vector::operator[](int i) const 207 | { 208 | Assert((i >= 0) && (i < 3)); 209 | return ((float*)this)[i]; 210 | } 211 | //=============================================== 212 | inline bool Vector::operator==(const Vector& src) const 213 | { 214 | return (src.x == x) && (src.y == y) && (src.z == z); 215 | } 216 | //=============================================== 217 | inline bool Vector::operator!=(const Vector& src) const 218 | { 219 | return (src.x != x) || (src.y != y) || (src.z != z); 220 | } 221 | //=============================================== 222 | inline void VectorCopy(const Vector& src, Vector& dst) 223 | { 224 | dst.x = src.x; 225 | dst.y = src.y; 226 | dst.z = src.z; 227 | } 228 | //=============================================== 229 | inline Vector& Vector::operator+=(const Vector& v) 230 | { 231 | x += v.x; y += v.y; z += v.z; 232 | return *this; 233 | } 234 | //=============================================== 235 | inline Vector& Vector::operator-=(const Vector& v) 236 | { 237 | x -= v.x; y -= v.y; z -= v.z; 238 | return *this; 239 | } 240 | //=============================================== 241 | inline Vector& Vector::operator*=(float fl) 242 | { 243 | x *= fl; 244 | y *= fl; 245 | z *= fl; 246 | 247 | return *this; 248 | } 249 | //=============================================== 250 | inline Vector& Vector::operator*=(const Vector& v) 251 | { 252 | x *= v.x; 253 | y *= v.y; 254 | z *= v.z; 255 | 256 | return *this; 257 | } 258 | //=============================================== 259 | inline Vector& Vector::operator+=(float fl) 260 | { 261 | x += fl; 262 | y += fl; 263 | z += fl; 264 | 265 | return *this; 266 | } 267 | //=============================================== 268 | inline Vector& Vector::operator-=(float fl) 269 | { 270 | x -= fl; 271 | y -= fl; 272 | z -= fl; 273 | 274 | return *this; 275 | } 276 | //=============================================== 277 | inline Vector& Vector::operator/=(float fl) 278 | { 279 | Assert(fl != 0.0f); 280 | float oofl = 1.0f / fl; 281 | x *= oofl; 282 | y *= oofl; 283 | z *= oofl; 284 | 285 | return *this; 286 | } 287 | //=============================================== 288 | inline Vector& Vector::operator/=(const Vector& v) 289 | { 290 | Assert(v.x != 0.0f && v.y != 0.0f && v.z != 0.0f); 291 | x /= v.x; 292 | y /= v.y; 293 | z /= v.z; 294 | 295 | return *this; 296 | } 297 | //=============================================== 298 | inline float Vector::Length(void) const 299 | { 300 | float root = 0.0f; 301 | 302 | float sqsr = x * x + y * y + z * z; 303 | 304 | root = sqrt(sqsr); 305 | 306 | return root; 307 | } 308 | //=============================================== 309 | inline float Vector::Length2D(void) const 310 | { 311 | float root = 0.0f; 312 | 313 | float sqst = x * x + y * y; 314 | 315 | root = sqrt(sqst); 316 | 317 | return root; 318 | } 319 | //=============================================== 320 | inline float Vector::Length2DSqr(void) const 321 | { 322 | return (x * x + y * y); 323 | } 324 | //=============================================== 325 | inline Vector CrossProduct(const Vector& a, const Vector& b) 326 | { 327 | return Vector(a.y * b.z - a.z * b.y, a.z * b.x - a.x * b.z, a.x * b.y - a.y * b.x); 328 | } 329 | //=============================================== 330 | float Vector::DistTo(const Vector& vOther) const 331 | { 332 | Vector delta; 333 | 334 | delta.x = x - vOther.x; 335 | delta.y = y - vOther.y; 336 | delta.z = z - vOther.z; 337 | 338 | return delta.Length(); 339 | } 340 | float Vector::DistToSqr(const Vector& vOther) const 341 | { 342 | Vector delta; 343 | 344 | delta.x = x - vOther.x; 345 | delta.y = y - vOther.y; 346 | delta.z = z - vOther.z; 347 | 348 | return delta.LengthSqr(); 349 | } 350 | //=============================================== 351 | inline Vector Vector::Normalize() 352 | { 353 | Vector vector; 354 | float length = this->Length(); 355 | 356 | if (length != 0) 357 | { 358 | vector.x = x / length; 359 | vector.y = y / length; 360 | vector.z = z / length; 361 | } 362 | else 363 | { 364 | vector.x = vector.y = 0.0f; vector.z = 1.0f; 365 | } 366 | 367 | return vector; 368 | } 369 | //=============================================== 370 | inline void Vector::NormalizeInPlace() 371 | { 372 | Vector& v = *this; 373 | 374 | float iradius = 1.f / (this->Length() + 1.192092896e-07F); //FLT_EPSILON 375 | 376 | v.x *= iradius; 377 | v.y *= iradius; 378 | v.z *= iradius; 379 | } 380 | //=============================================== 381 | inline float VectorNormalize(Vector& v) 382 | { 383 | Assert(v.IsValid()); 384 | float l = v.Length(); 385 | if (l != 0.0f) 386 | { 387 | v /= l; 388 | } 389 | else 390 | { 391 | // FIXME: 392 | // Just copying the existing implemenation; shouldn't res.z == 0? 393 | v.x = v.y = 0.0f; v.z = 1.0f; 394 | } 395 | return l; 396 | } 397 | //=============================================== 398 | inline float VectorNormalize(float* v) 399 | { 400 | return VectorNormalize(*(reinterpret_cast(v))); 401 | } 402 | //=============================================== 403 | inline Vector Vector::operator+(const Vector& v) const 404 | { 405 | Vector res; 406 | res.x = x + v.x; 407 | res.y = y + v.y; 408 | res.z = z + v.z; 409 | return res; 410 | } 411 | 412 | //=============================================== 413 | inline Vector Vector::operator-(const Vector& v) const 414 | { 415 | Vector res; 416 | res.x = x - v.x; 417 | res.y = y - v.y; 418 | res.z = z - v.z; 419 | return res; 420 | } 421 | //=============================================== 422 | inline Vector Vector::operator*(float fl) const 423 | { 424 | Vector res; 425 | res.x = x * fl; 426 | res.y = y * fl; 427 | res.z = z * fl; 428 | return res; 429 | } 430 | //=============================================== 431 | inline Vector Vector::operator*(const Vector& v) const 432 | { 433 | Vector res; 434 | res.x = x * v.x; 435 | res.y = y * v.y; 436 | res.z = z * v.z; 437 | return res; 438 | } 439 | //=============================================== 440 | inline Vector Vector::operator/(float fl) const 441 | { 442 | Vector res; 443 | res.x = x / fl; 444 | res.y = y / fl; 445 | res.z = z / fl; 446 | return res; 447 | } 448 | //=============================================== 449 | inline Vector Vector::operator/(const Vector& v) const 450 | { 451 | Vector res; 452 | res.x = x / v.x; 453 | res.y = y / v.y; 454 | res.z = z / v.z; 455 | return res; 456 | } 457 | inline float Vector::Dot(const Vector& vOther) const 458 | { 459 | const Vector& a = *this; 460 | 461 | return(a.x * vOther.x + a.y * vOther.y + a.z * vOther.z); 462 | } 463 | 464 | //----------------------------------------------------------------------------- 465 | // length 466 | //----------------------------------------------------------------------------- 467 | 468 | inline float VectorLength(const Vector& v) 469 | { 470 | return (float)FastSqrt(v.x * v.x + v.y * v.y + v.z * v.z); 471 | } 472 | 473 | //VECTOR SUBTRAC 474 | inline void VectorSubtract(const Vector& a, const Vector& b, Vector& c) 475 | { 476 | c.x = a.x - b.x; 477 | c.y = a.y - b.y; 478 | c.z = a.z - b.z; 479 | } 480 | 481 | //VECTORADD 482 | inline void VectorAdd(const Vector& a, const Vector& b, Vector& c) 483 | { 484 | c.x = a.x + b.x; 485 | c.y = a.y + b.y; 486 | c.z = a.z + b.z; 487 | } 488 | 489 | //----------------------------------------------------------------------------- 490 | // Base address... 491 | //----------------------------------------------------------------------------- 492 | inline float* Vector::Base() 493 | { 494 | return (float*)this; 495 | } 496 | 497 | inline float const* Vector::Base() const 498 | { 499 | return (float const*)this; 500 | } 501 | 502 | inline void VectorMAInline(const float* start, float scale, const float* direction, float* dest) 503 | { 504 | dest[0] = start[0] + direction[0] * scale; 505 | dest[1] = start[1] + direction[1] * scale; 506 | dest[2] = start[2] + direction[2] * scale; 507 | } 508 | 509 | inline void VectorMAInline(const Vector& start, float scale, const Vector& direction, Vector& dest) 510 | { 511 | dest.x = start.x + direction.x * scale; 512 | dest.y = start.y + direction.y * scale; 513 | dest.z = start.z + direction.z * scale; 514 | } 515 | 516 | inline void VectorMA(const Vector& start, float scale, const Vector& direction, Vector& dest) 517 | { 518 | VectorMAInline(start, scale, direction, dest); 519 | } 520 | 521 | inline void VectorMA(const float* start, float scale, const float* direction, float* dest) 522 | { 523 | VectorMAInline(start, scale, direction, dest); 524 | } 525 | 526 | inline unsigned long& FloatBits(float& f) 527 | { 528 | return *reinterpret_cast(&f); 529 | } 530 | 531 | inline bool IsFinite(float f) 532 | { 533 | return ((FloatBits(f) & 0x7F800000) != 0x7F800000); 534 | } 535 | 536 | //========================================================= 537 | // 2D Vector2D 538 | //========================================================= 539 | 540 | class Vector2D 541 | { 542 | public: 543 | // Members 544 | float x, y; 545 | 546 | // Construction/destruction 547 | Vector2D(void); 548 | Vector2D(float X, float Y); 549 | Vector2D(const float* pFloat); 550 | 551 | // Initialization 552 | void Init(float ix = 0.0f, float iy = 0.0f); 553 | 554 | // Got any nasty NAN's? 555 | bool IsValid() const; 556 | 557 | // array access... 558 | float operator[](int i) const; 559 | float& operator[](int i); 560 | 561 | // Base address... 562 | float* Base(); 563 | float const* Base() const; 564 | 565 | // Initialization methods 566 | void Random(float minVal, float maxVal); 567 | 568 | // equality 569 | bool operator==(const Vector2D& v) const; 570 | bool operator!=(const Vector2D& v) const; 571 | 572 | // arithmetic operations 573 | Vector2D& operator+=(const Vector2D& v); 574 | Vector2D& operator-=(const Vector2D& v); 575 | Vector2D& operator*=(const Vector2D& v); 576 | Vector2D& operator*=(float s); 577 | Vector2D& operator/=(const Vector2D& v); 578 | Vector2D& operator/=(float s); 579 | 580 | // negate the Vector2D components 581 | void Negate(); 582 | 583 | // Get the Vector2D's magnitude. 584 | float Length() const; 585 | 586 | // Get the Vector2D's magnitude squared. 587 | float LengthSqr(void) const; 588 | 589 | // return true if this vector is (0,0) within tolerance 590 | bool IsZero(float tolerance = 0.01f) const 591 | { 592 | return (x > -tolerance && x < tolerance && 593 | y > -tolerance && y < tolerance); 594 | } 595 | 596 | float Normalize(); 597 | 598 | // Normalize in place and return the old length. 599 | float NormalizeInPlace(); 600 | 601 | // Compare length. 602 | bool IsLengthGreaterThan(float val) const; 603 | bool IsLengthLessThan(float val) const; 604 | 605 | // Get the distance from this Vector2D to the other one. 606 | float DistTo(const Vector2D& vOther) const; 607 | 608 | // Get the distance from this Vector2D to the other one squared. 609 | float DistToSqr(const Vector2D& vOther) const; 610 | 611 | // Copy 612 | void CopyToArray(float* rgfl) const; 613 | 614 | // Multiply, add, and assign to this (ie: *this = a + b * scalar). This 615 | // is about 12% faster than the actual Vector2D equation (because it's done per-component 616 | // rather than per-Vector2D). 617 | void MulAdd(const Vector2D& a, const Vector2D& b, float scalar); 618 | 619 | // Dot product. 620 | float Dot(const Vector2D& vOther) const; 621 | 622 | // assignment 623 | Vector2D& operator=(const Vector2D& vOther); 624 | 625 | #ifndef VECTOR_NO_SLOW_OPERATIONS 626 | // copy constructors 627 | Vector2D(const Vector2D& vOther); 628 | 629 | // arithmetic operations 630 | Vector2D operator-(void) const; 631 | 632 | Vector2D operator+(const Vector2D& v) const; 633 | Vector2D operator-(const Vector2D& v) const; 634 | Vector2D operator*(const Vector2D& v) const; 635 | Vector2D operator/(const Vector2D& v) const; 636 | Vector2D operator*(float fl) const; 637 | Vector2D operator/(float fl) const; 638 | 639 | // Cross product between two vectors. 640 | Vector2D Cross(const Vector2D& vOther) const; 641 | 642 | // Returns a Vector2D with the min or max in X, Y, and Z. 643 | Vector2D Min(const Vector2D& vOther) const; 644 | Vector2D Max(const Vector2D& vOther) const; 645 | 646 | #else 647 | 648 | private: 649 | // No copy constructors allowed if we're in optimal mode 650 | Vector2D(const Vector2D& vOther); 651 | #endif 652 | }; 653 | 654 | //----------------------------------------------------------------------------- 655 | 656 | const Vector2D vec2_origin(0, 0); 657 | //const Vector2D vec2_invalid(3.40282347E+38F, 3.40282347E+38F); 658 | 659 | //----------------------------------------------------------------------------- 660 | // Vector2D related operations 661 | //----------------------------------------------------------------------------- 662 | 663 | // Vector2D clear 664 | void Vector2DClear(Vector2D& a); 665 | 666 | // Copy 667 | void Vector2DCopy(const Vector2D& src, Vector2D& dst); 668 | 669 | // Vector2D arithmetic 670 | void Vector2DAdd(const Vector2D& a, const Vector2D& b, Vector2D& result); 671 | void Vector2DSubtract(const Vector2D& a, const Vector2D& b, Vector2D& result); 672 | void Vector2DMultiply(const Vector2D& a, float b, Vector2D& result); 673 | void Vector2DMultiply(const Vector2D& a, const Vector2D& b, Vector2D& result); 674 | void Vector2DDivide(const Vector2D& a, float b, Vector2D& result); 675 | void Vector2DDivide(const Vector2D& a, const Vector2D& b, Vector2D& result); 676 | void Vector2DMA(const Vector2D& start, float s, const Vector2D& dir, Vector2D& result); 677 | 678 | // Store the min or max of each of x, y, and z into the result. 679 | void Vector2DMin(const Vector2D& a, const Vector2D& b, Vector2D& result); 680 | void Vector2DMax(const Vector2D& a, const Vector2D& b, Vector2D& result); 681 | 682 | #define Vector2DExpand( v ) (v).x, (v).y 683 | 684 | // Normalization 685 | float Vector2DNormalize(Vector2D& v); 686 | 687 | // Length 688 | float Vector2DLength(const Vector2D& v); 689 | 690 | // Dot Product 691 | float DotProduct2D(const Vector2D& a, const Vector2D& b); 692 | 693 | // Linearly interpolate between two vectors 694 | void Vector2DLerp(const Vector2D& src1, const Vector2D& src2, float t, Vector2D& dest); 695 | 696 | //----------------------------------------------------------------------------- 697 | // 698 | // Inlined Vector2D methods 699 | // 700 | //----------------------------------------------------------------------------- 701 | 702 | //----------------------------------------------------------------------------- 703 | // constructors 704 | //----------------------------------------------------------------------------- 705 | 706 | inline Vector2D::Vector2D(void) 707 | { 708 | #ifdef _DEBUG 709 | // Initialize to NAN to catch errors 710 | //x = y = float_NAN; 711 | #endif 712 | } 713 | 714 | inline Vector2D::Vector2D(float X, float Y) 715 | { 716 | x = X; y = Y; 717 | Assert(IsValid()); 718 | } 719 | 720 | inline Vector2D::Vector2D(const float* pFloat) 721 | { 722 | Assert(pFloat); 723 | x = pFloat[0]; y = pFloat[1]; 724 | Assert(IsValid()); 725 | } 726 | 727 | //----------------------------------------------------------------------------- 728 | // copy constructor 729 | //----------------------------------------------------------------------------- 730 | 731 | inline Vector2D::Vector2D(const Vector2D& vOther) 732 | { 733 | Assert(vOther.IsValid()); 734 | x = vOther.x; y = vOther.y; 735 | } 736 | 737 | //----------------------------------------------------------------------------- 738 | // initialization 739 | //----------------------------------------------------------------------------- 740 | 741 | inline void Vector2D::Init(float ix, float iy) 742 | { 743 | x = ix; y = iy; 744 | Assert(IsValid()); 745 | } 746 | 747 | inline void Vector2D::Random(float minVal, float maxVal) 748 | { 749 | x = minVal + ((float)rand() / VALVE_RAND_MAX) * (maxVal - minVal); 750 | y = minVal + ((float)rand() / VALVE_RAND_MAX) * (maxVal - minVal); 751 | } 752 | 753 | inline void Vector2DClear(Vector2D& a) 754 | { 755 | a.x = a.y = 0.0f; 756 | } 757 | 758 | //----------------------------------------------------------------------------- 759 | // assignment 760 | //----------------------------------------------------------------------------- 761 | 762 | inline Vector2D& Vector2D::operator=(const Vector2D& vOther) 763 | { 764 | Assert(vOther.IsValid()); 765 | x = vOther.x; y = vOther.y; 766 | return *this; 767 | } 768 | 769 | //----------------------------------------------------------------------------- 770 | // Array access 771 | //----------------------------------------------------------------------------- 772 | 773 | inline float& Vector2D::operator[](int i) 774 | { 775 | Assert((i >= 0) && (i < 2)); 776 | return ((float*)this)[i]; 777 | } 778 | 779 | inline float Vector2D::operator[](int i) const 780 | { 781 | Assert((i >= 0) && (i < 2)); 782 | return ((float*)this)[i]; 783 | } 784 | 785 | //----------------------------------------------------------------------------- 786 | // Base address... 787 | //----------------------------------------------------------------------------- 788 | 789 | inline float* Vector2D::Base() 790 | { 791 | return (float*)this; 792 | } 793 | 794 | inline float const* Vector2D::Base() const 795 | { 796 | return (float const*)this; 797 | } 798 | 799 | //----------------------------------------------------------------------------- 800 | // IsValid? 801 | //----------------------------------------------------------------------------- 802 | 803 | inline bool Vector2D::IsValid() const 804 | { 805 | return IsFinite(x) && IsFinite(y); 806 | } 807 | 808 | //----------------------------------------------------------------------------- 809 | // comparison 810 | //----------------------------------------------------------------------------- 811 | 812 | inline bool Vector2D::operator==(const Vector2D& src) const 813 | { 814 | Assert(src.IsValid() && IsValid()); 815 | return (src.x == x) && (src.y == y); 816 | } 817 | 818 | inline bool Vector2D::operator!=(const Vector2D& src) const 819 | { 820 | Assert(src.IsValid() && IsValid()); 821 | return (src.x != x) || (src.y != y); 822 | } 823 | 824 | //----------------------------------------------------------------------------- 825 | // Copy 826 | //----------------------------------------------------------------------------- 827 | 828 | inline void Vector2DCopy(const Vector2D& src, Vector2D& dst) 829 | { 830 | Assert(src.IsValid()); 831 | dst.x = src.x; 832 | dst.y = src.y; 833 | } 834 | 835 | inline void Vector2D::CopyToArray(float* rgfl) const 836 | { 837 | Assert(IsValid()); 838 | Assert(rgfl); 839 | rgfl[0] = x; rgfl[1] = y; 840 | } 841 | 842 | //----------------------------------------------------------------------------- 843 | // standard math operations 844 | //----------------------------------------------------------------------------- 845 | 846 | inline void Vector2D::Negate() 847 | { 848 | Assert(IsValid()); 849 | x = -x; y = -y; 850 | } 851 | 852 | inline Vector2D& Vector2D::operator+=(const Vector2D& v) 853 | { 854 | Assert(IsValid() && v.IsValid()); 855 | x += v.x; y += v.y; 856 | return *this; 857 | } 858 | 859 | inline Vector2D& Vector2D::operator-=(const Vector2D& v) 860 | { 861 | Assert(IsValid() && v.IsValid()); 862 | x -= v.x; y -= v.y; 863 | return *this; 864 | } 865 | 866 | inline Vector2D& Vector2D::operator*=(float fl) 867 | { 868 | x *= fl; 869 | y *= fl; 870 | Assert(IsValid()); 871 | return *this; 872 | } 873 | 874 | inline Vector2D& Vector2D::operator*=(const Vector2D& v) 875 | { 876 | x *= v.x; 877 | y *= v.y; 878 | Assert(IsValid()); 879 | return *this; 880 | } 881 | 882 | inline Vector2D& Vector2D::operator/=(float fl) 883 | { 884 | Assert(fl != 0.0f); 885 | float oofl = 1.0f / fl; 886 | x *= oofl; 887 | y *= oofl; 888 | Assert(IsValid()); 889 | return *this; 890 | } 891 | 892 | inline Vector2D& Vector2D::operator/=(const Vector2D& v) 893 | { 894 | Assert(v.x != 0.0f && v.y != 0.0f); 895 | x /= v.x; 896 | y /= v.y; 897 | Assert(IsValid()); 898 | return *this; 899 | } 900 | 901 | inline void Vector2DAdd(const Vector2D& a, const Vector2D& b, Vector2D& c) 902 | { 903 | Assert(a.IsValid() && b.IsValid()); 904 | c.x = a.x + b.x; 905 | c.y = a.y + b.y; 906 | } 907 | 908 | inline void Vector2DSubtract(const Vector2D& a, const Vector2D& b, Vector2D& c) 909 | { 910 | Assert(a.IsValid() && b.IsValid()); 911 | c.x = a.x - b.x; 912 | c.y = a.y - b.y; 913 | } 914 | 915 | inline void Vector2DMultiply(const Vector2D& a, float b, Vector2D& c) 916 | { 917 | Assert(a.IsValid() && IsFinite(b)); 918 | c.x = a.x * b; 919 | c.y = a.y * b; 920 | } 921 | 922 | inline void Vector2DMultiply(const Vector2D& a, const Vector2D& b, Vector2D& c) 923 | { 924 | Assert(a.IsValid() && b.IsValid()); 925 | c.x = a.x * b.x; 926 | c.y = a.y * b.y; 927 | } 928 | 929 | inline void Vector2DDivide(const Vector2D& a, float b, Vector2D& c) 930 | { 931 | Assert(a.IsValid()); 932 | Assert(b != 0.0f); 933 | float oob = 1.0f / b; 934 | c.x = a.x * oob; 935 | c.y = a.y * oob; 936 | } 937 | 938 | inline void Vector2DDivide(const Vector2D& a, const Vector2D& b, Vector2D& c) 939 | { 940 | Assert(a.IsValid()); 941 | Assert((b.x != 0.0f) && (b.y != 0.0f)); 942 | c.x = a.x / b.x; 943 | c.y = a.y / b.y; 944 | } 945 | 946 | inline void Vector2DMA(const Vector2D& start, float s, const Vector2D& dir, Vector2D& result) 947 | { 948 | Assert(start.IsValid() && IsFinite(s) && dir.IsValid()); 949 | result.x = start.x + s * dir.x; 950 | result.y = start.y + s * dir.y; 951 | } 952 | 953 | // FIXME: Remove 954 | // For backwards compatability 955 | inline void Vector2D::MulAdd(const Vector2D& a, const Vector2D& b, float scalar) 956 | { 957 | x = a.x + b.x * scalar; 958 | y = a.y + b.y * scalar; 959 | } 960 | 961 | inline void Vector2DLerp(const Vector2D& src1, const Vector2D& src2, float t, Vector2D& dest) 962 | { 963 | dest[0] = src1[0] + (src2[0] - src1[0]) * t; 964 | dest[1] = src1[1] + (src2[1] - src1[1]) * t; 965 | } 966 | 967 | //----------------------------------------------------------------------------- 968 | // dot, cross 969 | //----------------------------------------------------------------------------- 970 | inline float DotProduct2D(const Vector2D& a, const Vector2D& b) 971 | { 972 | Assert(a.IsValid() && b.IsValid()); 973 | return(a.x * b.x + a.y * b.y); 974 | } 975 | 976 | // for backwards compatability 977 | inline float Vector2D::Dot(const Vector2D& vOther) const 978 | { 979 | return DotProduct2D(*this, vOther); 980 | } 981 | 982 | //----------------------------------------------------------------------------- 983 | // length 984 | //----------------------------------------------------------------------------- 985 | inline float Vector2DLength(const Vector2D& v) 986 | { 987 | Assert(v.IsValid()); 988 | return (float)FastSqrt(v.x * v.x + v.y * v.y); 989 | } 990 | 991 | inline float Vector2D::LengthSqr(void) const 992 | { 993 | Assert(IsValid()); 994 | return (x * x + y * y); 995 | } 996 | 997 | inline float Vector2D::NormalizeInPlace() 998 | { 999 | return Vector2DNormalize(*this); 1000 | } 1001 | 1002 | inline bool Vector2D::IsLengthGreaterThan(float val) const 1003 | { 1004 | return LengthSqr() > val* val; 1005 | } 1006 | 1007 | inline bool Vector2D::IsLengthLessThan(float val) const 1008 | { 1009 | return LengthSqr() < val * val; 1010 | } 1011 | 1012 | inline float Vector2D::Length(void) const 1013 | { 1014 | return Vector2DLength(*this); 1015 | } 1016 | 1017 | inline void Vector2DMin(const Vector2D& a, const Vector2D& b, Vector2D& result) 1018 | { 1019 | result.x = (a.x < b.x) ? a.x : b.x; 1020 | result.y = (a.y < b.y) ? a.y : b.y; 1021 | } 1022 | 1023 | inline void Vector2DMax(const Vector2D& a, const Vector2D& b, Vector2D& result) 1024 | { 1025 | result.x = (a.x > b.x) ? a.x : b.x; 1026 | result.y = (a.y > b.y) ? a.y : b.y; 1027 | } 1028 | 1029 | //----------------------------------------------------------------------------- 1030 | // Normalization 1031 | //----------------------------------------------------------------------------- 1032 | inline float Vector2DNormalize(Vector2D& v) 1033 | { 1034 | Assert(v.IsValid()); 1035 | float l = v.Length(); 1036 | if (l != 0.0f) 1037 | { 1038 | v /= l; 1039 | } 1040 | else 1041 | { 1042 | v.x = v.y = 0.0f; 1043 | } 1044 | return l; 1045 | } 1046 | 1047 | //----------------------------------------------------------------------------- 1048 | // Get the distance from this Vector2D to the other one 1049 | //----------------------------------------------------------------------------- 1050 | inline float Vector2D::DistTo(const Vector2D& vOther) const 1051 | { 1052 | Vector2D delta; 1053 | Vector2DSubtract(*this, vOther, delta); 1054 | return delta.Length(); 1055 | } 1056 | 1057 | inline float Vector2D::DistToSqr(const Vector2D& vOther) const 1058 | { 1059 | Vector2D delta; 1060 | Vector2DSubtract(*this, vOther, delta); 1061 | return delta.LengthSqr(); 1062 | } 1063 | 1064 | //----------------------------------------------------------------------------- 1065 | // Computes the closest point to vecTarget no farther than flMaxDist from vecStart 1066 | //----------------------------------------------------------------------------- 1067 | inline void ComputeClosestPoint2D(const Vector2D& vecStart, float flMaxDist, const Vector2D& vecTarget, Vector2D* pResult) 1068 | { 1069 | Vector2D vecDelta; 1070 | Vector2DSubtract(vecTarget, vecStart, vecDelta); 1071 | float flDistSqr = vecDelta.LengthSqr(); 1072 | if (flDistSqr <= flMaxDist * flMaxDist) 1073 | { 1074 | *pResult = vecTarget; 1075 | } 1076 | else 1077 | { 1078 | vecDelta /= FastSqrt(flDistSqr); 1079 | Vector2DMA(vecStart, flMaxDist, vecDelta, *pResult); 1080 | } 1081 | } 1082 | 1083 | //----------------------------------------------------------------------------- 1084 | // 1085 | // Slow methods 1086 | // 1087 | //----------------------------------------------------------------------------- 1088 | 1089 | #ifndef VECTOR_NO_SLOW_OPERATIONS 1090 | #endif 1091 | //----------------------------------------------------------------------------- 1092 | // Returns a Vector2D with the min or max in X, Y, and Z. 1093 | //----------------------------------------------------------------------------- 1094 | 1095 | inline Vector2D Vector2D::Min(const Vector2D& vOther) const 1096 | { 1097 | return Vector2D(x < vOther.x ? x : vOther.x, 1098 | y < vOther.y ? y : vOther.y); 1099 | } 1100 | 1101 | inline Vector2D Vector2D::Max(const Vector2D& vOther) const 1102 | { 1103 | return Vector2D(x > vOther.x ? x : vOther.x, 1104 | y > vOther.y ? y : vOther.y); 1105 | } 1106 | 1107 | //----------------------------------------------------------------------------- 1108 | // arithmetic operations 1109 | //----------------------------------------------------------------------------- 1110 | 1111 | inline Vector2D Vector2D::operator-(void) const 1112 | { 1113 | return Vector2D(-x, -y); 1114 | } 1115 | 1116 | inline Vector2D Vector2D::operator+(const Vector2D& v) const 1117 | { 1118 | Vector2D res; 1119 | Vector2DAdd(*this, v, res); 1120 | return res; 1121 | } 1122 | 1123 | inline Vector2D Vector2D::operator-(const Vector2D& v) const 1124 | { 1125 | Vector2D res; 1126 | Vector2DSubtract(*this, v, res); 1127 | return res; 1128 | } 1129 | 1130 | inline Vector2D Vector2D::operator*(float fl) const 1131 | { 1132 | Vector2D res; 1133 | Vector2DMultiply(*this, fl, res); 1134 | return res; 1135 | } 1136 | 1137 | inline Vector2D Vector2D::operator*(const Vector2D& v) const 1138 | { 1139 | Vector2D res; 1140 | Vector2DMultiply(*this, v, res); 1141 | return res; 1142 | } 1143 | 1144 | inline Vector2D Vector2D::operator/(float fl) const 1145 | { 1146 | Vector2D res; 1147 | Vector2DDivide(*this, fl, res); 1148 | return res; 1149 | } 1150 | 1151 | inline Vector2D Vector2D::operator/(const Vector2D& v) const 1152 | { 1153 | Vector2D res; 1154 | Vector2DDivide(*this, v, res); 1155 | return res; 1156 | } 1157 | 1158 | inline Vector2D operator*(float fl, const Vector2D& v) 1159 | { 1160 | return v * fl; 1161 | } 1162 | 1163 | class QAngleByValue; 1164 | class QAngle 1165 | { 1166 | public: 1167 | // Members 1168 | float x, y, z; 1169 | 1170 | // Construction/destruction 1171 | QAngle(void); 1172 | QAngle(float X, float Y, float Z); 1173 | // QAngle(RadianEuler const &angles); // evil auto type promotion!!! 1174 | 1175 | // Allow pass-by-value 1176 | operator QAngleByValue& () { return *((QAngleByValue*)(this)); } 1177 | operator const QAngleByValue& () const { return *((const QAngleByValue*)(this)); } 1178 | 1179 | // Initialization 1180 | void Init(float ix = 0.0f, float iy = 0.0f, float iz = 0.0f); 1181 | void Random(float minVal, float maxVal); 1182 | 1183 | // Got any nasty NAN's? 1184 | bool IsValid() const; 1185 | void Invalidate(); 1186 | 1187 | // array access... 1188 | float operator[](int i) const; 1189 | float& operator[](int i); 1190 | 1191 | // Base address... 1192 | float* Base(); 1193 | float const* Base() const; 1194 | 1195 | // equality 1196 | bool operator==(const QAngle& v) const; 1197 | bool operator!=(const QAngle& v) const; 1198 | 1199 | bool IsZero(float tolerance = 0.01f) const 1200 | { 1201 | return (x > -tolerance && x < tolerance && 1202 | y > -tolerance && y < tolerance && 1203 | z > -tolerance && z < tolerance); 1204 | } 1205 | 1206 | // arithmetic operations 1207 | QAngle& operator+=(const QAngle& v); 1208 | QAngle& operator-=(const QAngle& v); 1209 | QAngle& operator*=(float s); 1210 | QAngle& operator/=(float s); 1211 | 1212 | // Get the vector's magnitude. 1213 | float Length() const; 1214 | float LengthSqr() const; 1215 | 1216 | // negate the QAngle components 1217 | //void Negate(); 1218 | 1219 | // No assignment operators either... 1220 | QAngle& operator=(const QAngle& src); 1221 | 1222 | #ifndef VECTOR_NO_SLOW_OPERATIONS 1223 | // copy constructors 1224 | 1225 | // arithmetic operations 1226 | QAngle operator-(void) const; 1227 | 1228 | QAngle operator+(const QAngle& v) const; 1229 | QAngle operator-(const QAngle& v) const; 1230 | QAngle operator*(float fl) const; 1231 | QAngle operator/(float fl) const; 1232 | #else 1233 | 1234 | private: 1235 | // No copy constructors allowed if we're in optimal mode 1236 | QAngle(const QAngle& vOther); 1237 | 1238 | #endif 1239 | }; 1240 | 1241 | //----------------------------------------------------------------------------- 1242 | // constructors 1243 | //----------------------------------------------------------------------------- 1244 | inline QAngle::QAngle(void) 1245 | { 1246 | #ifdef _DEBUG 1247 | #ifdef VECTOR_PARANOIA 1248 | // Initialize to NAN to catch errors 1249 | x = y = z = VEC_T_NAN; 1250 | #endif 1251 | #endif 1252 | } 1253 | 1254 | inline QAngle::QAngle(float X, float Y, float Z) 1255 | { 1256 | x = X; y = Y; z = Z; 1257 | } 1258 | 1259 | //----------------------------------------------------------------------------- 1260 | // initialization 1261 | //----------------------------------------------------------------------------- 1262 | inline void QAngle::Init(float ix, float iy, float iz) 1263 | { 1264 | x = ix; y = iy; z = iz; 1265 | } 1266 | 1267 | inline void QAngle::Random(float minVal, float maxVal) 1268 | { 1269 | x = minVal + ((float)rand() / RAND_MAX) * (maxVal - minVal); 1270 | y = minVal + ((float)rand() / RAND_MAX) * (maxVal - minVal); 1271 | z = minVal + ((float)rand() / RAND_MAX) * (maxVal - minVal); 1272 | } 1273 | 1274 | //----------------------------------------------------------------------------- 1275 | // assignment 1276 | //----------------------------------------------------------------------------- 1277 | inline QAngle& QAngle::operator=(const QAngle& vOther) 1278 | { 1279 | x = vOther.x; y = vOther.y; z = vOther.z; 1280 | return *this; 1281 | } 1282 | 1283 | //----------------------------------------------------------------------------- 1284 | // comparison 1285 | //----------------------------------------------------------------------------- 1286 | inline bool QAngle::operator==(const QAngle& src) const 1287 | { 1288 | return (src.x == x) && (src.y == y) && (src.z == z); 1289 | } 1290 | 1291 | inline bool QAngle::operator!=(const QAngle& src) const 1292 | { 1293 | return (src.x != x) || (src.y != y) || (src.z != z); 1294 | } 1295 | 1296 | //----------------------------------------------------------------------------- 1297 | // standard math operations 1298 | //----------------------------------------------------------------------------- 1299 | inline QAngle& QAngle::operator+=(const QAngle& v) 1300 | { 1301 | x += v.x; y += v.y; z += v.z; 1302 | return *this; 1303 | } 1304 | 1305 | inline QAngle& QAngle::operator-=(const QAngle& v) 1306 | { 1307 | x -= v.x; y -= v.y; z -= v.z; 1308 | return *this; 1309 | } 1310 | 1311 | inline QAngle& QAngle::operator*=(float fl) 1312 | { 1313 | x *= fl; 1314 | y *= fl; 1315 | z *= fl; 1316 | 1317 | return *this; 1318 | } 1319 | 1320 | inline QAngle& QAngle::operator/=(float fl) 1321 | { 1322 | Assert(fl != 0.0f); 1323 | float oofl = 1.0f / fl; 1324 | x *= oofl; 1325 | y *= oofl; 1326 | z *= oofl; 1327 | 1328 | return *this; 1329 | } 1330 | 1331 | //----------------------------------------------------------------------------- 1332 | // Base address... 1333 | //----------------------------------------------------------------------------- 1334 | inline float* QAngle::Base() 1335 | { 1336 | return (float*)this; 1337 | } 1338 | 1339 | inline float const* QAngle::Base() const 1340 | { 1341 | return (float const*)this; 1342 | } 1343 | 1344 | //----------------------------------------------------------------------------- 1345 | // Array access 1346 | //----------------------------------------------------------------------------- 1347 | inline float& QAngle::operator[](int i) 1348 | { 1349 | Assert((i >= 0) && (i < 3)); 1350 | return ((float*)this)[i]; 1351 | } 1352 | 1353 | inline float QAngle::operator[](int i) const 1354 | { 1355 | Assert((i >= 0) && (i < 3)); 1356 | return ((float*)this)[i]; 1357 | } 1358 | 1359 | //----------------------------------------------------------------------------- 1360 | // length 1361 | //----------------------------------------------------------------------------- 1362 | inline float QAngle::Length() const 1363 | { 1364 | return (float)FastSqrt(LengthSqr()); 1365 | } 1366 | 1367 | inline float QAngle::LengthSqr() const 1368 | { 1369 | return x * x + y * y + z * z; 1370 | } 1371 | 1372 | //----------------------------------------------------------------------------- 1373 | // arithmetic operations (SLOW!!) 1374 | //----------------------------------------------------------------------------- 1375 | #ifndef VECTOR_NO_SLOW_OPERATIONS 1376 | 1377 | inline QAngle QAngle::operator-(void) const 1378 | { 1379 | return QAngle(-x, -y, -z); 1380 | } 1381 | 1382 | inline QAngle QAngle::operator+(const QAngle& v) const 1383 | { 1384 | QAngle res; 1385 | res.x = x + v.x; 1386 | res.y = y + v.y; 1387 | res.z = z + v.z; 1388 | return res; 1389 | } 1390 | 1391 | inline QAngle QAngle::operator-(const QAngle& v) const 1392 | { 1393 | QAngle res; 1394 | res.x = x - v.x; 1395 | res.y = y - v.y; 1396 | res.z = z - v.z; 1397 | return res; 1398 | } 1399 | 1400 | inline QAngle QAngle::operator*(float fl) const 1401 | { 1402 | QAngle res; 1403 | res.x = x * fl; 1404 | res.y = y * fl; 1405 | res.z = z * fl; 1406 | return res; 1407 | } 1408 | 1409 | inline QAngle QAngle::operator/(float fl) const 1410 | { 1411 | QAngle res; 1412 | res.x = x / fl; 1413 | res.y = y / fl; 1414 | res.z = z / fl; 1415 | return res; 1416 | } 1417 | 1418 | inline QAngle operator*(float fl, const QAngle& v) 1419 | { 1420 | return v * fl; 1421 | } 1422 | 1423 | #endif // VECTOR_NO_SLOW_OPERATIONS 1424 | 1425 | //QANGLE SUBTRAC 1426 | inline void QAngleSubtract(const QAngle& a, const QAngle& b, QAngle& c) 1427 | { 1428 | c.x = a.x - b.x; 1429 | c.y = a.y - b.y; 1430 | c.z = a.z - b.z; 1431 | } 1432 | 1433 | //QANGLEADD 1434 | inline void QAngleAdd(const QAngle& a, const QAngle& b, QAngle& c) 1435 | { 1436 | c.x = a.x + b.x; 1437 | c.y = a.y + b.y; 1438 | c.z = a.z + b.z; 1439 | } -------------------------------------------------------------------------------- /[教程] [本人] Apex Legends/[辉光] [自瞄] [自瞄不稳待修改]/cheats.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Apex Legends/[辉光] [自瞄] [自瞄不稳待修改]/cheats.hpp -------------------------------------------------------------------------------- /[教程] [本人] Apex Legends/[辉光] [自瞄] [自瞄不稳待修改]/memory.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Apex Legends/[辉光] [自瞄] [自瞄不稳待修改]/memory.hpp -------------------------------------------------------------------------------- /[教程] [本人] Apex Legends/[辉光] [自瞄] [自瞄不稳待修改]/vectors.hpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | #define Assert( _exp ) ((void)0) 5 | 6 | #define FastSqrt(x) (sqrt)(x) 7 | 8 | #define M_PI 3.14159265358979323846 // matches value in gcc v2 math.h 9 | 10 | #define M_PI_F ((float)(M_PI)) // Shouldn't collide with anything. 11 | 12 | #define M_PHI 1.61803398874989484820 // golden ratio 13 | 14 | // NJS: Inlined to prevent floats from being autopromoted to doubles, as with the old system. 15 | #ifndef RAD2DEG 16 | #define RAD2DEG( x ) ( (float)(x) * (float)(180.f / M_PI_F) ) 17 | #endif 18 | 19 | #ifndef DEG2RAD 20 | #define DEG2RAD( x ) ( (float)(x) * (float)(M_PI_F / 180.f) ) 21 | #endif 22 | 23 | // MOVEMENT INFO 24 | enum 25 | { 26 | PITCH = 0, // up / down 27 | YAW, // left / right 28 | ROLL // fall over 29 | }; 30 | 31 | // decls for aligning data 32 | 33 | #define DECL_ALIGN(x) __attribute__((aligned(x))) 34 | 35 | #define ALIGN16 DECL_ALIGN(16) 36 | #define VALVE_RAND_MAX 0x7fff 37 | #define VectorExpand(v) (v).x, (v).y, (v).z 38 | 39 | struct matrix3x4_t 40 | { 41 | matrix3x4_t() {} 42 | matrix3x4_t( 43 | float m00, float m01, float m02, float m03, 44 | float m10, float m11, float m12, float m13, 45 | float m20, float m21, float m22, float m23) 46 | { 47 | m_flMatVal[0][0] = m00; m_flMatVal[0][1] = m01; m_flMatVal[0][2] = m02; m_flMatVal[0][3] = m03; 48 | m_flMatVal[1][0] = m10; m_flMatVal[1][1] = m11; m_flMatVal[1][2] = m12; m_flMatVal[1][3] = m13; 49 | m_flMatVal[2][0] = m20; m_flMatVal[2][1] = m21; m_flMatVal[2][2] = m22; m_flMatVal[2][3] = m23; 50 | } 51 | 52 | float* operator[](int i) { Assert((i >= 0) && (i < 3)); return m_flMatVal[i]; } 53 | const float* operator[](int i) const { Assert((i >= 0) && (i < 3)); return m_flMatVal[i]; } 54 | float* Base() { return &m_flMatVal[0][0]; } 55 | const float* Base() const { return &m_flMatVal[0][0]; } 56 | 57 | float m_flMatVal[3][4]; 58 | }; 59 | 60 | class VMatrix 61 | { 62 | public: 63 | 64 | VMatrix() {} 65 | VMatrix( 66 | float m00, float m01, float m02, float m03, 67 | float m10, float m11, float m12, float m13, 68 | float m20, float m21, float m22, float m23, 69 | float m30, float m31, float m32, float m33 70 | ) { 71 | m[0][0] = m00; 72 | m[0][1] = m01; 73 | m[0][2] = m02; 74 | m[0][3] = m03; 75 | 76 | m[1][0] = m10; 77 | m[1][1] = m11; 78 | m[1][2] = m12; 79 | m[1][3] = m13; 80 | 81 | m[2][0] = m20; 82 | m[2][1] = m21; 83 | m[2][2] = m22; 84 | m[2][3] = m23; 85 | 86 | m[3][0] = m30; 87 | m[3][1] = m31; 88 | m[3][2] = m32; 89 | m[3][3] = m33; 90 | } 91 | 92 | // array access 93 | inline float* operator[](int i) 94 | { 95 | return m[i]; 96 | } 97 | 98 | inline const float* operator[](int i) const 99 | { 100 | return m[i]; 101 | } 102 | 103 | // Get a pointer to m[0][0] 104 | inline float* Base() 105 | { 106 | return &m[0][0]; 107 | } 108 | 109 | inline const float* Base() const 110 | { 111 | return &m[0][0]; 112 | } 113 | 114 | public: 115 | // The matrix. 116 | float m[4][4]; 117 | }; 118 | 119 | class Vector 120 | { 121 | public: 122 | float x, y, z; 123 | Vector(void); 124 | Vector(float X, float Y, float Z); 125 | void Init(float ix = 0.0f, float iy = 0.0f, float iz = 0.0f); 126 | bool IsValid() const; 127 | float operator[](int i) const; 128 | float& operator[](int i); 129 | inline void Zero(); 130 | bool operator==(const Vector& v) const; 131 | bool operator!=(const Vector& v) const; 132 | inline Vector& operator+=(const Vector& v); 133 | inline Vector& operator-=(const Vector& v); 134 | inline Vector& operator*=(const Vector& v); 135 | inline Vector& operator*=(float s); 136 | inline Vector& operator/=(const Vector& v); 137 | inline Vector& operator/=(float s); 138 | inline Vector& operator+=(float fl); 139 | inline Vector& operator-=(float fl); 140 | inline float Length() const; 141 | inline float LengthSqr(void) const 142 | { 143 | return (x * x + y * y + z * z); 144 | } 145 | bool IsZero(float tolerance = 0.01f) const 146 | { 147 | return (x > -tolerance && x < tolerance && 148 | y > -tolerance && y < tolerance && 149 | z > -tolerance && z < tolerance); 150 | } 151 | Vector Normalize(); 152 | void NormalizeInPlace(); 153 | inline float DistTo(const Vector& vOther) const; 154 | inline float DistToSqr(const Vector& vOther) const; 155 | float Dot(const Vector& vOther) const; 156 | float Length2D(void) const; 157 | float Length2DSqr(void) const; 158 | Vector& operator=(const Vector& vOther); 159 | Vector operator-(void) const; 160 | Vector operator+(const Vector& v) const; 161 | Vector operator-(const Vector& v) const; 162 | Vector operator*(const Vector& v) const; 163 | Vector operator/(const Vector& v) const; 164 | Vector operator*(float fl) const; 165 | Vector operator/(float fl) const; 166 | // Base address... 167 | float* Base(); 168 | float const* Base() const; 169 | }; 170 | 171 | //=============================================== 172 | inline void Vector::Init(float ix, float iy, float iz) 173 | { 174 | x = ix; y = iy; z = iz; 175 | } 176 | //=============================================== 177 | inline Vector::Vector(float X, float Y, float Z) 178 | { 179 | x = X; y = Y; z = Z; 180 | } 181 | //=============================================== 182 | inline Vector::Vector(void) { Zero(); } 183 | //=============================================== 184 | inline void Vector::Zero() 185 | { 186 | x = y = z = 0.0f; 187 | } 188 | //=============================================== 189 | inline void VectorClear(Vector& a) 190 | { 191 | a.x = a.y = a.z = 0.0f; 192 | } 193 | //=============================================== 194 | inline Vector& Vector::operator=(const Vector& vOther) 195 | { 196 | x = vOther.x; y = vOther.y; z = vOther.z; 197 | return *this; 198 | } 199 | //=============================================== 200 | inline float& Vector::operator[](int i) 201 | { 202 | Assert((i >= 0) && (i < 3)); 203 | return ((float*)this)[i]; 204 | } 205 | //=============================================== 206 | inline float Vector::operator[](int i) const 207 | { 208 | Assert((i >= 0) && (i < 3)); 209 | return ((float*)this)[i]; 210 | } 211 | //=============================================== 212 | inline bool Vector::operator==(const Vector& src) const 213 | { 214 | return (src.x == x) && (src.y == y) && (src.z == z); 215 | } 216 | //=============================================== 217 | inline bool Vector::operator!=(const Vector& src) const 218 | { 219 | return (src.x != x) || (src.y != y) || (src.z != z); 220 | } 221 | //=============================================== 222 | inline void VectorCopy(const Vector& src, Vector& dst) 223 | { 224 | dst.x = src.x; 225 | dst.y = src.y; 226 | dst.z = src.z; 227 | } 228 | //=============================================== 229 | inline Vector& Vector::operator+=(const Vector& v) 230 | { 231 | x += v.x; y += v.y; z += v.z; 232 | return *this; 233 | } 234 | //=============================================== 235 | inline Vector& Vector::operator-=(const Vector& v) 236 | { 237 | x -= v.x; y -= v.y; z -= v.z; 238 | return *this; 239 | } 240 | //=============================================== 241 | inline Vector& Vector::operator*=(float fl) 242 | { 243 | x *= fl; 244 | y *= fl; 245 | z *= fl; 246 | 247 | return *this; 248 | } 249 | //=============================================== 250 | inline Vector& Vector::operator*=(const Vector& v) 251 | { 252 | x *= v.x; 253 | y *= v.y; 254 | z *= v.z; 255 | 256 | return *this; 257 | } 258 | //=============================================== 259 | inline Vector& Vector::operator+=(float fl) 260 | { 261 | x += fl; 262 | y += fl; 263 | z += fl; 264 | 265 | return *this; 266 | } 267 | //=============================================== 268 | inline Vector& Vector::operator-=(float fl) 269 | { 270 | x -= fl; 271 | y -= fl; 272 | z -= fl; 273 | 274 | return *this; 275 | } 276 | //=============================================== 277 | inline Vector& Vector::operator/=(float fl) 278 | { 279 | Assert(fl != 0.0f); 280 | float oofl = 1.0f / fl; 281 | x *= oofl; 282 | y *= oofl; 283 | z *= oofl; 284 | 285 | return *this; 286 | } 287 | //=============================================== 288 | inline Vector& Vector::operator/=(const Vector& v) 289 | { 290 | Assert(v.x != 0.0f && v.y != 0.0f && v.z != 0.0f); 291 | x /= v.x; 292 | y /= v.y; 293 | z /= v.z; 294 | 295 | return *this; 296 | } 297 | //=============================================== 298 | inline float Vector::Length(void) const 299 | { 300 | float root = 0.0f; 301 | 302 | float sqsr = x * x + y * y + z * z; 303 | 304 | root = sqrt(sqsr); 305 | 306 | return root; 307 | } 308 | //=============================================== 309 | inline float Vector::Length2D(void) const 310 | { 311 | float root = 0.0f; 312 | 313 | float sqst = x * x + y * y; 314 | 315 | root = sqrt(sqst); 316 | 317 | return root; 318 | } 319 | //=============================================== 320 | inline float Vector::Length2DSqr(void) const 321 | { 322 | return (x * x + y * y); 323 | } 324 | //=============================================== 325 | inline Vector CrossProduct(const Vector& a, const Vector& b) 326 | { 327 | return Vector(a.y * b.z - a.z * b.y, a.z * b.x - a.x * b.z, a.x * b.y - a.y * b.x); 328 | } 329 | //=============================================== 330 | float Vector::DistTo(const Vector& vOther) const 331 | { 332 | Vector delta; 333 | 334 | delta.x = x - vOther.x; 335 | delta.y = y - vOther.y; 336 | delta.z = z - vOther.z; 337 | 338 | return delta.Length(); 339 | } 340 | float Vector::DistToSqr(const Vector& vOther) const 341 | { 342 | Vector delta; 343 | 344 | delta.x = x - vOther.x; 345 | delta.y = y - vOther.y; 346 | delta.z = z - vOther.z; 347 | 348 | return delta.LengthSqr(); 349 | } 350 | //=============================================== 351 | inline Vector Vector::Normalize() 352 | { 353 | Vector vector; 354 | float length = this->Length(); 355 | 356 | if (length != 0) 357 | { 358 | vector.x = x / length; 359 | vector.y = y / length; 360 | vector.z = z / length; 361 | } 362 | else 363 | { 364 | vector.x = vector.y = 0.0f; vector.z = 1.0f; 365 | } 366 | 367 | return vector; 368 | } 369 | //=============================================== 370 | inline void Vector::NormalizeInPlace() 371 | { 372 | Vector& v = *this; 373 | 374 | float iradius = 1.f / (this->Length() + 1.192092896e-07F); //FLT_EPSILON 375 | 376 | v.x *= iradius; 377 | v.y *= iradius; 378 | v.z *= iradius; 379 | } 380 | //=============================================== 381 | inline float VectorNormalize(Vector& v) 382 | { 383 | Assert(v.IsValid()); 384 | float l = v.Length(); 385 | if (l != 0.0f) 386 | { 387 | v /= l; 388 | } 389 | else 390 | { 391 | // FIXME: 392 | // Just copying the existing implemenation; shouldn't res.z == 0? 393 | v.x = v.y = 0.0f; v.z = 1.0f; 394 | } 395 | return l; 396 | } 397 | //=============================================== 398 | inline float VectorNormalize(float* v) 399 | { 400 | return VectorNormalize(*(reinterpret_cast(v))); 401 | } 402 | //=============================================== 403 | inline Vector Vector::operator+(const Vector& v) const 404 | { 405 | Vector res; 406 | res.x = x + v.x; 407 | res.y = y + v.y; 408 | res.z = z + v.z; 409 | return res; 410 | } 411 | 412 | //=============================================== 413 | inline Vector Vector::operator-(const Vector& v) const 414 | { 415 | Vector res; 416 | res.x = x - v.x; 417 | res.y = y - v.y; 418 | res.z = z - v.z; 419 | return res; 420 | } 421 | //=============================================== 422 | inline Vector Vector::operator*(float fl) const 423 | { 424 | Vector res; 425 | res.x = x * fl; 426 | res.y = y * fl; 427 | res.z = z * fl; 428 | return res; 429 | } 430 | //=============================================== 431 | inline Vector Vector::operator*(const Vector& v) const 432 | { 433 | Vector res; 434 | res.x = x * v.x; 435 | res.y = y * v.y; 436 | res.z = z * v.z; 437 | return res; 438 | } 439 | //=============================================== 440 | inline Vector Vector::operator/(float fl) const 441 | { 442 | Vector res; 443 | res.x = x / fl; 444 | res.y = y / fl; 445 | res.z = z / fl; 446 | return res; 447 | } 448 | //=============================================== 449 | inline Vector Vector::operator/(const Vector& v) const 450 | { 451 | Vector res; 452 | res.x = x / v.x; 453 | res.y = y / v.y; 454 | res.z = z / v.z; 455 | return res; 456 | } 457 | inline float Vector::Dot(const Vector& vOther) const 458 | { 459 | const Vector& a = *this; 460 | 461 | return(a.x * vOther.x + a.y * vOther.y + a.z * vOther.z); 462 | } 463 | 464 | //----------------------------------------------------------------------------- 465 | // length 466 | //----------------------------------------------------------------------------- 467 | 468 | inline float VectorLength(const Vector& v) 469 | { 470 | return (float)FastSqrt(v.x * v.x + v.y * v.y + v.z * v.z); 471 | } 472 | 473 | //VECTOR SUBTRAC 474 | inline void VectorSubtract(const Vector& a, const Vector& b, Vector& c) 475 | { 476 | c.x = a.x - b.x; 477 | c.y = a.y - b.y; 478 | c.z = a.z - b.z; 479 | } 480 | 481 | //VECTORADD 482 | inline void VectorAdd(const Vector& a, const Vector& b, Vector& c) 483 | { 484 | c.x = a.x + b.x; 485 | c.y = a.y + b.y; 486 | c.z = a.z + b.z; 487 | } 488 | 489 | //----------------------------------------------------------------------------- 490 | // Base address... 491 | //----------------------------------------------------------------------------- 492 | inline float* Vector::Base() 493 | { 494 | return (float*)this; 495 | } 496 | 497 | inline float const* Vector::Base() const 498 | { 499 | return (float const*)this; 500 | } 501 | 502 | inline void VectorMAInline(const float* start, float scale, const float* direction, float* dest) 503 | { 504 | dest[0] = start[0] + direction[0] * scale; 505 | dest[1] = start[1] + direction[1] * scale; 506 | dest[2] = start[2] + direction[2] * scale; 507 | } 508 | 509 | inline void VectorMAInline(const Vector& start, float scale, const Vector& direction, Vector& dest) 510 | { 511 | dest.x = start.x + direction.x * scale; 512 | dest.y = start.y + direction.y * scale; 513 | dest.z = start.z + direction.z * scale; 514 | } 515 | 516 | inline void VectorMA(const Vector& start, float scale, const Vector& direction, Vector& dest) 517 | { 518 | VectorMAInline(start, scale, direction, dest); 519 | } 520 | 521 | inline void VectorMA(const float* start, float scale, const float* direction, float* dest) 522 | { 523 | VectorMAInline(start, scale, direction, dest); 524 | } 525 | 526 | inline unsigned long& FloatBits(float& f) 527 | { 528 | return *reinterpret_cast(&f); 529 | } 530 | 531 | inline bool IsFinite(float f) 532 | { 533 | return ((FloatBits(f) & 0x7F800000) != 0x7F800000); 534 | } 535 | 536 | //========================================================= 537 | // 2D Vector2D 538 | //========================================================= 539 | 540 | class Vector2D 541 | { 542 | public: 543 | // Members 544 | float x, y; 545 | 546 | // Construction/destruction 547 | Vector2D(void); 548 | Vector2D(float X, float Y); 549 | Vector2D(const float* pFloat); 550 | 551 | // Initialization 552 | void Init(float ix = 0.0f, float iy = 0.0f); 553 | 554 | // Got any nasty NAN's? 555 | bool IsValid() const; 556 | 557 | // array access... 558 | float operator[](int i) const; 559 | float& operator[](int i); 560 | 561 | // Base address... 562 | float* Base(); 563 | float const* Base() const; 564 | 565 | // Initialization methods 566 | void Random(float minVal, float maxVal); 567 | 568 | // equality 569 | bool operator==(const Vector2D& v) const; 570 | bool operator!=(const Vector2D& v) const; 571 | 572 | // arithmetic operations 573 | Vector2D& operator+=(const Vector2D& v); 574 | Vector2D& operator-=(const Vector2D& v); 575 | Vector2D& operator*=(const Vector2D& v); 576 | Vector2D& operator*=(float s); 577 | Vector2D& operator/=(const Vector2D& v); 578 | Vector2D& operator/=(float s); 579 | 580 | // negate the Vector2D components 581 | void Negate(); 582 | 583 | // Get the Vector2D's magnitude. 584 | float Length() const; 585 | 586 | // Get the Vector2D's magnitude squared. 587 | float LengthSqr(void) const; 588 | 589 | // return true if this vector is (0,0) within tolerance 590 | bool IsZero(float tolerance = 0.01f) const 591 | { 592 | return (x > -tolerance && x < tolerance && 593 | y > -tolerance && y < tolerance); 594 | } 595 | 596 | float Normalize(); 597 | 598 | // Normalize in place and return the old length. 599 | float NormalizeInPlace(); 600 | 601 | // Compare length. 602 | bool IsLengthGreaterThan(float val) const; 603 | bool IsLengthLessThan(float val) const; 604 | 605 | // Get the distance from this Vector2D to the other one. 606 | float DistTo(const Vector2D& vOther) const; 607 | 608 | // Get the distance from this Vector2D to the other one squared. 609 | float DistToSqr(const Vector2D& vOther) const; 610 | 611 | // Copy 612 | void CopyToArray(float* rgfl) const; 613 | 614 | // Multiply, add, and assign to this (ie: *this = a + b * scalar). This 615 | // is about 12% faster than the actual Vector2D equation (because it's done per-component 616 | // rather than per-Vector2D). 617 | void MulAdd(const Vector2D& a, const Vector2D& b, float scalar); 618 | 619 | // Dot product. 620 | float Dot(const Vector2D& vOther) const; 621 | 622 | // assignment 623 | Vector2D& operator=(const Vector2D& vOther); 624 | 625 | #ifndef VECTOR_NO_SLOW_OPERATIONS 626 | // copy constructors 627 | Vector2D(const Vector2D& vOther); 628 | 629 | // arithmetic operations 630 | Vector2D operator-(void) const; 631 | 632 | Vector2D operator+(const Vector2D& v) const; 633 | Vector2D operator-(const Vector2D& v) const; 634 | Vector2D operator*(const Vector2D& v) const; 635 | Vector2D operator/(const Vector2D& v) const; 636 | Vector2D operator*(float fl) const; 637 | Vector2D operator/(float fl) const; 638 | 639 | // Cross product between two vectors. 640 | Vector2D Cross(const Vector2D& vOther) const; 641 | 642 | // Returns a Vector2D with the min or max in X, Y, and Z. 643 | Vector2D Min(const Vector2D& vOther) const; 644 | Vector2D Max(const Vector2D& vOther) const; 645 | 646 | #else 647 | 648 | private: 649 | // No copy constructors allowed if we're in optimal mode 650 | Vector2D(const Vector2D& vOther); 651 | #endif 652 | }; 653 | 654 | //----------------------------------------------------------------------------- 655 | 656 | const Vector2D vec2_origin(0, 0); 657 | //const Vector2D vec2_invalid(3.40282347E+38F, 3.40282347E+38F); 658 | 659 | //----------------------------------------------------------------------------- 660 | // Vector2D related operations 661 | //----------------------------------------------------------------------------- 662 | 663 | // Vector2D clear 664 | void Vector2DClear(Vector2D& a); 665 | 666 | // Copy 667 | void Vector2DCopy(const Vector2D& src, Vector2D& dst); 668 | 669 | // Vector2D arithmetic 670 | void Vector2DAdd(const Vector2D& a, const Vector2D& b, Vector2D& result); 671 | void Vector2DSubtract(const Vector2D& a, const Vector2D& b, Vector2D& result); 672 | void Vector2DMultiply(const Vector2D& a, float b, Vector2D& result); 673 | void Vector2DMultiply(const Vector2D& a, const Vector2D& b, Vector2D& result); 674 | void Vector2DDivide(const Vector2D& a, float b, Vector2D& result); 675 | void Vector2DDivide(const Vector2D& a, const Vector2D& b, Vector2D& result); 676 | void Vector2DMA(const Vector2D& start, float s, const Vector2D& dir, Vector2D& result); 677 | 678 | // Store the min or max of each of x, y, and z into the result. 679 | void Vector2DMin(const Vector2D& a, const Vector2D& b, Vector2D& result); 680 | void Vector2DMax(const Vector2D& a, const Vector2D& b, Vector2D& result); 681 | 682 | #define Vector2DExpand( v ) (v).x, (v).y 683 | 684 | // Normalization 685 | float Vector2DNormalize(Vector2D& v); 686 | 687 | // Length 688 | float Vector2DLength(const Vector2D& v); 689 | 690 | // Dot Product 691 | float DotProduct2D(const Vector2D& a, const Vector2D& b); 692 | 693 | // Linearly interpolate between two vectors 694 | void Vector2DLerp(const Vector2D& src1, const Vector2D& src2, float t, Vector2D& dest); 695 | 696 | //----------------------------------------------------------------------------- 697 | // 698 | // Inlined Vector2D methods 699 | // 700 | //----------------------------------------------------------------------------- 701 | 702 | //----------------------------------------------------------------------------- 703 | // constructors 704 | //----------------------------------------------------------------------------- 705 | 706 | inline Vector2D::Vector2D(void) 707 | { 708 | #ifdef _DEBUG 709 | // Initialize to NAN to catch errors 710 | //x = y = float_NAN; 711 | #endif 712 | } 713 | 714 | inline Vector2D::Vector2D(float X, float Y) 715 | { 716 | x = X; y = Y; 717 | Assert(IsValid()); 718 | } 719 | 720 | inline Vector2D::Vector2D(const float* pFloat) 721 | { 722 | Assert(pFloat); 723 | x = pFloat[0]; y = pFloat[1]; 724 | Assert(IsValid()); 725 | } 726 | 727 | //----------------------------------------------------------------------------- 728 | // copy constructor 729 | //----------------------------------------------------------------------------- 730 | 731 | inline Vector2D::Vector2D(const Vector2D& vOther) 732 | { 733 | Assert(vOther.IsValid()); 734 | x = vOther.x; y = vOther.y; 735 | } 736 | 737 | //----------------------------------------------------------------------------- 738 | // initialization 739 | //----------------------------------------------------------------------------- 740 | 741 | inline void Vector2D::Init(float ix, float iy) 742 | { 743 | x = ix; y = iy; 744 | Assert(IsValid()); 745 | } 746 | 747 | inline void Vector2D::Random(float minVal, float maxVal) 748 | { 749 | x = minVal + ((float)rand() / VALVE_RAND_MAX) * (maxVal - minVal); 750 | y = minVal + ((float)rand() / VALVE_RAND_MAX) * (maxVal - minVal); 751 | } 752 | 753 | inline void Vector2DClear(Vector2D& a) 754 | { 755 | a.x = a.y = 0.0f; 756 | } 757 | 758 | //----------------------------------------------------------------------------- 759 | // assignment 760 | //----------------------------------------------------------------------------- 761 | 762 | inline Vector2D& Vector2D::operator=(const Vector2D& vOther) 763 | { 764 | Assert(vOther.IsValid()); 765 | x = vOther.x; y = vOther.y; 766 | return *this; 767 | } 768 | 769 | //----------------------------------------------------------------------------- 770 | // Array access 771 | //----------------------------------------------------------------------------- 772 | 773 | inline float& Vector2D::operator[](int i) 774 | { 775 | Assert((i >= 0) && (i < 2)); 776 | return ((float*)this)[i]; 777 | } 778 | 779 | inline float Vector2D::operator[](int i) const 780 | { 781 | Assert((i >= 0) && (i < 2)); 782 | return ((float*)this)[i]; 783 | } 784 | 785 | //----------------------------------------------------------------------------- 786 | // Base address... 787 | //----------------------------------------------------------------------------- 788 | 789 | inline float* Vector2D::Base() 790 | { 791 | return (float*)this; 792 | } 793 | 794 | inline float const* Vector2D::Base() const 795 | { 796 | return (float const*)this; 797 | } 798 | 799 | //----------------------------------------------------------------------------- 800 | // IsValid? 801 | //----------------------------------------------------------------------------- 802 | 803 | inline bool Vector2D::IsValid() const 804 | { 805 | return IsFinite(x) && IsFinite(y); 806 | } 807 | 808 | //----------------------------------------------------------------------------- 809 | // comparison 810 | //----------------------------------------------------------------------------- 811 | 812 | inline bool Vector2D::operator==(const Vector2D& src) const 813 | { 814 | Assert(src.IsValid() && IsValid()); 815 | return (src.x == x) && (src.y == y); 816 | } 817 | 818 | inline bool Vector2D::operator!=(const Vector2D& src) const 819 | { 820 | Assert(src.IsValid() && IsValid()); 821 | return (src.x != x) || (src.y != y); 822 | } 823 | 824 | //----------------------------------------------------------------------------- 825 | // Copy 826 | //----------------------------------------------------------------------------- 827 | 828 | inline void Vector2DCopy(const Vector2D& src, Vector2D& dst) 829 | { 830 | Assert(src.IsValid()); 831 | dst.x = src.x; 832 | dst.y = src.y; 833 | } 834 | 835 | inline void Vector2D::CopyToArray(float* rgfl) const 836 | { 837 | Assert(IsValid()); 838 | Assert(rgfl); 839 | rgfl[0] = x; rgfl[1] = y; 840 | } 841 | 842 | //----------------------------------------------------------------------------- 843 | // standard math operations 844 | //----------------------------------------------------------------------------- 845 | 846 | inline void Vector2D::Negate() 847 | { 848 | Assert(IsValid()); 849 | x = -x; y = -y; 850 | } 851 | 852 | inline Vector2D& Vector2D::operator+=(const Vector2D& v) 853 | { 854 | Assert(IsValid() && v.IsValid()); 855 | x += v.x; y += v.y; 856 | return *this; 857 | } 858 | 859 | inline Vector2D& Vector2D::operator-=(const Vector2D& v) 860 | { 861 | Assert(IsValid() && v.IsValid()); 862 | x -= v.x; y -= v.y; 863 | return *this; 864 | } 865 | 866 | inline Vector2D& Vector2D::operator*=(float fl) 867 | { 868 | x *= fl; 869 | y *= fl; 870 | Assert(IsValid()); 871 | return *this; 872 | } 873 | 874 | inline Vector2D& Vector2D::operator*=(const Vector2D& v) 875 | { 876 | x *= v.x; 877 | y *= v.y; 878 | Assert(IsValid()); 879 | return *this; 880 | } 881 | 882 | inline Vector2D& Vector2D::operator/=(float fl) 883 | { 884 | Assert(fl != 0.0f); 885 | float oofl = 1.0f / fl; 886 | x *= oofl; 887 | y *= oofl; 888 | Assert(IsValid()); 889 | return *this; 890 | } 891 | 892 | inline Vector2D& Vector2D::operator/=(const Vector2D& v) 893 | { 894 | Assert(v.x != 0.0f && v.y != 0.0f); 895 | x /= v.x; 896 | y /= v.y; 897 | Assert(IsValid()); 898 | return *this; 899 | } 900 | 901 | inline void Vector2DAdd(const Vector2D& a, const Vector2D& b, Vector2D& c) 902 | { 903 | Assert(a.IsValid() && b.IsValid()); 904 | c.x = a.x + b.x; 905 | c.y = a.y + b.y; 906 | } 907 | 908 | inline void Vector2DSubtract(const Vector2D& a, const Vector2D& b, Vector2D& c) 909 | { 910 | Assert(a.IsValid() && b.IsValid()); 911 | c.x = a.x - b.x; 912 | c.y = a.y - b.y; 913 | } 914 | 915 | inline void Vector2DMultiply(const Vector2D& a, float b, Vector2D& c) 916 | { 917 | Assert(a.IsValid() && IsFinite(b)); 918 | c.x = a.x * b; 919 | c.y = a.y * b; 920 | } 921 | 922 | inline void Vector2DMultiply(const Vector2D& a, const Vector2D& b, Vector2D& c) 923 | { 924 | Assert(a.IsValid() && b.IsValid()); 925 | c.x = a.x * b.x; 926 | c.y = a.y * b.y; 927 | } 928 | 929 | inline void Vector2DDivide(const Vector2D& a, float b, Vector2D& c) 930 | { 931 | Assert(a.IsValid()); 932 | Assert(b != 0.0f); 933 | float oob = 1.0f / b; 934 | c.x = a.x * oob; 935 | c.y = a.y * oob; 936 | } 937 | 938 | inline void Vector2DDivide(const Vector2D& a, const Vector2D& b, Vector2D& c) 939 | { 940 | Assert(a.IsValid()); 941 | Assert((b.x != 0.0f) && (b.y != 0.0f)); 942 | c.x = a.x / b.x; 943 | c.y = a.y / b.y; 944 | } 945 | 946 | inline void Vector2DMA(const Vector2D& start, float s, const Vector2D& dir, Vector2D& result) 947 | { 948 | Assert(start.IsValid() && IsFinite(s) && dir.IsValid()); 949 | result.x = start.x + s * dir.x; 950 | result.y = start.y + s * dir.y; 951 | } 952 | 953 | // FIXME: Remove 954 | // For backwards compatability 955 | inline void Vector2D::MulAdd(const Vector2D& a, const Vector2D& b, float scalar) 956 | { 957 | x = a.x + b.x * scalar; 958 | y = a.y + b.y * scalar; 959 | } 960 | 961 | inline void Vector2DLerp(const Vector2D& src1, const Vector2D& src2, float t, Vector2D& dest) 962 | { 963 | dest[0] = src1[0] + (src2[0] - src1[0]) * t; 964 | dest[1] = src1[1] + (src2[1] - src1[1]) * t; 965 | } 966 | 967 | //----------------------------------------------------------------------------- 968 | // dot, cross 969 | //----------------------------------------------------------------------------- 970 | inline float DotProduct2D(const Vector2D& a, const Vector2D& b) 971 | { 972 | Assert(a.IsValid() && b.IsValid()); 973 | return(a.x * b.x + a.y * b.y); 974 | } 975 | 976 | // for backwards compatability 977 | inline float Vector2D::Dot(const Vector2D& vOther) const 978 | { 979 | return DotProduct2D(*this, vOther); 980 | } 981 | 982 | //----------------------------------------------------------------------------- 983 | // length 984 | //----------------------------------------------------------------------------- 985 | inline float Vector2DLength(const Vector2D& v) 986 | { 987 | Assert(v.IsValid()); 988 | return (float)FastSqrt(v.x * v.x + v.y * v.y); 989 | } 990 | 991 | inline float Vector2D::LengthSqr(void) const 992 | { 993 | Assert(IsValid()); 994 | return (x * x + y * y); 995 | } 996 | 997 | inline float Vector2D::NormalizeInPlace() 998 | { 999 | return Vector2DNormalize(*this); 1000 | } 1001 | 1002 | inline bool Vector2D::IsLengthGreaterThan(float val) const 1003 | { 1004 | return LengthSqr() > val* val; 1005 | } 1006 | 1007 | inline bool Vector2D::IsLengthLessThan(float val) const 1008 | { 1009 | return LengthSqr() < val * val; 1010 | } 1011 | 1012 | inline float Vector2D::Length(void) const 1013 | { 1014 | return Vector2DLength(*this); 1015 | } 1016 | 1017 | inline void Vector2DMin(const Vector2D& a, const Vector2D& b, Vector2D& result) 1018 | { 1019 | result.x = (a.x < b.x) ? a.x : b.x; 1020 | result.y = (a.y < b.y) ? a.y : b.y; 1021 | } 1022 | 1023 | inline void Vector2DMax(const Vector2D& a, const Vector2D& b, Vector2D& result) 1024 | { 1025 | result.x = (a.x > b.x) ? a.x : b.x; 1026 | result.y = (a.y > b.y) ? a.y : b.y; 1027 | } 1028 | 1029 | //----------------------------------------------------------------------------- 1030 | // Normalization 1031 | //----------------------------------------------------------------------------- 1032 | inline float Vector2DNormalize(Vector2D& v) 1033 | { 1034 | Assert(v.IsValid()); 1035 | float l = v.Length(); 1036 | if (l != 0.0f) 1037 | { 1038 | v /= l; 1039 | } 1040 | else 1041 | { 1042 | v.x = v.y = 0.0f; 1043 | } 1044 | return l; 1045 | } 1046 | 1047 | //----------------------------------------------------------------------------- 1048 | // Get the distance from this Vector2D to the other one 1049 | //----------------------------------------------------------------------------- 1050 | inline float Vector2D::DistTo(const Vector2D& vOther) const 1051 | { 1052 | Vector2D delta; 1053 | Vector2DSubtract(*this, vOther, delta); 1054 | return delta.Length(); 1055 | } 1056 | 1057 | inline float Vector2D::DistToSqr(const Vector2D& vOther) const 1058 | { 1059 | Vector2D delta; 1060 | Vector2DSubtract(*this, vOther, delta); 1061 | return delta.LengthSqr(); 1062 | } 1063 | 1064 | //----------------------------------------------------------------------------- 1065 | // Computes the closest point to vecTarget no farther than flMaxDist from vecStart 1066 | //----------------------------------------------------------------------------- 1067 | inline void ComputeClosestPoint2D(const Vector2D& vecStart, float flMaxDist, const Vector2D& vecTarget, Vector2D* pResult) 1068 | { 1069 | Vector2D vecDelta; 1070 | Vector2DSubtract(vecTarget, vecStart, vecDelta); 1071 | float flDistSqr = vecDelta.LengthSqr(); 1072 | if (flDistSqr <= flMaxDist * flMaxDist) 1073 | { 1074 | *pResult = vecTarget; 1075 | } 1076 | else 1077 | { 1078 | vecDelta /= FastSqrt(flDistSqr); 1079 | Vector2DMA(vecStart, flMaxDist, vecDelta, *pResult); 1080 | } 1081 | } 1082 | 1083 | //----------------------------------------------------------------------------- 1084 | // 1085 | // Slow methods 1086 | // 1087 | //----------------------------------------------------------------------------- 1088 | 1089 | #ifndef VECTOR_NO_SLOW_OPERATIONS 1090 | #endif 1091 | //----------------------------------------------------------------------------- 1092 | // Returns a Vector2D with the min or max in X, Y, and Z. 1093 | //----------------------------------------------------------------------------- 1094 | 1095 | inline Vector2D Vector2D::Min(const Vector2D& vOther) const 1096 | { 1097 | return Vector2D(x < vOther.x ? x : vOther.x, 1098 | y < vOther.y ? y : vOther.y); 1099 | } 1100 | 1101 | inline Vector2D Vector2D::Max(const Vector2D& vOther) const 1102 | { 1103 | return Vector2D(x > vOther.x ? x : vOther.x, 1104 | y > vOther.y ? y : vOther.y); 1105 | } 1106 | 1107 | //----------------------------------------------------------------------------- 1108 | // arithmetic operations 1109 | //----------------------------------------------------------------------------- 1110 | 1111 | inline Vector2D Vector2D::operator-(void) const 1112 | { 1113 | return Vector2D(-x, -y); 1114 | } 1115 | 1116 | inline Vector2D Vector2D::operator+(const Vector2D& v) const 1117 | { 1118 | Vector2D res; 1119 | Vector2DAdd(*this, v, res); 1120 | return res; 1121 | } 1122 | 1123 | inline Vector2D Vector2D::operator-(const Vector2D& v) const 1124 | { 1125 | Vector2D res; 1126 | Vector2DSubtract(*this, v, res); 1127 | return res; 1128 | } 1129 | 1130 | inline Vector2D Vector2D::operator*(float fl) const 1131 | { 1132 | Vector2D res; 1133 | Vector2DMultiply(*this, fl, res); 1134 | return res; 1135 | } 1136 | 1137 | inline Vector2D Vector2D::operator*(const Vector2D& v) const 1138 | { 1139 | Vector2D res; 1140 | Vector2DMultiply(*this, v, res); 1141 | return res; 1142 | } 1143 | 1144 | inline Vector2D Vector2D::operator/(float fl) const 1145 | { 1146 | Vector2D res; 1147 | Vector2DDivide(*this, fl, res); 1148 | return res; 1149 | } 1150 | 1151 | inline Vector2D Vector2D::operator/(const Vector2D& v) const 1152 | { 1153 | Vector2D res; 1154 | Vector2DDivide(*this, v, res); 1155 | return res; 1156 | } 1157 | 1158 | inline Vector2D operator*(float fl, const Vector2D& v) 1159 | { 1160 | return v * fl; 1161 | } 1162 | 1163 | class QAngleByValue; 1164 | class QAngle 1165 | { 1166 | public: 1167 | // Members 1168 | float x, y, z; 1169 | 1170 | // Construction/destruction 1171 | QAngle(void); 1172 | QAngle(float X, float Y, float Z); 1173 | // QAngle(RadianEuler const &angles); // evil auto type promotion!!! 1174 | 1175 | // Allow pass-by-value 1176 | operator QAngleByValue& () { return *((QAngleByValue*)(this)); } 1177 | operator const QAngleByValue& () const { return *((const QAngleByValue*)(this)); } 1178 | 1179 | // Initialization 1180 | void Init(float ix = 0.0f, float iy = 0.0f, float iz = 0.0f); 1181 | void Random(float minVal, float maxVal); 1182 | 1183 | // Got any nasty NAN's? 1184 | bool IsValid() const; 1185 | void Invalidate(); 1186 | 1187 | // array access... 1188 | float operator[](int i) const; 1189 | float& operator[](int i); 1190 | 1191 | // Base address... 1192 | float* Base(); 1193 | float const* Base() const; 1194 | 1195 | // equality 1196 | bool operator==(const QAngle& v) const; 1197 | bool operator!=(const QAngle& v) const; 1198 | 1199 | bool IsZero(float tolerance = 0.01f) const 1200 | { 1201 | return (x > -tolerance && x < tolerance && 1202 | y > -tolerance && y < tolerance && 1203 | z > -tolerance && z < tolerance); 1204 | } 1205 | 1206 | // arithmetic operations 1207 | QAngle& operator+=(const QAngle& v); 1208 | QAngle& operator-=(const QAngle& v); 1209 | QAngle& operator*=(float s); 1210 | QAngle& operator/=(float s); 1211 | 1212 | // Get the vector's magnitude. 1213 | float Length() const; 1214 | float LengthSqr() const; 1215 | 1216 | // negate the QAngle components 1217 | //void Negate(); 1218 | 1219 | // No assignment operators either... 1220 | QAngle& operator=(const QAngle& src); 1221 | 1222 | #ifndef VECTOR_NO_SLOW_OPERATIONS 1223 | // copy constructors 1224 | 1225 | // arithmetic operations 1226 | QAngle operator-(void) const; 1227 | 1228 | QAngle operator+(const QAngle& v) const; 1229 | QAngle operator-(const QAngle& v) const; 1230 | QAngle operator*(float fl) const; 1231 | QAngle operator/(float fl) const; 1232 | #else 1233 | 1234 | private: 1235 | // No copy constructors allowed if we're in optimal mode 1236 | QAngle(const QAngle& vOther); 1237 | 1238 | #endif 1239 | }; 1240 | 1241 | //----------------------------------------------------------------------------- 1242 | // constructors 1243 | //----------------------------------------------------------------------------- 1244 | inline QAngle::QAngle(void) 1245 | { 1246 | #ifdef _DEBUG 1247 | #ifdef VECTOR_PARANOIA 1248 | // Initialize to NAN to catch errors 1249 | x = y = z = VEC_T_NAN; 1250 | #endif 1251 | #endif 1252 | } 1253 | 1254 | inline QAngle::QAngle(float X, float Y, float Z) 1255 | { 1256 | x = X; y = Y; z = Z; 1257 | } 1258 | 1259 | //----------------------------------------------------------------------------- 1260 | // initialization 1261 | //----------------------------------------------------------------------------- 1262 | inline void QAngle::Init(float ix, float iy, float iz) 1263 | { 1264 | x = ix; y = iy; z = iz; 1265 | } 1266 | 1267 | inline void QAngle::Random(float minVal, float maxVal) 1268 | { 1269 | x = minVal + ((float)rand() / RAND_MAX) * (maxVal - minVal); 1270 | y = minVal + ((float)rand() / RAND_MAX) * (maxVal - minVal); 1271 | z = minVal + ((float)rand() / RAND_MAX) * (maxVal - minVal); 1272 | } 1273 | 1274 | //----------------------------------------------------------------------------- 1275 | // assignment 1276 | //----------------------------------------------------------------------------- 1277 | inline QAngle& QAngle::operator=(const QAngle& vOther) 1278 | { 1279 | x = vOther.x; y = vOther.y; z = vOther.z; 1280 | return *this; 1281 | } 1282 | 1283 | //----------------------------------------------------------------------------- 1284 | // comparison 1285 | //----------------------------------------------------------------------------- 1286 | inline bool QAngle::operator==(const QAngle& src) const 1287 | { 1288 | return (src.x == x) && (src.y == y) && (src.z == z); 1289 | } 1290 | 1291 | inline bool QAngle::operator!=(const QAngle& src) const 1292 | { 1293 | return (src.x != x) || (src.y != y) || (src.z != z); 1294 | } 1295 | 1296 | //----------------------------------------------------------------------------- 1297 | // standard math operations 1298 | //----------------------------------------------------------------------------- 1299 | inline QAngle& QAngle::operator+=(const QAngle& v) 1300 | { 1301 | x += v.x; y += v.y; z += v.z; 1302 | return *this; 1303 | } 1304 | 1305 | inline QAngle& QAngle::operator-=(const QAngle& v) 1306 | { 1307 | x -= v.x; y -= v.y; z -= v.z; 1308 | return *this; 1309 | } 1310 | 1311 | inline QAngle& QAngle::operator*=(float fl) 1312 | { 1313 | x *= fl; 1314 | y *= fl; 1315 | z *= fl; 1316 | 1317 | return *this; 1318 | } 1319 | 1320 | inline QAngle& QAngle::operator/=(float fl) 1321 | { 1322 | Assert(fl != 0.0f); 1323 | float oofl = 1.0f / fl; 1324 | x *= oofl; 1325 | y *= oofl; 1326 | z *= oofl; 1327 | 1328 | return *this; 1329 | } 1330 | 1331 | //----------------------------------------------------------------------------- 1332 | // Base address... 1333 | //----------------------------------------------------------------------------- 1334 | inline float* QAngle::Base() 1335 | { 1336 | return (float*)this; 1337 | } 1338 | 1339 | inline float const* QAngle::Base() const 1340 | { 1341 | return (float const*)this; 1342 | } 1343 | 1344 | //----------------------------------------------------------------------------- 1345 | // Array access 1346 | //----------------------------------------------------------------------------- 1347 | inline float& QAngle::operator[](int i) 1348 | { 1349 | Assert((i >= 0) && (i < 3)); 1350 | return ((float*)this)[i]; 1351 | } 1352 | 1353 | inline float QAngle::operator[](int i) const 1354 | { 1355 | Assert((i >= 0) && (i < 3)); 1356 | return ((float*)this)[i]; 1357 | } 1358 | 1359 | //----------------------------------------------------------------------------- 1360 | // length 1361 | //----------------------------------------------------------------------------- 1362 | inline float QAngle::Length() const 1363 | { 1364 | return (float)FastSqrt(LengthSqr()); 1365 | } 1366 | 1367 | inline float QAngle::LengthSqr() const 1368 | { 1369 | return x * x + y * y + z * z; 1370 | } 1371 | 1372 | //----------------------------------------------------------------------------- 1373 | // arithmetic operations (SLOW!!) 1374 | //----------------------------------------------------------------------------- 1375 | #ifndef VECTOR_NO_SLOW_OPERATIONS 1376 | 1377 | inline QAngle QAngle::operator-(void) const 1378 | { 1379 | return QAngle(-x, -y, -z); 1380 | } 1381 | 1382 | inline QAngle QAngle::operator+(const QAngle& v) const 1383 | { 1384 | QAngle res; 1385 | res.x = x + v.x; 1386 | res.y = y + v.y; 1387 | res.z = z + v.z; 1388 | return res; 1389 | } 1390 | 1391 | inline QAngle QAngle::operator-(const QAngle& v) const 1392 | { 1393 | QAngle res; 1394 | res.x = x - v.x; 1395 | res.y = y - v.y; 1396 | res.z = z - v.z; 1397 | return res; 1398 | } 1399 | 1400 | inline QAngle QAngle::operator*(float fl) const 1401 | { 1402 | QAngle res; 1403 | res.x = x * fl; 1404 | res.y = y * fl; 1405 | res.z = z * fl; 1406 | return res; 1407 | } 1408 | 1409 | inline QAngle QAngle::operator/(float fl) const 1410 | { 1411 | QAngle res; 1412 | res.x = x / fl; 1413 | res.y = y / fl; 1414 | res.z = z / fl; 1415 | return res; 1416 | } 1417 | 1418 | inline QAngle operator*(float fl, const QAngle& v) 1419 | { 1420 | return v * fl; 1421 | } 1422 | 1423 | #endif // VECTOR_NO_SLOW_OPERATIONS 1424 | 1425 | //QANGLE SUBTRAC 1426 | inline void QAngleSubtract(const QAngle& a, const QAngle& b, QAngle& c) 1427 | { 1428 | c.x = a.x - b.x; 1429 | c.y = a.y - b.y; 1430 | c.z = a.z - b.z; 1431 | } 1432 | 1433 | //QANGLEADD 1434 | inline void QAngleAdd(const QAngle& a, const QAngle& b, QAngle& c) 1435 | { 1436 | c.x = a.x + b.x; 1437 | c.y = a.y + b.y; 1438 | c.z = a.z + b.z; 1439 | } -------------------------------------------------------------------------------- /[教程] [本人] Apex Legends/[辉光] [锁头] [稳定版本]/README.md: -------------------------------------------------------------------------------- 1 | # 前言 2 | 3 | 比较稳的版本 4 | 5 | [测试视频](https://www.ixigua.com/6882288233745482254/?utm_source=xiguastudio) 6 | 7 | # 截图展示 8 |

9 | 10 |

11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /[教程] [本人] Apex Legends/[辉光] [锁头] [稳定版本]/cheats.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Apex Legends/[辉光] [锁头] [稳定版本]/cheats.hpp -------------------------------------------------------------------------------- /[教程] [本人] Apex Legends/[辉光] [锁头] [稳定版本]/demo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Apex Legends/[辉光] [锁头] [稳定版本]/demo.jpg -------------------------------------------------------------------------------- /[教程] [本人] Apex Legends/[辉光] [锁头] [稳定版本]/entity.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Apex Legends/[辉光] [锁头] [稳定版本]/entity.hpp -------------------------------------------------------------------------------- /[教程] [本人] Apex Legends/[辉光] [锁头] [稳定版本]/main.cpp: -------------------------------------------------------------------------------- 1 | #include "cheats.hpp" 2 | 3 | int main(int argc, char* argv[]) 4 | { 5 | apex_cheats g; 6 | g.start_cheats(); 7 | 8 | return 0; 9 | } -------------------------------------------------------------------------------- /[教程] [本人] Apex Legends/[辉光] [锁头] [稳定版本]/memory.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Apex Legends/[辉光] [锁头] [稳定版本]/memory.hpp -------------------------------------------------------------------------------- /[教程] [本人] Apex Legends/[辉光] [锁头] [稳定版本]/offsets.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Apex Legends/[辉光] [锁头] [稳定版本]/offsets.hpp -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/A.辅助程序最终效果演示/README.md: -------------------------------------------------------------------------------- 1 | 2 | # 在线观看 3 | [西瓜视频](https://www.ixigua.com/i6820012630774645260/) 4 | 5 | # 视频下载 6 | 提取码: rjfd [百度网盘下载](https://pan.baidu.com/s/1xBPwbffECa9PZhf2VLf9lg) 7 | 8 | 9 | # 截图展示 10 |

11 | 12 |

13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/A.辅助程序最终效果演示/demo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Counterstrike Global Offensive/A.辅助程序最终效果演示/demo.jpg -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/B.使用CE查找自己的矩阵信息/README.md: -------------------------------------------------------------------------------- 1 | 2 | # 在线观看 3 | [西瓜视频](https://www.ixigua.com/i6820014498091368964/) 4 | [理解矩阵](https://www.ixigua.com/i6820015806319952392/) 5 | 6 | # 视频下载 7 | 提取码: wehn [百度网盘下载](https://pan.baidu.com/s/1SsmbEZVwr4XsuLqs70883g) 8 | 9 | 10 | # 截图展示 11 |

12 | 13 |

14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/B.使用CE查找自己的矩阵信息/demo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Counterstrike Global Offensive/B.使用CE查找自己的矩阵信息/demo.jpg -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/C.使用CE查找自己的角度信息/README.md: -------------------------------------------------------------------------------- 1 | 2 | # 在线观看 3 | [西瓜视频](https://www.ixigua.com/i6820016695306879492/) 4 | [理解角度](https://www.ixigua.com/i6820017677113754115/) 5 | 6 | # 视频下载 7 | 提取码: vxhf [百度网盘下载](https://pan.baidu.com/s/1YsQ6q55qIlbreZ3O39fJlw) 8 | 9 | # 截图展示 10 |

11 | 12 |

13 | 14 | 15 | # 其它辅助相关网站 16 | 国外的,但牛逼 17 | 18 | https://www.unknowncheats.me/forum/index.php 19 | 20 | 国内的 21 | https://www.freebuf.com/news/139515.html 22 | 23 | https://gslab.qq.com/portal.php?mod=view&aid=168 24 | 25 | 26 | -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/C.使用CE查找自己的角度信息/demo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Counterstrike Global Offensive/C.使用CE查找自己的角度信息/demo.jpg -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/D.使用CE查找自己的位置信息/README.md: -------------------------------------------------------------------------------- 1 | 2 | # 在线观看 3 | [西瓜视频](https://www.ixigua.com/i6820022563901538828/) 4 | 5 | # 视频下载 6 | 提取码: q6x6 [百度网盘下载](https://pan.baidu.com/s/1zCsxxGCmgHZffAKDX319pw) 7 | 8 | 9 | # 截图展示 10 |

11 | 12 |

13 | 14 | 15 | -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/D.使用CE查找自己的位置信息/demo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Counterstrike Global Offensive/D.使用CE查找自己的位置信息/demo.jpg -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/E.使用CE查找敌人和队友的位置信息/README.md: -------------------------------------------------------------------------------- 1 | 2 | # 在线观看 3 | [西瓜视频](https://www.ixigua.com/i6820024915190612487/) 4 | 5 | # 视频下载 6 | 提取码: 9ns8 [百度网盘下载](https://pan.baidu.com/s/1hhL3Zfzf9p1ErW7PdLOOAA) 7 | 8 | # 截图展示 9 |

10 | 11 |

12 | -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/E.使用CE查找敌人和队友的位置信息/demo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Counterstrike Global Offensive/E.使用CE查找敌人和队友的位置信息/demo.jpg -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/F.使用CE查找敌人和队友的骨骼信息/README.md: -------------------------------------------------------------------------------- 1 | 2 | # 在线观看 3 | [西瓜视频](https://www.ixigua.com/i6820029450143400460/) 4 | 5 | # 视频下载 6 | 提取码: 4vt2 [百度网盘下载](https://pan.baidu.com/s/1LdTyTVlLBEXP4THPy2U6LA) 7 | 8 | # 截图展示 9 |

10 | 11 |

12 | 13 | 14 | -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/F.使用CE查找敌人和队友的骨骼信息/demo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Counterstrike Global Offensive/F.使用CE查找敌人和队友的骨骼信息/demo.jpg -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/G.C++实现inline hook/README.md: -------------------------------------------------------------------------------- 1 | 2 | # 在线视频 3 | [西瓜视频](https://www.ixigua.com/i6820068427600757260/) 4 | [理解inline hook](https://www.ixigua.com/i6820069140699546123/) 5 | 6 | # 视频下载 7 | 提取码: st52 [百度网盘下载](https://pan.baidu.com/s/1BbK1WRlqeJ9eFkMw89htoQ) 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/G.C++实现inline hook/inline_hook.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | constexpr int byte_length = 5; 5 | 6 | class inline_hook 7 | { 8 | private: 9 | using uchar = unsigned char; 10 | using dword = DWORD; 11 | 12 | uchar m_original_byte[byte_length];//原始函数处的汇编指令 13 | uchar m_self_byte[byte_length];//我们构造的汇编指令 14 | 15 | int m_original_address;//原始函数的地址 16 | int m_self_address;//我们函数的地址 17 | 18 | dword motify_memory_attributes(int address, dword attributes = PAGE_EXECUTE_READWRITE) 19 | { 20 | dword old_attributes; 21 | VirtualProtect(reinterpret_cast(address), byte_length, attributes, &old_attributes); 22 | return old_attributes; 23 | } 24 | 25 | public: 26 | inline_hook(int original_address, int self_address) : m_original_address(original_address), m_self_address(self_address) 27 | { 28 | 29 | m_self_byte[0] = '\xe9'; 30 | 31 | //计算偏移 32 | int offset = self_address - (original_address + byte_length); 33 | 34 | //构造跳转到我们函数的byte 35 | memcpy(&m_self_byte[1], &offset, byte_length - 1); 36 | 37 | //修改内存属性 38 | dword attributes = motify_memory_attributes(original_address); 39 | 40 | //保存原始函数地址的byte 41 | memcpy(m_original_byte, reinterpret_cast(original_address), byte_length); 42 | 43 | //恢复内存属性 44 | motify_memory_attributes(original_address, attributes); 45 | } 46 | 47 | void motify_address() 48 | { 49 | dword attributes = motify_memory_attributes(m_original_address); 50 | 51 | //写入我们构造的byte实现inline hook 52 | memcpy(reinterpret_cast(m_original_address), m_self_byte, byte_length); 53 | 54 | motify_memory_attributes(m_original_address, attributes); 55 | } 56 | 57 | void restore_address() 58 | { 59 | dword attributes = motify_memory_attributes(m_original_address); 60 | 61 | memcpy(reinterpret_cast(m_original_address), m_original_byte, byte_length); 62 | 63 | motify_memory_attributes(m_original_address, attributes); 64 | } 65 | 66 | }; 67 | 68 | 69 | -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/H.inline hook Direct3D9/README.md: -------------------------------------------------------------------------------- 1 | 2 | # 在线视频 3 | [西瓜视频](https://www.ixigua.com/i6820320487655080451/) 4 | 5 | # 视频下载 6 | 提取码: ne4k [百度网盘下载](https://pan.baidu.com/s/1erTgRA1vO-WZT-rQFF64jA) 7 | 8 | # 截图展示 9 |

10 | 11 |

12 | 13 | -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/H.inline hook Direct3D9/demo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Counterstrike Global Offensive/H.inline hook Direct3D9/demo.jpg -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/H.inline hook Direct3D9/dll_main.cpp: -------------------------------------------------------------------------------- 1 | #include "do_cheats.hpp" 2 | #include 3 | 4 | int __stdcall DllMain(void* _DllHandle, unsigned long _Reason, void* _Reserved) 5 | { 6 | if (_Reason == DLL_PROCESS_ATTACH) _beginthreadex(nullptr, 0, initialize_d3d9, nullptr, 0, nullptr); 7 | if (_Reason == DLL_PROCESS_DETACH) un_load(); 8 | return 1; 9 | } -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/H.inline hook Direct3D9/do_cheats.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Counterstrike Global Offensive/H.inline hook Direct3D9/do_cheats.hpp -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/H.inline hook Direct3D9/help_func.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Counterstrike Global Offensive/H.inline hook Direct3D9/help_func.hpp -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/H.inline hook Direct3D9/inline_hook.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Counterstrike Global Offensive/H.inline hook Direct3D9/inline_hook.hpp -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/I.imgui + 内外挂/README.md: -------------------------------------------------------------------------------- 1 | 2 | # 在线视频 3 | [西瓜视频](https://www.ixigua.com/i6820337977294586371/) 4 | 5 | # 视频下载 6 | 提取码: iizn [百度网盘下载](https://pan.baidu.com/s/1TdPnDxnTC3uVZW82u9E1FQ) 7 | 8 | # 截图展示 9 |

10 | 11 |

12 | 13 | -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/I.imgui + 内外挂/demo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Counterstrike Global Offensive/I.imgui + 内外挂/demo.jpg -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/I.imgui + 内外挂/内挂/dll_main.cpp: -------------------------------------------------------------------------------- 1 | #include "do_cheats.hpp" 2 | #include 3 | 4 | int __stdcall DllMain(void* _DllHandle, unsigned long _Reason, void* _Reserved) 5 | { 6 | if (_Reason == DLL_PROCESS_ATTACH) _beginthreadex(nullptr, 0, initialize_d3d9, nullptr, 0, nullptr); 7 | if (_Reason == DLL_PROCESS_DETACH) un_load(); 8 | return 1; 9 | } -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/I.imgui + 内外挂/内挂/do_cheats.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Counterstrike Global Offensive/I.imgui + 内外挂/内挂/do_cheats.hpp -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/I.imgui + 内外挂/内挂/help_func.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Counterstrike Global Offensive/I.imgui + 内外挂/内挂/help_func.hpp -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/I.imgui + 内外挂/内挂/inline_hook.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Counterstrike Global Offensive/I.imgui + 内外挂/内挂/inline_hook.hpp -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/I.imgui + 内外挂/外挂/main.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Counterstrike Global Offensive/I.imgui + 内外挂/外挂/main.cpp -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/I.imgui + 内外挂/外挂/main.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Counterstrike Global Offensive/I.imgui + 内外挂/外挂/main.h -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/J.DrawIndexedPrimitive的透视实现/README.md: -------------------------------------------------------------------------------- 1 | 2 | # 在线视频 3 | [西瓜视频](https://www.ixigua.com/i6820447200716259844/) 4 | 5 | # 视频下载 6 | 提取码: 82kg [百度网盘下载](https://pan.baidu.com/s/1Lix4eLRMqR3E7FyHYehTAA) 7 | 8 | # 截图展示 9 |

10 | 11 |

12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/J.DrawIndexedPrimitive的透视实现/demo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Counterstrike Global Offensive/J.DrawIndexedPrimitive的透视实现/demo.jpg -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/K.内存模式查找/README.md: -------------------------------------------------------------------------------- 1 | 2 | # 在线视频 3 | [西瓜视频](https://www.ixigua.com/i6821195474209341960/) 4 | 5 | # 视频下载 6 | 提取码: ef8s [百度网盘下载](https://pan.baidu.com/s/1fG9fDzTaEbFFSk3tBU9qnA) 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/K.内存模式查找/csgo.txt: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | // 2020-03-03 21:57:27.571700700 UTC 5 | 6 | namespace hazedumper { 7 | constexpr ::std::int64_t timestamp = 1583272647; 8 | namespace netvars { 9 | constexpr ::std::ptrdiff_t cs_gamerules_data = 0x0;//游戏规则数据 10 | constexpr ::std::ptrdiff_t m_ArmorValue = 0xB368;//防护甲数值 11 | constexpr ::std::ptrdiff_t m_Collision = 0x320;//碰撞 12 | constexpr ::std::ptrdiff_t m_CollisionGroup = 0x474;//碰撞组 13 | constexpr ::std::ptrdiff_t m_Local = 0x2FBC;//本地 14 | constexpr ::std::ptrdiff_t m_MoveType = 0x25C;//移动类型 15 | constexpr ::std::ptrdiff_t m_OriginalOwnerXuidHigh = 0x31B4;//原始所有者uid高 16 | constexpr ::std::ptrdiff_t m_OriginalOwnerXuidLow = 0x31B0;//原始所有者uid低 17 | constexpr ::std::ptrdiff_t m_SurvivalGameRuleDecisionTypes = 0x1320;//生存游戏规则决策类型 18 | constexpr ::std::ptrdiff_t m_SurvivalRules = 0xCF8;//生存规则 19 | constexpr ::std::ptrdiff_t m_aimPunchAngle = 0x302C;//后座力 按住是-5 20 | constexpr ::std::ptrdiff_t m_aimPunchAngleVel = 0x3038;//后座力 按住是-50 加上10左右 21 | constexpr ::std::ptrdiff_t m_angEyeAnglesX = 0xB36C;//视线X角度 22 | constexpr ::std::ptrdiff_t m_angEyeAnglesY = 0xB370;//视线Y角度 23 | constexpr ::std::ptrdiff_t m_bBombPlanted = 0x99D;//炸弹种植 24 | constexpr ::std::ptrdiff_t m_bFreezePeriod = 0x20;//冻结期 25 | constexpr ::std::ptrdiff_t m_bGunGameImmunity = 0x3930;//枪战免疫(在购买武器) 26 | constexpr ::std::ptrdiff_t m_bHasDefuser = 0xB378;//有消音器 27 | constexpr ::std::ptrdiff_t m_bHasHelmet = 0xB35C;//有头盔 28 | constexpr ::std::ptrdiff_t m_bInReload = 0x3295;//正在重新加载 29 | constexpr ::std::ptrdiff_t m_bIsDefusing = 0x391C;//正在拆除炸弹 30 | constexpr ::std::ptrdiff_t m_bIsQueuedMatchmaking = 0x74;//正在排队匹配 31 | constexpr ::std::ptrdiff_t m_bIsScoped = 0x3914;//开镜状态 32 | constexpr ::std::ptrdiff_t m_bIsValveDS = 0x75; 33 | constexpr ::std::ptrdiff_t m_bSpotted = 0x93D;//开镜状态 34 | constexpr ::std::ptrdiff_t m_bSpottedByMask = 0x980;//隐藏斑点 35 | constexpr ::std::ptrdiff_t m_bStartedArming = 0x33E0;//开始射击 36 | constexpr ::std::ptrdiff_t m_bUseCustomAutoExposureMax = 0x9D9;//使用自定义自动曝光最大值 37 | constexpr ::std::ptrdiff_t m_bUseCustomAutoExposureMin = 0x9D8;//使用自定义自动曝光最小值 38 | constexpr ::std::ptrdiff_t m_bUseCustomBloomScale = 0x9DA;//使用自定义花朵缩放 39 | constexpr ::std::ptrdiff_t m_clrRender = 0x70;//clr渲染 40 | constexpr ::std::ptrdiff_t m_dwBoneMatrix = 0x26A8;//头骨矩阵的基址 41 | constexpr ::std::ptrdiff_t m_fAccuracyPenalty = 0x3320;//准确度 越高就越准 42 | constexpr ::std::ptrdiff_t m_fFlags = 0x104;//标识 43 | constexpr ::std::ptrdiff_t m_flC4Blow = 0x2990;//C4 44 | constexpr ::std::ptrdiff_t m_flCustomAutoExposureMax = 0x9E0;//自定义自动曝光最大值 45 | constexpr ::std::ptrdiff_t m_flCustomAutoExposureMin = 0x9DC;//自定义自动曝光最小值 46 | constexpr ::std::ptrdiff_t m_flCustomBloomScale = 0x9E4; 47 | constexpr ::std::ptrdiff_t m_flDefuseCountDown = 0x29AC;//倒数倒计时 48 | constexpr ::std::ptrdiff_t m_flDefuseLength = 0x29A8;//总时间 49 | constexpr ::std::ptrdiff_t m_flFallbackWear = 0x31C0;//后备磨损 50 | constexpr ::std::ptrdiff_t m_flFlashDuration = 0xA410;//闪光持续时间 51 | constexpr ::std::ptrdiff_t m_flFlashMaxAlpha = 0xA40C;//闪光透明度 52 | constexpr ::std::ptrdiff_t m_flLastBoneSetupTime = 0x2924;//最后骨骼设置时间 53 | constexpr ::std::ptrdiff_t m_flLowerBodyYawTarget = 0x3A7C;//下半身偏航目标 54 | constexpr ::std::ptrdiff_t m_flNextAttack = 0x2D70;//下一次攻击的时间 55 | constexpr ::std::ptrdiff_t m_flNextPrimaryAttack = 0x3228;//下一次主要攻击的时间 56 | constexpr ::std::ptrdiff_t m_flSimulationTime = 0x268;//模拟时间 57 | constexpr ::std::ptrdiff_t m_flTimerLength = 0x2994;//计时器总时间 58 | constexpr ::std::ptrdiff_t m_hActiveWeapon = 0x2EF8;//当前拿的武器 59 | constexpr ::std::ptrdiff_t m_hMyWeapons = 0x2DF8;//我的武器 60 | constexpr ::std::ptrdiff_t m_hObserverTarget = 0x338C;//观察者目标 61 | constexpr ::std::ptrdiff_t m_hOwner = 0x29CC;//所有者 62 | constexpr ::std::ptrdiff_t m_hOwnerEntity = 0x14C;//所有者实体 63 | constexpr ::std::ptrdiff_t m_iAccountID = 0x2FC8;//帐户ID 64 | constexpr ::std::ptrdiff_t m_iClip1 = 0x3254;//弹夹 65 | constexpr ::std::ptrdiff_t m_iCompetitiveRanking = 0x1A84;//竞争排名 66 | constexpr ::std::ptrdiff_t m_iCompetitiveWins = 0x1B88;//竞争性胜利 67 | constexpr ::std::ptrdiff_t m_iCrosshairId = 0xB3D4;//十字线ID 68 | constexpr ::std::ptrdiff_t m_iEntityQuality = 0x2FAC;//实体质量 69 | constexpr ::std::ptrdiff_t m_iFOV = 0x31E4;//视野 70 | constexpr ::std::ptrdiff_t m_iFOVStart = 0x31E8;//开始角度 71 | constexpr ::std::ptrdiff_t m_iGlowIndex = 0xA428;//辉光索引 72 | constexpr ::std::ptrdiff_t m_iHealth = 0x100;//血量 73 | constexpr ::std::ptrdiff_t m_iItemDefinitionIndex = 0x2FAA;//项目定义索引 74 | constexpr ::std::ptrdiff_t m_iItemIDHigh = 0x2FC0;//物品ID高 75 | constexpr ::std::ptrdiff_t m_iMostRecentModelBoneCounter = 0x2690;//最新型号骨计数器 76 | constexpr ::std::ptrdiff_t m_iObserverMode = 0x3378;//观察者模式 77 | constexpr ::std::ptrdiff_t m_iShotsFired = 0xA380;//开枪状态 78 | constexpr ::std::ptrdiff_t m_iState = 0x3248;//状态 79 | constexpr ::std::ptrdiff_t m_iTeamNum = 0xF4;//团队编号 80 | constexpr ::std::ptrdiff_t m_lifeState = 0x25F;//生命状态 81 | constexpr ::std::ptrdiff_t m_nFallbackPaintKit = 0x31B8;//后备涂料套件 82 | constexpr ::std::ptrdiff_t m_nFallbackSeed = 0x31BC;//磨损 83 | constexpr ::std::ptrdiff_t m_nFallbackStatTrak = 0x31C4;//后备状态追踪 84 | constexpr ::std::ptrdiff_t m_nForceBone = 0x268C;//骨骼 85 | constexpr ::std::ptrdiff_t m_nTickBase = 0x3430;//刻度线 86 | constexpr ::std::ptrdiff_t m_rgflCoordinateFrame = 0x444;//坐标系 87 | constexpr ::std::ptrdiff_t m_szCustomName = 0x303C;//自定义名称 88 | constexpr ::std::ptrdiff_t m_szLastPlaceName = 0x35B4;//姓氏 89 | constexpr ::std::ptrdiff_t m_thirdPersonViewAngles = 0x31D8;//第三人称视角 90 | constexpr ::std::ptrdiff_t m_vecOrigin = 0x138;//当前位置 91 | constexpr ::std::ptrdiff_t m_vecVelocity = 0x114; 92 | constexpr ::std::ptrdiff_t m_vecViewOffset = 0x108; 93 | constexpr ::std::ptrdiff_t m_viewPunchAngle = 0x3020;//后座力 94 | } // namespace netvars 95 | namespace signatures {Engine.dll 96 | constexpr ::std::ptrdiff_t anim_overlays = 0x2980; 97 | constexpr ::std::ptrdiff_t clientstate_choked_commands = 0x4D28; 98 | constexpr ::std::ptrdiff_t clientstate_delta_ticks = 0x174; 99 | constexpr ::std::ptrdiff_t clientstate_last_outgoing_command = 0x4D24; 100 | constexpr ::std::ptrdiff_t clientstate_net_channel = 0x9C; 101 | constexpr ::std::ptrdiff_t convar_name_hash_table = 0x2F0F8; 102 | constexpr ::std::ptrdiff_t dwClientState = 0x589D9C; 103 | constexpr ::std::ptrdiff_t dwClientState_GetLocalPlayer = 0x180;//本地玩家索引 104 | constexpr ::std::ptrdiff_t dwClientState_IsHLTV = 0x4D40; 105 | constexpr ::std::ptrdiff_t dwClientState_Map = 0x28C;//当前地图 106 | constexpr ::std::ptrdiff_t dwClientState_MapDirectory = 0x188; 107 | constexpr ::std::ptrdiff_t dwClientState_MaxPlayer = 0x388;//玩家数量 108 | constexpr ::std::ptrdiff_t dwClientState_PlayerInfo = 0x52B8;//玩家信息列表 109 | constexpr ::std::ptrdiff_t dwClientState_State = 0x108; 110 | constexpr ::std::ptrdiff_t dwClientState_ViewAngles = 0x4D88;//自己角度 111 | constexpr ::std::ptrdiff_t dwEntityList = 0x4D44A04; 112 | constexpr ::std::ptrdiff_t dwForceAttack = 0x3175FA8; 113 | constexpr ::std::ptrdiff_t dwForceAttack2 = 0x3175FB4; 114 | constexpr ::std::ptrdiff_t dwForceBackward = 0x3175FE4; 115 | constexpr ::std::ptrdiff_t dwForceForward = 0x3175FC0; 116 | constexpr ::std::ptrdiff_t dwForceJump = 0x51EE660; 117 | constexpr ::std::ptrdiff_t dwForceLeft = 0x3175FD8; 118 | constexpr ::std::ptrdiff_t dwForceRight = 0x3175FFC; 119 | constexpr ::std::ptrdiff_t dwGameDir = 0x628578; 120 | constexpr ::std::ptrdiff_t dwGameRulesProxy = 0x526193C; 121 | constexpr ::std::ptrdiff_t dwGetAllClasses = 0xD56E6C; 122 | constexpr ::std::ptrdiff_t dwGlobalVars = 0x589AA0; 123 | constexpr ::std::ptrdiff_t dwGlowObjectManager = 0x528C8B8; 124 | constexpr ::std::ptrdiff_t dwInput = 0x5195F90; 125 | constexpr ::std::ptrdiff_t dwInterfaceLinkList = 0x8FAD34; 126 | constexpr ::std::ptrdiff_t dwLocalPlayer = 0xD30B84;//本地玩家 127 | constexpr ::std::ptrdiff_t dwMouseEnable = 0xD36728; 128 | constexpr ::std::ptrdiff_t dwMouseEnablePtr = 0xD366F8; 129 | constexpr ::std::ptrdiff_t dwPlayerResource = 0x317434C; 130 | constexpr ::std::ptrdiff_t dwRadarBase = 0x5179774; 131 | constexpr ::std::ptrdiff_t dwSensitivity = 0xD365C4; 132 | constexpr ::std::ptrdiff_t dwSensitivityPtr = 0xD36598; 133 | constexpr ::std::ptrdiff_t dwSetClanTag = 0x89E00; 134 | constexpr ::std::ptrdiff_t dwViewMatrix = 0x4D36344;//矩阵 135 | constexpr ::std::ptrdiff_t dwWeaponTable = 0x5196A54;//武器表 136 | constexpr ::std::ptrdiff_t dwWeaponTableIndex = 0x324C;//武器表索引 137 | constexpr ::std::ptrdiff_t dwYawPtr = 0xD36388; 138 | constexpr ::std::ptrdiff_t dwZoomSensitivityRatioPtr = 0xD3B5D0; 139 | constexpr ::std::ptrdiff_t dwbSendPackets = 0xD39DA;//发送包 140 | constexpr ::std::ptrdiff_t dwppDirect3DDevice9 = 0xA6030;//D3D9设备指针 141 | constexpr ::std::ptrdiff_t find_hud_element = 0x2877C270; 142 | constexpr ::std::ptrdiff_t force_update_spectator_glow = 0x3991D2; 143 | constexpr ::std::ptrdiff_t interface_engine_cvar = 0x3E9EC; 144 | constexpr ::std::ptrdiff_t is_c4_owner = 0x3A59A0; 145 | constexpr ::std::ptrdiff_t m_bDormant = 0xED;//休眠状态 146 | constexpr ::std::ptrdiff_t m_flSpawnTime = 0xA360; 147 | constexpr ::std::ptrdiff_t m_pStudioHdr = 0x294C; 148 | constexpr ::std::ptrdiff_t m_pitchClassPtr = 0x5179A18; 149 | constexpr ::std::ptrdiff_t m_yawClassPtr = 0xD36388; 150 | constexpr ::std::ptrdiff_t model_ambient_min = 0x58CDBC; 151 | constexpr ::std::ptrdiff_t set_abs_angles = 0x1CF110; 152 | constexpr ::std::ptrdiff_t set_abs_origin = 0x1CEF50; 153 | } // namespace signatures 154 | } // namespace hazedumper -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/K.内存模式查找/源码/csgo_cheats.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Counterstrike Global Offensive/K.内存模式查找/源码/csgo_cheats.hpp -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/K.内存模式查找/源码/direct3d9.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Counterstrike Global Offensive/K.内存模式查找/源码/direct3d9.hpp -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/K.内存模式查找/源码/help_func.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Counterstrike Global Offensive/K.内存模式查找/源码/help_func.hpp -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/K.内存模式查找/源码/main.cpp: -------------------------------------------------------------------------------- 1 | #include "csgo_cheats.hpp" 2 | 3 | 4 | int main(int argc, char* argv[]) 5 | { 6 | start_cheats_csgo(); 7 | return 0; 8 | } 9 | 10 | 11 | -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/K.内存模式查找/自己矩阵前内存特征.txt: -------------------------------------------------------------------------------- 1 | 2 | 自己矩阵前特征码: 3 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 3F 00 00 40 3F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 AB AA AA 3F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 16 08 80 BF 26 0E E0 C0 00 00 00 00 00 00 00 00 00 00 80 BF 00 4 | 5 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 3F 00 00 40 3F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 AB AA AA 3F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 16 08 80 BF 26 0E E0 C0 00 00 00 00 00 00 00 00 00 00 80 BF 00 00 00 00 6 | 7 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 3F 00 00 40 3F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 AB AA AA 3F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 16 08 80 BF 26 0E E0 C0 00 00 00 00 00 00 00 00 00 00 80 BF 00 00 00 00 8 | 9 | ->加上18 10 | ->16 08 80 BF 26 0E E0 C0 00 00 00 00 00 00 00 00 00 00 80 BF 00 00 00 00 11 | ->\x16\x08\x80\xBF\x26\x0E\xE0\xC0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\xBF\x00\x00\x00\x00 12 | 13 | 自己角度基址前特征码: 14 | 70 9D 1E 79 70 37 0B 79 50 0B BA 03 01 00 00 00 70 9D 1E 79 70 9D 1E 79 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 60 CD B6 03 08 00 00 00 00 00 00 00 01 00 00 00 60 CD B6 03 08 28 0D 79 15 | 16 | 70 9D 1E 79 70 37 0B 79 50 0B 79 03 01 00 00 00 70 9D 1E 79 70 9D 1E 79 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 60 CD 75 03 08 00 00 00 00 00 00 00 01 00 00 00 60 CD 75 03 08 28 0D 79 17 | 18 | 70 9D 1E 79 70 37 0B 79 50 0B DC 03 01 00 00 00 70 9D 1E 79 70 9D 1E 79 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 60 CD D8 03 08 00 00 00 00 00 00 00 01 00 00 00 60 CD D8 03 08 28 0D 79 19 | 20 | 70 9D 96 15 70 37 83 15 50 0B D6 03 01 00 00 00 70 9D 96 15 70 9D 96 15 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 60 CD D2 03 08 00 00 00 00 00 00 00 01 00 00 00 60 CD D2 03 08 28 85 15 21 | 22 | 加上50 23 | 70 9D ? ? 70 37 ? ? 50 0B ? 03 01 00 00 00 70 9D ? ? 70 9D 24 | \x70\x9D??\x70\x37??\x50\x0B?\x03\x01\x00\x00\x00\x70\x9D??\x70\x9D 25 | 26 | 27 | 自己位置基址前特征码: 28 | 00 00 00 00 FC 46 22 37 20 FC 2F 37 01 00 00 00 20 E3 0E 37 30 91 0A 37 08 20 08 00 E8 45 22 37 28 FB 2F 37 4C E3 0E 37 C8 A4 79 04 04 00 00 00 1B C8 1C 08 28 FB 2F 37 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0C E7 0E 37 29 | 30 | 00 00 00 00 FC 46 D7 36 20 FC E4 36 01 00 00 00 20 E3 C3 36 30 91 BF 36 08 20 08 00 E8 45 D7 36 28 FB E4 36 4C E3 C3 36 C8 A4 38 04 04 00 00 00 1B C8 D7 09 28 FB E4 36 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0C E7 C3 36 31 | 32 | 00 00 00 00 FC 46 3B 37 20 FC 48 37 01 00 00 00 20 E3 27 37 30 91 23 37 08 20 08 00 E8 45 3B 37 28 FB 48 37 4C E3 27 37 C8 A4 9B 04 04 00 00 00 1B C8 7B 08 28 FB 48 37 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0C E7 27 37 33 | 34 | ->加上50 35 | ->20 E3 ? ? 30 91 ? ? 08 20 08 00 E8 45 ? ? 28 FB ? ? 4C E3 ? ? C8 A4 ? 04 04 36 | ->\x20\xE3??\x30\x91??\x08\x20\x08\x00\xE8\x45??\x28\xFB??\x4C\xE3??\xC8\xA4?\x04\x04 37 | 38 | 39 | 敌人位置基址前特征码: 40 | 00 00 00 00 00 40 75 36 80 6F 25 05 10 00 00 00 00 00 00 00 05 00 00 00 0E 00 00 00 FF FF FF FF 0D 00 00 00 80 6F 25 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 EC 2E 0E 37 B0 D5 31 14 00 01 00 00 00 00 00 00 00 00 7E 00 82 00 28 00 96 00 95 00 B0 D5 31 14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 B7 25 66 C0 00 00 00 00 00 00 00 00 00 00 00 10 B7 25 66 48 AF 00 00 00 00 00 00 C0 2F 0E 37 10 E2 A4 13 F7 01 00 00 00 00 00 00 B4 3A 31 3B 41 | 42 | 00 00 00 00 00 40 2A 36 80 2F E4 04 10 00 00 00 00 00 00 00 05 00 00 00 0E 00 00 00 FF FF FF FF 0D 00 00 00 80 2F E4 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 EC 2E C3 36 F0 47 00 14 00 01 00 00 00 00 00 00 00 00 7C 00 82 00 28 00 96 00 95 00 F0 47 00 14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 F2 1F 66 C0 00 00 00 00 00 00 00 00 00 00 00 10 F2 1F 66 D1 5C 00 00 00 00 00 00 C0 2F C3 36 10 E2 67 13 F7 01 00 00 00 00 00 00 B4 3A E6 3A 43 | 44 | 00 00 00 00 00 40 8E 36 80 2F 47 05 10 00 00 00 00 00 00 00 05 00 00 00 0E 00 00 00 FF FF FF FF 0D 00 00 00 80 2F 47 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 EC 2E 27 37 30 D3 CD 68 00 01 00 00 00 00 00 00 00 00 03 00 82 00 27 00 96 00 95 00 30 D3 CD 68 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 D8 8F 66 C0 00 00 00 00 00 00 00 00 00 00 00 80 D8 8F 66 70 3E 00 00 00 00 00 00 C0 2F 27 37 10 E2 C6 13 F7 01 00 00 00 00 00 00 B4 3A 4A 3B 45 | 46 | 00 00 00 00 00 40 16 38 80 6F 41 05 10 00 00 00 00 00 00 00 05 00 00 00 10 00 00 00 FF FF FF FF 0F 00 00 00 80 6F 41 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 EC 2E AF 38 10 00 A4 14 00 01 00 00 00 00 00 00 81 00 1D 00 28 00 32 00 96 00 95 00 10 00 A4 14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 90 99 53 6C C0 00 00 00 00 00 00 00 00 00 00 00 90 99 53 6C D9 0C 03 00 00 00 00 00 C0 2F AF 38 10 E2 BC 13 F8 01 00 00 00 00 00 00 B4 3A D2 3C 47 | 48 | C0 2F ? ? 10 E2 ? 13 ? 01 00 00 00 00 00 00 B4 3A ? ? 49 | \xC0\x2F??\x10\xE2?\x13?\x01\x00\x00\x00\x00\x00\x00\xB4\x3A 50 | 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/L.完善外挂功能/README.md: -------------------------------------------------------------------------------- 1 | 2 | ## 基本的外挂源码,不需要DLL注入,随开随用 3 | 4 | ## 百度网盘下载[https://pan.baidu.com/s/1GjWiZJofXME-liSUWLVzlg] 5 | 提取码: r83m 6 | 7 | ## 在线观看 8 | 西瓜视频(https://www.ixigua.com/i6824543841350058510/) 9 | 10 | # 截图展示 11 |

12 | 13 |

14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/L.完善外挂功能/csgo_cheats.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Counterstrike Global Offensive/L.完善外挂功能/csgo_cheats.hpp -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/L.完善外挂功能/demo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Counterstrike Global Offensive/L.完善外挂功能/demo.jpg -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/L.完善外挂功能/direct3d9.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Counterstrike Global Offensive/L.完善外挂功能/direct3d9.hpp -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/L.完善外挂功能/help_func.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Counterstrike Global Offensive/L.完善外挂功能/help_func.hpp -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/L.完善外挂功能/main.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Counterstrike Global Offensive/L.完善外挂功能/main.cpp -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/M.外部辉光 + 连跳/README.md: -------------------------------------------------------------------------------- 1 | 2 | ## 基本的辉光源码 3 | 4 | ## 链接: https://pan.baidu.com/s/1dZcBMVtNGzc1XsNdV5EmAg 提取码: 5hgy 5 | 6 | ## 在线观看 https://www.ixigua.com/i6829927044688642572?utm_source=xiguastudio 7 | 8 | 9 | # 截图展示 10 |

11 | 12 |

13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/M.外部辉光 + 连跳/demo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Counterstrike Global Offensive/M.外部辉光 + 连跳/demo.jpg -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/M.外部辉光 + 连跳/main.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Counterstrike Global Offensive/M.外部辉光 + 连跳/main.cpp -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/M.外部辉光 + 连跳/offset.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | // 2020-05-12 07:59:39.189137300 UTC 5 | 6 | namespace hazedumper { 7 | constexpr ::std::int64_t timestamp = 1589270379; 8 | namespace netvars { 9 | constexpr int cs_gamerules_data = 0x0; 10 | int m_ArmorValue = 0xB368; 11 | int m_Collision = 0x320; 12 | int m_CollisionGroup = 0x474; 13 | int m_Local = 0x2FBC; 14 | int m_MoveType = 0x25C; 15 | int m_OriginalOwnerXuidHigh = 0x31C4; 16 | int m_OriginalOwnerXuidLow = 0x31C0; 17 | int m_SurvivalGameRuleDecisionTypes = 0x1320; 18 | int m_SurvivalRules = 0xCF8; 19 | int m_aimPunchAngle = 0x302C; 20 | int m_aimPunchAngleVel = 0x3038; 21 | int m_angEyeAnglesX = 0xB36C; 22 | int m_angEyeAnglesY = 0xB370; 23 | int m_bBombPlanted = 0x99D; 24 | int m_bFreezePeriod = 0x20; 25 | int m_bGunGameImmunity = 0x3930; 26 | int m_bHasDefuser = 0xB378; 27 | int m_bHasHelmet = 0xB35C; 28 | int m_bInReload = 0x32A5; 29 | int m_bIsDefusing = 0x391C; 30 | int m_bIsQueuedMatchmaking = 0x74; 31 | int m_bIsScoped = 0x3914; 32 | int m_bIsValveDS = 0x75; 33 | int m_bSpotted = 0x93D; 34 | int m_bSpottedByMask = 0x980; 35 | int m_bStartedArming = 0x33F0; 36 | int m_bUseCustomAutoExposureMax = 0x9D9; 37 | int m_bUseCustomAutoExposureMin = 0x9D8; 38 | int m_bUseCustomBloomScale = 0x9DA; 39 | int m_clrRender = 0x70; 40 | int m_dwBoneMatrix = 0x26A8; 41 | int m_fAccuracyPenalty = 0x3330; 42 | int m_fFlags = 0x104; 43 | int m_flC4Blow = 0x2990; 44 | int m_flCustomAutoExposureMax = 0x9E0; 45 | int m_flCustomAutoExposureMin = 0x9DC; 46 | int m_flCustomBloomScale = 0x9E4; 47 | int m_flDefuseCountDown = 0x29AC; 48 | int m_flDefuseLength = 0x29A8; 49 | int m_flFallbackWear = 0x31D0; 50 | int m_flFlashDuration = 0xA410; 51 | int m_flFlashMaxAlpha = 0xA40C; 52 | int m_flLastBoneSetupTime = 0x2924; 53 | int m_flLowerBodyYawTarget = 0x3A7C; 54 | int m_flNextAttack = 0x2D70; 55 | int m_flNextPrimaryAttack = 0x3238; 56 | int m_flSimulationTime = 0x268; 57 | int m_flTimerLength = 0x2994; 58 | int m_hActiveWeapon = 0x2EF8; 59 | int m_hMyWeapons = 0x2DF8; 60 | int m_hObserverTarget = 0x338C; 61 | int m_hOwner = 0x29CC; 62 | int m_hOwnerEntity = 0x14C; 63 | int m_iAccountID = 0x2FC8; 64 | int m_iClip1 = 0x3264; 65 | int m_iCompetitiveRanking = 0x1A84; 66 | int m_iCompetitiveWins = 0x1B88; 67 | int m_iCrosshairId = 0xB3D4; 68 | int m_iEntityQuality = 0x2FAC; 69 | int m_iFOV = 0x31E4; 70 | int m_iFOVStart = 0x31E8; 71 | int m_iGlowIndex = 0xA428; 72 | int m_iHealth = 0x100; 73 | int m_iItemDefinitionIndex = 0x2FAA; 74 | int m_iItemIDHigh = 0x2FC0; 75 | int m_iMostRecentModelBoneCounter = 0x2690; 76 | int m_iObserverMode = 0x3378; 77 | int m_iShotsFired = 0xA380; 78 | int m_iState = 0x3258; 79 | int m_iTeamNum = 0xF4; 80 | int m_lifeState = 0x25F; 81 | int m_nFallbackPaintKit = 0x31C8; 82 | int m_nFallbackSeed = 0x31CC; 83 | int m_nFallbackStatTrak = 0x31D4; 84 | int m_nForceBone = 0x268C; 85 | int m_nTickBase = 0x3430; 86 | int m_rgflCoordinateFrame = 0x444; 87 | int m_szCustomName = 0x303C; 88 | int m_szLastPlaceName = 0x35B4; 89 | int m_thirdPersonViewAngles = 0x31D8; 90 | int m_vecOrigin = 0x138; 91 | int m_vecVelocity = 0x114; 92 | int m_vecViewOffset = 0x108; 93 | int m_viewPunchAngle = 0x3020; 94 | } // namespace netvars 95 | namespace signatures { 96 | int anim_overlays = 0x2980; 97 | int clientstate_choked_commands = 0x4D28; 98 | int clientstate_delta_ticks = 0x174; 99 | int clientstate_last_outgoing_command = 0x4D24; 100 | int clientstate_net_channel = 0x9C; 101 | int convar_name_hash_table = 0x2F0F8; 102 | int dwClientState = 0x589DCC; 103 | int dwClientState_GetLocalPlayer = 0x180; 104 | int dwClientState_IsHLTV = 0x4D40; 105 | int dwClientState_Map = 0x28C; 106 | int dwClientState_MapDirectory = 0x188; 107 | int dwClientState_MaxPlayer = 0x388; 108 | int dwClientState_PlayerInfo = 0x52B8; 109 | int dwClientState_State = 0x108; 110 | int dwClientState_ViewAngles = 0x4D88; 111 | int dwEntityList = 0x4D43AC4; 112 | int dwForceAttack = 0x3175068; 113 | int dwForceAttack2 = 0x3175074; 114 | int dwForceBackward = 0x31750A4; 115 | int dwForceForward = 0x3175080; 116 | int dwForceJump = 0x51ED760; 117 | int dwForceLeft = 0x3175098; 118 | int dwForceRight = 0x31750BC; 119 | int dwGameDir = 0x6286F8; 120 | int dwGameRulesProxy = 0x5260A3C; 121 | int dwGetAllClasses = 0xD55F2C; 122 | int dwGlobalVars = 0x589AD0; 123 | int dwGlowObjectManager = 0x528B8A0; 124 | int dwInput = 0x5195070; 125 | int dwInterfaceLinkList = 0x8FA4A4; 126 | int dwLocalPlayer = 0xD2FB94; 127 | int dwMouseEnable = 0xD35738; 128 | int dwMouseEnablePtr = 0xD35708; 129 | int dwPlayerResource = 0x317340C; 130 | int dwRadarBase = 0x5178834; 131 | int dwSensitivity = 0xD355D4; 132 | int dwSensitivityPtr = 0xD355A8; 133 | int dwSetClanTag = 0x89ED0; 134 | int dwViewMatrix = 0x4D35404; 135 | int dwWeaponTable = 0x5195B34; 136 | int dwWeaponTableIndex = 0x325C; 137 | int dwYawPtr = 0xD35398; 138 | int dwZoomSensitivityRatioPtr = 0xD3A5E0; 139 | int dwbSendPackets = 0xD3ECA; 140 | int dwppDirect3DDevice9 = 0xA7030; 141 | int find_hud_element = 0x2EB7C3F0; 142 | int force_update_spectator_glow = 0x3991F2; 143 | int interface_engine_cvar = 0x3E9EC; 144 | int is_c4_owner = 0x3A59C0; 145 | int m_bDormant = 0xED; 146 | int m_flSpawnTime = 0xA360; 147 | int m_pStudioHdr = 0x294C; 148 | int m_pitchClassPtr = 0x5178AD8; 149 | int m_yawClassPtr = 0xD35398; 150 | int model_ambient_min = 0x58CE44; 151 | int set_abs_angles = 0x1CF1D0; 152 | int set_abs_origin = 0x1CF010; 153 | } // namespace signatures 154 | } // namespace hazedumper 155 | -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/N.CSGO外部武器换肤/README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 链接: https://pan.baidu.com/s/1eTVcA8otktzU2qqn6XWvhw 提取码: j7d4 4 | 5 | https://www.ixigua.com/i6841171393732674062?utm_source=xiguastudio 6 | 7 | # 截图展示 8 |

9 | 10 |

11 | 12 | ## 不视频讲解了,反正代码里有非常详细的注释 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/N.CSGO外部武器换肤/demo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Counterstrike Global Offensive/N.CSGO外部武器换肤/demo.jpg -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/N.CSGO外部武器换肤/main.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Counterstrike Global Offensive/N.CSGO外部武器换肤/main.cpp -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/N.CSGO外部武器换肤/main.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Counterstrike Global Offensive/N.CSGO外部武器换肤/main.h -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/N.CSGO外部武器换肤/skin.txt: -------------------------------------------------------------------------------- 1 | "(ak47)丛林涂装 - 122", 2 | "(ak47)二西莫夫 - 801", 3 | "(ak47)前线迷雾 - 490", 4 | "(ak47)卡特尔 - 394", 5 | "(ak47)复古浪潮 - 885", 6 | "(ak47)安全网 - 795", 7 | "(ak47)巴洛克之紫 - 745", 8 | "(ak47)幻影破坏者 - 941", 9 | "(ak47)水栽竹 - 456", 10 | "(ak47)深海复仇 - 474", 11 | "(ak47)混沌点阵 - 506", 12 | "(ak47)火神 - 302", 13 | "(ak47)火蛇 - 180", 14 | "(ak47)燃料喷射器 - 524", 15 | "(ak47)皇后 - 675", 16 | "(ak47)精英之作 - 422", 17 | "(ak47)红线 - 282", 18 | "(ak47)红色层压板 - 14", 19 | "(ak47)美洲猛虎 - 316", 20 | "(ak47)翡翠细条纹 - 300", 21 | "(ak47)至高皮革 - 341", 22 | "(ak47)荒野反叛 - 380", 23 | "(ak47)蓝色层压板 - 226", 24 | "(ak47)血腥运动 - 639", 25 | "(ak47)轨道 Mk01 - 656", 26 | "(ak47)迷踪秘境 - 836", 27 | "(ak47)酷炫涂鸦皮革 - 340", 28 | "(ak47)野荷 - 724", 29 | "(ak47)霓虹革命 - 600", 30 | "(ak47)霓虹骑士 - 707", 31 | "(ak47)黑色层压板 - 172", 32 | "(aug)三角战术 - 674", 33 | "(aug)代达罗斯之殇 - 444", 34 | "(aug)众枪之的 - 110", 35 | "(aug)力矩 - 305", 36 | "(aug)动量 - 845", 37 | "(aug)午夜百合 - 727", 38 | "(aug)变色龙 - 280", 39 | "(aug)孟加拉猛虎 - 9", 40 | "(aug)席德.米德 - 601", 41 | "(aug)弹跳线条 - 507", 42 | "(aug)扫频仪 - 794", 43 | "(aug)极地孤狼 - 886", 44 | "(aug)汤姆猫 - 942", 45 | "(aug)汪之萌杀 - 913", 46 | "(aug)深蓝电镀处理 - 197", 47 | "(aug)湖怪鸟 - 690", 48 | "(aug)烈焰巨蟒 - 758", 49 | "(aug)燕群 - 541", 50 | "(aug)琥珀冲流 - 708", 51 | "(aug)秋叶原之选 - 455", 52 | "(aug)穆拉诺之蓝 - 740", 53 | "(aug)贵族 - 583", 54 | "(aug)辐射危机 - 375", 55 | "(aug)铜斑蛇 - 10", 56 | "(aug)随机存取 - 779", 57 | "(aug)鹰翼 - 73", 58 | "(awp)*嘣* - 174", 59 | "(awp)二西莫夫 - 279", 60 | "(awp)冥界之河 - 788", 61 | "(awp)冲出重围 - 887", 62 | "(awp)响尾蛇 - 251", 63 | "(awp)巨龙传说 - 344", 64 | "(awp)无畏战神 - 395", 65 | "(awp)暴怒野兽 - 475", 66 | "(awp)树蝰 - 838", 67 | "(awp)死神 - 691", 68 | "(awp)毛细血管 - 943", 69 | "(awp)永恒之枪 - 756", 70 | "(awp)浮生如梦 - 640", 71 | "(awp)火卫— - 584", 72 | "(awp)狮子之日 - 451", 73 | "(awp)猫猫狗狗 - 718", 74 | "(awp)王子 - 736", 75 | "(awp)珊瑚树 - 181", 76 | "(awp)电子蜂巢 - 227", 77 | "(awp)石墨黑 - 212", 78 | "(awp)粉红 DDPAT - 84", 79 | "(awp)精英之作 - 525", 80 | "(awp)红线 - 259", 81 | "(awp)美杜莎 - 446", 82 | "(awp)蠕虫之神 - 424", 83 | "(awp)野火 - 917", 84 | "(awp)雷击 - 51", 85 | "(awp)鬼退治 - 662", 86 | "(awp)黑色魅影 - 803", 87 | "(bayonet)传说 - 558", 88 | "(bayonet)自动化 - 573", 89 | "(bayonet)黑色层压板 - 563", 90 | "(bizon)丛林滑流 - 641", 91 | "(bizon)买定离手 - 676", 92 | "(bizon)化工之绿 - 376", 93 | "(bizon)古董枪 - 306", 94 | "(bizon)墨竹 - 457", 95 | "(bizon)外表生锈 - 203", 96 | "(bizon)收割机 - 594", 97 | "(bizon)核燃料棒 - 508", 98 | "(bizon)死亡主宰者 - 349", 99 | "(bizon)水纹之印 - 224", 100 | "(bizon)水蓝条纹 - 13", 101 | "(bizon)海鸟 - 873", 102 | "(bizon)设施系列·速写图 - 775", 103 | "(bizon)路霸 - 884", 104 | "(bizon)透光区 - 526", 105 | "(bizon)都市虚线 - 149", 106 | "(bizon)钻蓝半调 - 267", 107 | "(bizon)黑夜暴乱 - 692", 108 | "(cz75a)做旧手艺 - 944", 109 | "(cz75a)先驱 - 435", 110 | "(cz75a)印花板 - 602", 111 | "(cz75a)复古圣杯 - 325", 112 | "(cz75a)战术高手 - 687", 113 | "(cz75a)梅红时刻 - 269", 114 | "(cz75a)毒镖 - 315", 115 | "(cz75a)氮化处理 - 322", 116 | "(cz75a)猛虎 - 350", 117 | "(cz75a)相柳 - 643", 118 | "(cz75a)红鹰 - 543", 119 | "(cz75a)经济 - 709", 120 | "(cz75a)维多利亚 - 270", 121 | "(cz75a)翡翠石英 - 859", 122 | "(cz75a)聚合物 - 622", 123 | "(cz75a)花纹钢板 - 268", 124 | "(cz75a)螺形扭转 - 334", 125 | "(cz75a)黄夹克 - 476", 126 | "(deagle)午夜风暴 - 468", 127 | "(deagle)大佬龙 - 527", 128 | "(deagle)手上加农炮 - 328", 129 | "(deagle)指挥 - 603", 130 | "(deagle)日落风暴 壱 - 469", 131 | "(deagle)日落风暴 弐 - 470", 132 | "(deagle)机械工业 - 805", 133 | "(deagle)科林斯遗产 - 509", 134 | "(deagle)红色代号 - 711", 135 | "(deagle)纳迦蛇神 - 397", 136 | "(deagle)翡翠巨蟒 - 757", 137 | "(deagle)蓝色层压板 - 945", 138 | "(deagle)轻轨 - 841", 139 | "(deagle)遗产 - 273", 140 | "(deagle)钴蓝禁锢 - 231", 141 | "(deagle)锈蚀烈焰 - 645", 142 | "(deagle)阴谋者 - 351", 143 | "(deagle)陨星 - 296", 144 | "(deagle)青铜装饰 - 425", 145 | "(deagle)飞行员 - 347", 146 | "(deagle)黄金锦鲤 - 185", 147 | "(elite)1.6精英 - 903", 148 | "(elite)决斗家 - 447", 149 | "(elite)卡特尔 - 528", 150 | "(elite)双涡轮 - 747", 151 | "(elite)左右开花 - 895", 152 | "(elite)报应 - 307", 153 | "(elite)毒蛇袭击 - 658", 154 | "(elite)海斗士 - 261", 155 | "(elite)熊熊烈焰 - 860", 156 | "(elite)爆破能手 - 153", 157 | "(elite)皇室伴侣 - 625", 158 | "(elite)碎片 - 710", 159 | "(elite)蔷薇 - 330", 160 | "(elite)血红蛋白 - 220", 161 | "(elite)通风机 - 544", 162 | "(elite)都市冲击 - 396", 163 | "(elite)钴蓝石英 - 249", 164 | "(elite)黑榄仁木 - 190", 165 | "(elite)黑豹 - 276", 166 | "(elite)龙之双子 - 491", 167 | "(famas)中士 - 288", 168 | "(famas)保护色 - 835", 169 | "(famas)元素轮廓 - 529", 170 | "(famas)冥界之憎 - 371", 171 | "(famas)厄运之喵 - 178", 172 | "(famas)喷焰者 - 194", 173 | "(famas)幸存者 Z - 492", 174 | "(famas)日暮 - 869", 175 | "(famas)暗夜锁链 - 863", 176 | "(famas)机械工业 - 626", 177 | "(famas)死亡之舞 - 659", 178 | "(famas)残影 - 154", 179 | "(famas)湖蓝涂装 - 92", 180 | "(famas)灯神 - 429", 181 | "(famas)电子脉冲 - 260", 182 | "(famas)神经网 - 477", 183 | "(famas)纪念碑 - 919", 184 | "(famas)退役 - 904", 185 | "(famas)防滚架 - 604", 186 | "(famas)雅典娜之眼 - 723", 187 | "(fiveseven)三位—体 - 530", 188 | "(fiveseven)冷却剂 - 784", 189 | "(fiveseven)夜影 - 223", 190 | "(fiveseven)好兄弟 - 906", 191 | "(fiveseven)怒氓 - 837", 192 | "(fiveseven)斯康里娅 - 605", 193 | "(fiveseven)日式荧光涂装 - 464", 194 | "(fiveseven)暮色森林 - 78", 195 | "(fiveseven)暴怒野兽 - 660", 196 | "(fiveseven)朝枪夕拾 - 510", 197 | "(fiveseven)毛细血管 - 646", 198 | "(fiveseven)热火朝天 - 377", 199 | "(fiveseven)焰色反应 - 693", 200 | "(fiveseven)狩猎利器 - 352", 201 | "(fiveseven)电镀青铜 - 210", 202 | "(fiveseven)神祗 - 265", 203 | "(fiveseven)绛之绽放 - 729", 204 | "(fiveseven)耍猴把戏 - 427", 205 | "(fiveseven)都市危机 - 387", 206 | "(fiveseven)铜色星系 - 274", 207 | "(fiveseven)银白石英 - 252", 208 | "(fiveseven)霸意大名 - 585", 209 | "(g3sg1)丛林虚线 - 147", 210 | "(g3sg1)丰饶女神 - 195", 211 | "(g3sg1)公海 - 712", 212 | "(g3sg1)净化者 - 806", 213 | "(g3sg1)弗卢克斯 - 493", 214 | "(g3sg1)日式橙色涂装 - 465", 215 | "(g3sg1)极地迷彩 - 74", 216 | "(g3sg1)极寒迷彩 - 6", 217 | "(g3sg1)柯罗诺斯 - 438", 218 | "(g3sg1)橙光冲击 - 545", 219 | "(g3sg1)毒刺 - 628", 220 | "(g3sg1)猎人 - 677", 221 | "(g3sg1)碧蓝斑纹 - 229", 222 | "(g3sg1)穆拉诺之紫 - 739", 223 | "(g3sg1)行刑者 - 511", 224 | "(g3sg1)通风机 - 606", 225 | "(g3sg1)黑暗豹纹 - 382", 226 | "(g3sg1)黑砂 - 891", 227 | "(galilar)~甜甜的~ - 661", 228 | "(galilar)「经济」克鲁尔 - 428", 229 | "(galilar)信号灯 - 807", 230 | "(galilar)冬之森林 - 76", 231 | "(galilar)冰核聚变 - 790", 232 | "(galilar)冷石 - 494", 233 | "(galilar)喧闹骷髅 - 398", 234 | "(galilar)地狱看门犬 - 379", 235 | "(galilar)战吼斑纹 - 842", 236 | "(galilar)支离破碎 - 192", 237 | "(galilar)水蓝阶地 - 460", 238 | "(galilar)沙尘暴 - 264", 239 | "(galilar)深红海啸 - 647", 240 | "(galilar)火箭冰棒 - 478", 241 | "(galilar)火线冲锋 - 546", 242 | "(galilar)神祗 - 308", 243 | "(galilar)隐蔽猎手 - 241", 244 | "(galilar)黑砂 - 629", 245 | "(glock)亡者之寝 - 399", 246 | "(glock)合成叶 - 732", 247 | "(glock)城里的月光 - 694", 248 | "(glock)夺命撼响 - 293", 249 | "(glock)子弹皇后 - 957", 250 | "(glock)幻影冥魂 - 495", 251 | "(glock)异星世界 - 680", 252 | "(glock)战鹰 - 713", 253 | "(glock)暮光星系 - 437", 254 | "(glock)本生灯 - 479", 255 | "(glock)核子反应 - 367", 256 | "(glock)核子花园 - 789", 257 | "(glock)水灵 - 353", 258 | "(glock)沙丘之黄 - 208", 259 | "(glock)烈焰天使 - 918", 260 | "(glock)皇家军团 - 532", 261 | "(glock)粉碎者 - 381", 262 | "(glock)荒野反叛 - 586", 263 | "(glock)蓝色裂纹 - 278", 264 | "(glock)远光灯 - 799", 265 | "(glock)铁之作 - 623", 266 | "(glock)锈蚀烈焰 - 808", 267 | "(glock)黑龙纹身 - 48", 268 | "(glock)鼬鼠 - 607", 269 | "(hkp2000)乳白象牙 - 357", 270 | "(hkp2000)坚毅大理石纹 - 21", 271 | "(hkp2000)廉价皮革 - 346", 272 | "(hkp2000)手炮 - 485", 273 | "(hkp2000)林间猎者 - 667", 274 | "(hkp2000)海之泡沫 - 211", 275 | "(hkp2000)海洋 - 550", 276 | "(hkp2000)火灵 - 389", 277 | "(hkp2000)珊瑚树 - 184", 278 | "(hkp2000)电子脉冲 - 338", 279 | "(hkp2000)红色碎片迷彩 - 275", 280 | "(hkp2000)至尊威龙 - 591", 281 | "(hkp2000)至高帝皇 - 515", 282 | "(hkp2000)致命红蝎 - 71", 283 | "(hkp2000)草原落叶 - 104", 284 | "(hkp2000)草皮 - 635", 285 | "(hkp2000)都市危机 - 700", 286 | "(hkp2000)酸蚀 - 951", 287 | "(hkp2000)黑曜石 - 894", 288 | "(knife_falchion)致命紫罗兰 - 621", 289 | "(knife_flip)传说 - 559", 290 | "(knife_flip)自动化 - 574", 291 | "(knife_flip)黑色层压板 - 564", 292 | "(knife_gut)传说 - 560", 293 | "(knife_gut)自动化 - 575", 294 | "(knife_gut)黑色层压板 - 565", 295 | "(knife_karambit)传说 - 561", 296 | "(knife_karambit)自动化 - 576", 297 | "(knife_karambit)自由之手 - 582", 298 | "(knife_karambit)黑色层压板 - 566", 299 | "(knife_m9_bayonet)传说 - 562", 300 | "(knife_m9_bayonet)澄澈之水 - 579", 301 | "(knife_m9_bayonet)自动化 - 577", 302 | "(knife_m9_bayonet)自由之手 - 581", 303 | "(knife_m9_bayonet)黑色层压板 - 567", 304 | "(knife_tactical)致命紫罗兰 - 620", 305 | "(knife_widowmaker)多普勒 - 854", 306 | "(knife_widowmaker)多普勒 - 855", 307 | "(knife_widowmaker)多普勒 - 852", 308 | "(knife_widowmaker)多普勒 - 853", 309 | "(knife_widowmaker)大马士革钢 - 858", 310 | "(knife_widowmaker)渐变大理石 - 856", 311 | "(m249)丛林 DDPAT - 202", 312 | "(m249)冲击钻 - 472", 313 | "(m249)岩浆 - 266", 314 | "(m249)战隼 - 900", 315 | "(m249)星云十字军 - 496", 316 | "(m249)暴雪大理石纹 - 75", 317 | "(m249)海滨预测者 - 452", 318 | "(m249)系统锁定 - 401", 319 | "(m249)翠绿箭毒蛙 - 648", 320 | "(m249)阿兹特克 - 902", 321 | "(m249)鬼影 - 547", 322 | "(m4a1)X 光 - 215", 323 | "(m4a1)丛林虎 - 16", 324 | "(m4a1)主机 - 780", 325 | "(m4a1)二西莫夫 - 255", 326 | "(m4a1)变频器 - 793", 327 | "(m4a1)咆哮 - 309", 328 | "(m4a1)喧嚣杀戮 - 632", 329 | "(m4a1)地狱烈焰 - 664", 330 | "(m4a1)弹雨 - 155", 331 | "(m4a1)战场之星 - 533", 332 | "(m4a1)星级 - 187", 333 | "(m4a1)暗之绽放 - 730", 334 | "(m4a1)杀意大名 - 480", 335 | "(m4a1)死寂空间 - 588", 336 | "(m4a1)沙漠精英 - 336", 337 | "(m4a1)波塞冬 - 449", 338 | "(m4a1)渐变斑纹 - 176", 339 | "(m4a1)狮鹫 - 384", 340 | "(m4a1)皇家圣骑士 - 512", 341 | "(m4a1)皇帝 - 844", 342 | "(m4a1)破晓 - 471", 343 | "(m4a1)辐射危机 - 167", 344 | "(m4a1)镁元素 - 811", 345 | "(m4a1)黑色魅影 - 695", 346 | "(m4a1)龙王 - 400", 347 | "(m4a1_silencer)二号玩家 - 946", 348 | "(m4a1_silencer)伊卡洛斯殒落 - 440", 349 | "(m4a1_silencer)原子合金 - 301", 350 | "(m4a1_silencer)女火神之炽焰 - 548", 351 | "(m4a1_silencer)守护者 - 257", 352 | "(m4a1_silencer)控制台 - 792", 353 | "(m4a1_silencer)暴怒野兽 - 430", 354 | "(m4a1_silencer)机械工业 - 587", 355 | "(m4a1_silencer)梦魇 - 714", 356 | "(m4a1_silencer)次时代 - 360", 357 | "(m4a1_silencer)毁灭者 2000 - 644", 358 | "(m4a1_silencer)澄澈之水 - 189", 359 | "(m4a1_silencer)破碎铅秋 - 681", 360 | "(m4a1_silencer)神来之作 - 321", 361 | "(m4a1_silencer)简报 - 663", 362 | "(m4a1_silencer)翼蜥 - 383", 363 | "(m4a1_silencer)苔藓石英 - 862", 364 | "(m4a1_silencer)赤红新星 - 445", 365 | "(m4a1_silencer)金蛇缠绕 - 497", 366 | "(m4a1_silencer)闪回 - 631", 367 | "(m4a1_silencer)骑士 - 326", 368 | "(mac10)不可磨灭 - 188", 369 | "(mac10)冉吉 - 498", 370 | "(mac10)冲浪木 - 871", 371 | "(mac10)孔雀石 - 402", 372 | "(mac10)小牛皮 - 748", 373 | "(mac10)捕猎者 - 589", 374 | "(mac10)板条箱 - 908", 375 | "(mac10)核子花园 - 372", 376 | "(mac10)海洋 - 682", 377 | "(mac10)渐变迪斯科 - 947", 378 | "(mac10)潜行者 - 898", 379 | "(mac10)炽热 - 284", 380 | "(mac10)烧尽 - 337", 381 | "(mac10)白鲑鱼 - 840", 382 | "(mac10)绝界之行 - 651", 383 | "(mac10)绯红镂刻 - 742", 384 | "(mac10)诅咒 - 310", 385 | "(mac10)赤金锁链 - 761", 386 | "(mac10)通勤者皮革 - 343", 387 | "(mac10)销声 - 812", 388 | "(mac10)阿罗哈 - 665", 389 | "(mac10)霓虹骑士 - 433", 390 | "(mac10)青金鳄皮 - 534", 391 | "(mag7)SWAG-7 - 703", 392 | "(mag7)五指短剑 - 737", 393 | "(mag7)危机色调 - 198", 394 | "(mag7)反梗精英 - 462", 395 | "(mag7)声纳 - 633", 396 | "(mag7)外表生锈 - 754", 397 | "(mag7)天空守卫 - 291", 398 | "(mag7)核芯破裂 - 787", 399 | "(mag7)正义 - 948", 400 | "(mag7)海鸟 - 473", 401 | "(mag7)灼烧之痕 - 385", 402 | "(mag7)炽热 - 431", 403 | "(mag7)石雕 - 608", 404 | "(mag7)硬水 - 666", 405 | "(mag7)碰碰狗 - 909", 406 | "(mag7)禁卫军 - 535", 407 | "(mag7)记忆碎片 - 177", 408 | "(mag7)钴核 - 499", 409 | "(mp5sd)协处理器 - 781", 410 | "(mp5sd)小白鼠 - 800", 411 | "(mp5sd)探员 - 915", 412 | "(mp5sd)沙漠精英 - 949", 413 | "(mp5sd)磷光体 - 810", 414 | "(mp5sd)茂竹之园 - 872", 415 | "(mp5sd)越野 - 753", 416 | "(mp5sd)高斯 - 846", 417 | "(mp5sd)鼻青脸肿 - 888", 418 | "(mp7)七彩斑斓 - 893", 419 | "(mp7)主板 - 782", 420 | "(mp7)卷云 - 627", 421 | "(mp7)地下水 - 209", 422 | "(mp7)复仇者 - 481", 423 | "(mp7)帝国 - 536", 424 | "(mp7)恶作剧 - 847", 425 | "(mp7)星点 - 442", 426 | "(mp7)权力之心 - 719", 427 | "(mp7)橄榄格纹 - 365", 428 | "(mp7)死亡骷髅 - 11", 429 | "(mp7)海之泡沫 - 213", 430 | "(mp7)渐变之色 - 752", 431 | "(mp7)血腥运动 - 696", 432 | "(mp7)装甲核心 - 423", 433 | "(mp7)速递 - 500", 434 | "(mp7)都市危机 - 354", 435 | "(mp7)陆军斥候 - 245", 436 | "(mp7)青之绽放 - 728", 437 | "(mp7)非洲部落 - 649", 438 | "(mp9)中度威胁 - 804", 439 | "(mp9)九头蛇 - 910", 440 | "(mp9)干旱季节 - 199", 441 | "(mp9)彩绘玻璃 - 867", 442 | "(mp9)毛细血管 - 715", 443 | "(mp9)气密 - 609", 444 | "(mp9)滑移 - 755", 445 | "(mp9)潘多拉魔盒 - 448", 446 | "(mp9)焦油缠绕 - 679", 447 | "(mp9)生化泄漏 - 549", 448 | "(mp9)砂垢 - 630", 449 | "(mp9)红宝石毒镖 - 482", 450 | "(mp9)致命毒药 - 403", 451 | "(mp9)落日 - 368", 452 | "(mp9)野百合 - 734", 453 | "(mp9)铁血玫瑰 - 262", 454 | "(mp9)飞驰 - 386", 455 | "(mp9)黑暗时代 - 329", 456 | "(mp9)黑砂 - 697", 457 | "(negev)*哒哒哒* - 317", 458 | "(negev)动力装载机 - 514", 459 | "(negev)原型机 - 950", 460 | "(negev)大嘴巴 - 483", 461 | "(negev)巴洛克之沙 - 920", 462 | "(negev)无畏战神 - 432", 463 | "(negev)核子废渣 - 369", 464 | "(negev)棕榈色 - 201", 465 | "(negev)沙漠精英 - 355", 466 | "(negev)狮子鱼 - 698", 467 | "(negev)眩目 - 610", 468 | "(negev)舱壁 - 783", 469 | "(negev)雷霆之锤 - 763", 470 | "(negev)青绿地形 - 285", 471 | "(nova)Exo - 590", 472 | "(nova)兴风作浪 - 191", 473 | "(nova)古董枪 - 286", 474 | "(nova)巴洛克之橙 - 746", 475 | "(nova)幽灵迷彩 - 225", 476 | "(nova)惊惧骷髅 - 263", 477 | "(nova)暴怒野兽 - 537", 478 | "(nova)极地网格 - 107", 479 | "(nova)樱花之绚烂 - 62", 480 | "(nova)毒蜥 - 634", 481 | "(nova)游侠 - 484", 482 | "(nova)灼木 - 809", 483 | "(nova)狂野六号 - 699", 484 | "(nova)玩具士兵 - 716", 485 | "(nova)石墨黑 - 214", 486 | "(nova)胡桃木 - 158", 487 | "(nova)芯轴 - 785", 488 | "(nova)钢笼 - 299", 489 | "(nova)锦鲤 - 356", 490 | "(nova)风卷残云 - 890", 491 | "(p250)二西莫夫 - 551", 492 | "(p250)交换机 - 786", 493 | "(p250)伦琴射线 - 125", 494 | "(p250)元素轮廓 - 426", 495 | "(p250)卡特尔 - 388", 496 | "(p250)多面体 - 207", 497 | "(p250)富兰克林 - 295", 498 | "(p250)影魔 - 813", 499 | "(p250)日式深红涂装 - 466", 500 | "(p250)日式薄荷涂装 - 467", 501 | "(p250)暗之镂刻 - 741", 502 | "(p250)暗潮 - 271", 503 | "(p250)曼海蒂 - 258", 504 | "(p250)核子威慑 - 168", 505 | "(p250)核子污染 - 373", 506 | "(p250)死亡轮回 - 404", 507 | "(p250)涟漪 - 650", 508 | "(p250)炼狱小镇 - 907", 509 | "(p250)狂野飞溅 - 162", 510 | "(p250)生化短吻鳄 - 678", 511 | "(p250)红岩 - 668", 512 | "(p250)红巢 - 219", 513 | "(p250)翼击 - 501", 514 | "(p250)葡萄酒 - 749", 515 | "(p250)设施系列·草图 - 777", 516 | "(p250)超新星 - 358", 517 | "(p250)铜绿 - 848", 518 | "(p250)铠甲 - 592", 519 | "(p90)三角 - 283", 520 | "(p90)二西莫夫 - 359", 521 | "(p90)冰川网格 - 111", 522 | "(p90)冷血无情 - 611", 523 | "(p90)冷血杀手 - 67", 524 | "(p90)喵之萌杀 - 156", 525 | "(p90)夺命器 - 593", 526 | "(p90)巴洛克之红 - 744", 527 | "(p90)异星世界 - 849", 528 | "(p90)往日行动 - 911", 529 | "(p90)日落百合 - 726", 530 | "(p90)星辰巨蟒 - 759", 531 | "(p90)棕色皮革 - 342", 532 | "(p90)死亡之握 - 669", 533 | "(p90)沙漠战争 - 311", 534 | "(p90)沙漠涂装 - 124", 535 | "(p90)浅坟 - 636", 536 | "(p90)深蓝组件 - 335", 537 | "(p90)牵引力 - 717", 538 | "(p90)病毒危机 - 20", 539 | "(p90)白蜡木 - 234", 540 | "(p90)盲点 - 228", 541 | "(p90)精英之作 - 486", 542 | "(p90)精雕木刻 - 516", 543 | "(p90)翡翠之龙 - 182", 544 | "(p90)设施系列·底片图 - 776", 545 | "(revolver)头骨粉碎者 - 843", 546 | "(revolver)氮化处理 - 798", 547 | "(revolver)水都泛波 - 866", 548 | "(revolver)渐变之色 - 522", 549 | "(revolver)渐变琥珀 - 523", 550 | "(revolver)生存主义者 - 721", 551 | "(revolver)稳 - 701", 552 | "(revolver)美洲驼炮 - 683", 553 | "(revolver)记忆碎片 - 892", 554 | "(revolver)重新启动 - 595", 555 | "(revolver)骸骨锻造 - 952", 556 | "(sawedoff)刹车灯 - 797", 557 | "(sawedoff)北海巨妖 - 256", 558 | "(sawedoff)千纸鹤 - 434", 559 | "(sawedoff)吞噬 - 720", 560 | "(sawedoff)启示录 - 953", 561 | "(sawedoff)外表生锈 - 323", 562 | "(sawedoff)夜百合 - 673", 563 | "(sawedoff)弄臣之颅 - 517", 564 | "(sawedoff)梭鲈 - 655", 565 | "(sawedoff)灌木丛 - 870", 566 | "(sawedoff)破铜烂铁 - 552", 567 | "(sawedoff)祥和之翼 - 405", 568 | "(sawedoff)竹影 - 458", 569 | "(sawedoff)聚光灯 - 596", 570 | "(sawedoff)至高皮革 - 345", 571 | "(sawedoff)荒野公主 - 638", 572 | "(sawedoff)路霸 - 390", 573 | "(sawedoff)镀铜 - 41", 574 | "(sawedoff)马赛克 - 204", 575 | "(sawedoff)黑砂 - 814", 576 | "(scar20)丛林滑流 - 685", 577 | "(scar20)丛林爆发 - 518", 578 | "(scar20)仓库突击 - 914", 579 | "(scar20)心脏打击 - 391", 580 | "(scar20)执行者 - 954", 581 | "(scar20)撕起来 - 896", 582 | "(scar20)权力之心 - 612", 583 | "(scar20)次时代 - 312", 584 | "(scar20)沙漠网格 - 116", 585 | "(scar20)溅射果酱 - 165", 586 | "(scar20)石砌 - 865", 587 | "(scar20)绿色陆战队 - 502", 588 | "(scar20)翡翠色调 - 196", 589 | "(scar20)蓝图 - 642", 590 | "(scar20)蓝洞 - 406", 591 | "(scar20)血腥运动 - 597", 592 | "(sg556)三巨头 - 613", 593 | "(sg556)危险距离 - 815", 594 | "(sg556)四号栖息地 - 897", 595 | "(sg556)大马士革钢 - 247", 596 | "(sg556)幻影 - 686", 597 | "(sg556)意式拉力 - 750", 598 | "(sg556)擎天神 - 553", 599 | "(sg556)旅行者皮革 - 363", 600 | "(sg556)次时代 - 487", 601 | "(sg556)浪花喷漆 - 186", 602 | "(sg556)浪花穿孔 - 136", 603 | "(sg556)电子脉冲 - 287", 604 | "(sg556)红苹果 - 864", 605 | "(sg556)豹灯蛾 - 519", 606 | "(sg556)路障 - 861", 607 | "(sg556)轻空 - 598", 608 | "(sg556)辐射警告 - 378", 609 | "(sg556)阿罗哈 - 702", 610 | "(sg556)黯翼 - 955", 611 | "(ssg08)喋血战士 - 899", 612 | "(ssg08)巨铁 - 503", 613 | "(ssg08)幽灵战士 - 554", 614 | "(ssg08)手刹 - 751", 615 | "(ssg08)无尽深海 - 361", 616 | "(ssg08)橙黄镂刻 - 743", 617 | "(ssg08)水中之血 - 222", 618 | "(ssg08)浮生如梦 - 956", 619 | "(ssg08)海滨印花 - 868", 620 | "(ssg08)渐变强酸 - 253", 621 | "(ssg08)炎龙之焰 - 624", 622 | "(ssg08)热带风暴 - 233", 623 | "(ssg08)玛雅之梦 - 200", 624 | "(ssg08)血染风采 - 762", 625 | "(ssg08)裂痕 - 304", 626 | "(ssg08)迂回路线 - 319", 627 | "(ssg08)通灵者 - 538", 628 | "(ssg08)青苔虚线 - 26", 629 | "(ssg08)鬼脸天蛾 - 670", 630 | "(tec9)冰冠 - 599", 631 | "(tec9)剪纸 - 671", 632 | "(tec9)哈迪斯 - 439", 633 | "(tec9)坍雪寒裘 - 520", 634 | "(tec9)屠杀者 - 889", 635 | "(tec9)战火重燃 - 555", 636 | "(tec9)晶红石英 - 248", 637 | "(tec9)核子剧毒 - 374", 638 | "(tec9)核子威慑 - 179", 639 | "(tec9)梗怖分子 - 463", 640 | "(tec9)沙尘暴 - 289", 641 | "(tec9)燃料喷射器 - 614", 642 | "(tec9)狂哮飓风 - 206", 643 | "(tec9)破铜烂铁 - 816", 644 | "(tec9)碎蛋白石 - 684", 645 | "(tec9)穆拉诺之橙 - 738", 646 | "(tec9)竹林 - 459", 647 | "(tec9)艾萨克 - 303", 648 | "(tec9)蛇-9 - 722", 649 | "(tec9)贾姆比亚 - 539", 650 | "(tec9)遥控 - 791", 651 | "(tec9)钛片 - 272", 652 | "(tec9)锈叶 - 733", 653 | "(tec9)闪光舞步 - 905", 654 | "(tec9)陆军网格 - 242", 655 | "(tec9)青竹伪装 - 839", 656 | "(tec9)骨化之色 - 36", 657 | "(ump45)x射线 - 688", 658 | "(ump45)下士 - 281", 659 | "(ump45)动量 - 802", 660 | "(ump45)合金绽放 - 672", 661 | "(ump45)城里的月光 - 851", 662 | "(ump45)塑胶炸弹 - 916", 663 | "(ump45)弥诺陶洛斯迷宫 - 441", 664 | "(ump45)忘忧草 - 725", 665 | "(ump45)支架 - 652", 666 | "(ump45)暴乱 - 488", 667 | "(ump45)白狼 - 704", 668 | "(ump45)白骨之堆 - 193", 669 | "(ump45)简报 - 615", 670 | "(ump45)色如焦糖 - 93", 671 | "(ump45)设施系列·深色图 - 778", 672 | "(ump45)车王 - 436", 673 | "(ump45)迷之宫 - 362", 674 | "(ump45)迷幻 - 392", 675 | "(ump45)野蛮剑齿虎 - 556", 676 | "(usp_silencer)不锈钢 - 277", 677 | "(usp_silencer)公路杀手 - 318", 678 | "(usp_silencer)凯门鳄 - 339", 679 | "(usp_silencer)力矩 - 489", 680 | "(usp_silencer)商业皮革 - 364", 681 | "(usp_silencer)守护者 - 290", 682 | "(usp_silencer)宝蓝之色 - 332", 683 | "(usp_silencer)引擎故障灯 - 796", 684 | "(usp_silencer)枪响人亡 - 504", 685 | "(usp_silencer)次时代 - 637", 686 | "(usp_silencer)猎户 - 313", 687 | "(usp_silencer)疯狂蔓延 - 183", 688 | "(usp_silencer)绿色伞兵 - 454", 689 | "(usp_silencer)脑洞大开 - 705", 690 | "(usp_silencer)蓝图 - 657", 691 | "(usp_silencer)血清 - 221", 692 | "(usp_silencer)铅管 - 540", 693 | "(usp_silencer)闪回 - 817", 694 | "(usp_silencer)黑色魅影 - 653", 695 | "(xm1014)五彩斑驳 - 689", 696 | "(xm1014)剧毒水银 - 407", 697 | "(xm1014)四季 - 654", 698 | "(xm1014)天空守卫 - 314", 699 | "(xm1014)宁静 - 393", 700 | "(xm1014)寒霜锁链 - 760", 701 | "(xm1014)斯康里娅 - 505", 702 | "(xm1014)滑流 - 616", 703 | "(xm1014)焚烬之鳄 - 850", 704 | "(xm1014)特克卢喷射者 - 521", 705 | "(xm1014)狂野丛林 - 205", 706 | "(xm1014)碾骨机 - 370", 707 | "(xm1014)红色皮革 - 348", 708 | "(xm1014)芭蕉叶 - 731", 709 | "(xm1014)蔚蓝多变迷彩 - 238", 710 | "(xm1014)血红巨蟒 - 320", 711 | "(xm1014)西装革履 - 557", 712 | "(xm1014)都市穿孔 - 135", 713 | "(xm1014)锈蚀烈焰 - 706", 714 | "- - 0", 715 | "人工染色 - 43", 716 | "伽玛多普勒 - 570", 717 | "伽玛多普勒 - 569", 718 | "伽玛多普勒 - 568", 719 | "伽玛多普勒 - 572", 720 | "伽玛多普勒 - 571", 721 | "军队之辉 - 298", 722 | "加州迷彩 - 240", 723 | "北方森林 - 77", 724 | "午夜行动 - 236", 725 | "噩梦之夜 - 40", 726 | "地下水 - 2", 727 | "坚固链甲 - 327", 728 | "外表生锈 - 414", 729 | "多变迷彩 - 235", 730 | "多普勒 - 618", 731 | "多普勒 - 416", 732 | "多普勒 - 417", 733 | "多普勒 - 418", 734 | "多普勒 - 415", 735 | "多普勒 - 420", 736 | "多普勒 - 619", 737 | "多普勒 - 617", 738 | "多普勒 - 421", 739 | "多普勒 - 419", 740 | "夜色 - 735", 741 | "大马士革钢 - 857", 742 | "大马士革钢 - 411", 743 | "大马士革钢 - 410", 744 | "天秤之月 - 450", 745 | "威吓者 - 39", 746 | "对比涂装 - 22", 747 | "寻路者 - 443", 748 | "屠夫 - 59", 749 | "工业牧草 - 95", 750 | "捕食者 - 170", 751 | "摧枯拉朽 - 244", 752 | "暴风呼啸 - 100", 753 | "枯焦之色 - 175", 754 | "棕榈色 - 157", 755 | "森林 DDPAT - 5", 756 | "森林之叶 - 25", 757 | "橘皮涂装 - 141", 758 | "橙黄 DDPAT - 83", 759 | "殖民侵略者 - 47", 760 | "氮化处理 - 254", 761 | "沙丘之黄 - 99", 762 | "沙漠虚线 - 148", 763 | "沙漠风暴 - 8", 764 | "泥地杀手 - 90", 765 | "深红之网 - 12", 766 | "深红之网 - 232", 767 | "深蓝电镀处理 - 28", 768 | "渐变之色 - 38", 769 | "渐变大理石 - 413", 770 | "渐变琥珀 - 246", 771 | "澄澈之水 - 578", 772 | "火焰橙 - 166", 773 | "炽烈之炎 - 37", 774 | "燕尾 - 297", 775 | "狂哮飓风 - 101", 776 | "狂野丛林 - 151", 777 | "狩猎网格 - 72", 778 | "现代猎手 - 164", 779 | "硝烟 - 15", 780 | "碳素纤维 - 70", 781 | "紫青之色 - 333", 782 | "红苹果 - 3", 783 | "绿色格纹 - 366", 784 | "绿苹果 - 294", 785 | "翡翠色调 - 453", 786 | "自由之手 - 580", 787 | "致命紫罗兰 - 98", 788 | "蓝巢 - 218", 789 | "蓝色云杉 - 96", 790 | "蓝钛 - 216", 791 | "蓝钢 - 42", 792 | "虎牙 - 409", 793 | "蛊惑之色 - 61", 794 | "蝮蛇迷彩 - 30", 795 | "血虎 - 217", 796 | "表面淬火 - 44", 797 | "贤者涂装 - 119", 798 | "赤红新星 - 33", 799 | "辐射警告 - 169", 800 | "辐照警报 - 171", 801 | "逮捕者 - 250", 802 | "都市 DDPAT - 17", 803 | "都市伪装 - 143", 804 | "都市瓦砾 - 237", 805 | "金属 DDPAT - 34", 806 | "钢铁禁锢 - 230", 807 | "银装素裹 - 102", 808 | "银质 - 32", 809 | "阿努比斯之审判 - 542", 810 | "雇佣兵 - 46", 811 | "骸骨外罩 - 27", 812 | "鳄鱼网格 - 243", 813 | "黄铜 - 159", 814 | "黑水 - 60", 815 | -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/O.加载驱动的完美方法/README.md: -------------------------------------------------------------------------------- 1 | ## 好吧视频里有杂声,没办法了将就一下吧,也就20分钟,哈哈哈哈 ^-^ 2 | 3 | 链接: https://pan.baidu.com/s/1XBx0uJLLGm3FtXpiaAg84Q 提取码: 9sps 4 | 5 | [在线观看](https://www.ixigua.com/6852315742743101966/?utm_source=xiguastudio) 6 | 7 | ## [项目地址](https://github.com/FiYHer/kdmapper) 8 | 9 | # 截图展示 10 |

11 | 12 |

13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/O.加载驱动的完美方法/temp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Counterstrike Global Offensive/O.加载驱动的完美方法/temp.png -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/P.CSGO注入小助手/README.md: -------------------------------------------------------------------------------- 1 | 2 | ## [网盘地址 - 提取码:fqk2](https://pan.baidu.com/s/1kYOUYpviZoN9Vwlh2CP68g) 3 | 4 | ## [在线观看](https://www.ixigua.com/6854594958062518798/?utm_source=xiguastudio) 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/P.CSGO注入小助手/csgo_inject.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Counterstrike Global Offensive/P.CSGO注入小助手/csgo_inject.exe -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/P.CSGO注入小助手/main.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Counterstrike Global Offensive/P.CSGO注入小助手/main.cpp -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/Q.hvh陀螺自瞄/README.md: -------------------------------------------------------------------------------- 1 | # 前言 2 | 3 | [百度网盘 提取码: 8jpx](https://pan.baidu.com/s/1O1b4kdiKiSIUJ9PrQ2o_pA) 4 | 5 | [效果视频](https://www.ixigua.com/6856437050585907725/?utm_source=xiguastudio) 6 | 7 | [在线播放](https://www.ixigua.com/6856427520339018254/?utm_source=xiguastudio) 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/Q.hvh陀螺自瞄/address.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Counterstrike Global Offensive/Q.hvh陀螺自瞄/address.hpp -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/Q.hvh陀螺自瞄/cheats.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Counterstrike Global Offensive/Q.hvh陀螺自瞄/cheats.hpp -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/Q.hvh陀螺自瞄/main.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Counterstrike Global Offensive/Q.hvh陀螺自瞄/main.cpp -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/Q.hvh陀螺自瞄/memory.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Counterstrike Global Offensive/Q.hvh陀螺自瞄/memory.hpp -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/Q.hvh陀螺自瞄/obfuscator.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* --------------------------- ABOUT --------------------------------- 3 | Original Author: Adam Yaxley 4 | Website: https://github.com/adamyaxley 5 | License: See end of file 6 | Obfuscate 7 | Guaranteed compile-time string literal obfuscation library for C++14 8 | Usage: 9 | Pass string literals into the AY_OBFUSCATE macro to obfuscate them at 10 | compile time. AY_OBFUSCATE returns a temporary ay::obfuscated_data 11 | object that is implicitly convertable to a char*. 12 | Example: 13 | auto obfuscated_string = AY_OBFUSCATE("Hello World"); 14 | std::cout << obfuscated_string << std::endl; 15 | ------------------------------------------------------------------- */ 16 | 17 | #include 18 | 19 | namespace ay 20 | { 21 | // Obfuscates a string at compile time 22 | template 23 | class obfuscator 24 | { 25 | public: 26 | // Obfuscates the string 'data' on construction 27 | constexpr obfuscator(const char* data) 28 | { 29 | static_assert(KEY != '\0', "KEY must not be the null character."); 30 | 31 | // On construction each of the characters in the string is obfuscated with an XOR cipher based on KEY 32 | for (std::size_t i = 0; i < N; i++) 33 | { 34 | m_data[i] = data[i] ^ KEY; 35 | } 36 | } 37 | 38 | constexpr const char* getData() const 39 | { 40 | return &m_data[0]; $$$; 41 | } 42 | 43 | constexpr std::size_t getSize() const 44 | { 45 | return N; $$$; 46 | } 47 | 48 | constexpr char getKey() const 49 | { 50 | return KEY; $$$; 51 | } 52 | 53 | private: 54 | 55 | char m_data[N]{}; 56 | }; 57 | 58 | // Handles decryption and re-encryption of an encrypted string at runtime 59 | template 60 | class obfuscated_data 61 | { 62 | public: 63 | obfuscated_data(const obfuscator& obfuscator) 64 | { 65 | for (int i = 0; i < N; i++) 66 | { 67 | m_data[i] = obfuscator.getData()[i]; $$$; 68 | } 69 | } 70 | 71 | ~obfuscated_data() 72 | { 73 | // Zero m_data to remove it from memory 74 | for (int i = 0; i < N; i++) 75 | { 76 | m_data[i] = 0; $$$; 77 | } 78 | } 79 | 80 | // Returns a pointer to the plain text string, decrypting it if necessary 81 | operator char*() 82 | { 83 | decrypt(); $$$; 84 | return m_data; $$$; 85 | } 86 | 87 | // Manually decrypt the string 88 | void decrypt() 89 | { 90 | $$$; 91 | if (is_encrypted()) 92 | { 93 | $$$; 94 | for (std::size_t i = 0; i < N; i++) 95 | { 96 | m_data[i] ^= KEY; $$$; 97 | } 98 | } 99 | } 100 | 101 | // Manually re-encrypt the string 102 | void encrypt() 103 | { 104 | //$$$; 105 | if (!is_encrypted()) 106 | { 107 | //$$$; 108 | for (std::size_t i = 0; i < N; i++) 109 | { 110 | m_data[i] ^= KEY; $$$; 111 | } 112 | } 113 | } 114 | 115 | // Returns true if this string is currently encrypted, false otherwise. 116 | bool is_encrypted() const 117 | { 118 | return m_data[N - 1] != '\0'; $$$; 119 | } 120 | 121 | private: 122 | 123 | // Local storage for the string. Call is_encrypted() to check whether or not the string is currently obfuscated. 124 | char m_data[N]; 125 | }; 126 | 127 | // This function exists purely to extract the number of elements 'N' in the array 'data' 128 | template 129 | constexpr auto makeObfuscator(const char(&data)[N]) 130 | { 131 | return obfuscator(data); //$$$; 132 | } 133 | } 134 | 135 | // Obfuscates the string 'data' at compile-time and returns an ay::obfuscated_data object that has 136 | // functions for decrypting the string and is also implicitly convertable to a char* 137 | 138 | #ifdef STRING_OBFUSCATOR 139 | #define AY_OBFUSCATE(data) AY_OBFUSCATE_KEY(data, '.') 140 | #else 141 | #define AY_OBFUSCATE(data) data 142 | #endif 143 | 144 | // Obfuscates the string 'data' with 'key' at compile-time and returns an ay::obfuscated_data object that has 145 | // functions for decrypting the string and is also implicitly convertable to a char* 146 | #define AY_OBFUSCATE_KEY(data, key) \ 147 | [](){ \ 148 | constexpr auto n = sizeof(data)/sizeof(data[0]); \ 149 | static_assert(data[n - 1] == '\0', "String must be null terminated"); \ 150 | constexpr auto obfuscator = ay::makeObfuscator(data); \ 151 | return ay::obfuscated_data(obfuscator); \ 152 | }() 153 | 154 | /* --------------------------- LICENSE ------------------------------- 155 | Public Domain (http://www.unlicense.org) 156 | This is free and unencumbered software released into the public domain. 157 | Anyone is free to copy, modify, publish, use, compile, sell, or 158 | distribute this software, either in source code form or as a compiled 159 | binary, for any purpose, commercial or non-commercial, and by any 160 | means. 161 | In jurisdictions that recognize copyright laws, the author or authors 162 | of this software dedicate any and all copyright interest in the 163 | software to the public domain. We make this dedication for the benefit 164 | of the public at large and to the detriment of our heirs and 165 | successors. We intend this dedication to be an overt act of 166 | relinquishment in perpetuity of all present and future rights to this 167 | software under copyright law. 168 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 169 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 170 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 171 | IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR 172 | OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 173 | ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 174 | OTHER DEALINGS IN THE SOFTWARE. 175 | ------------------------------------------------------------------- */ 176 | -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/R.绘制人物骨骼/README.md: -------------------------------------------------------------------------------- 1 | # 前言 2 | 3 | [百度网盘 提取码: nmgb](https://pan.baidu.com/s/1l9hjqEkfUtuAa4sPNmU75A) 4 | 5 | [在线播放 ](https://www.ixigua.com/6873083514258981384/?utm_source=xiguastudio) 6 | 7 | # 截图展示 8 |

9 | 10 |

11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/R.绘制人物骨骼/cheats.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Counterstrike Global Offensive/R.绘制人物骨骼/cheats.hpp -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/R.绘制人物骨骼/demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Counterstrike Global Offensive/R.绘制人物骨骼/demo.png -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/R.绘制人物骨骼/main.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Counterstrike Global Offensive/R.绘制人物骨骼/main.cpp -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/R.绘制人物骨骼/overlay.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Counterstrike Global Offensive/R.绘制人物骨骼/overlay.hpp -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/README.md: -------------------------------------------------------------------------------- 1 | # 前言 2 | 3 | ## 消息 4 | 好吧,有时间我会编译一些能直接用的辅助软件出来 5 | 6 | ## 成品辅助软件 7 | 8 | 9 | ## 待编译成品辅助软件 10 | [Osiris - 内挂] 11 | 12 | [Anubis - 内挂] 13 | 14 | [GOESP - 内挂] 15 | 16 | [RPM-WPM-project - 外挂] 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/[无视频]一些有用小代码/CSGO简单接口类/README.md: -------------------------------------------------------------------------------- 1 | # 说明 2 | 3 | ## 简单接口类 4 | 5 | 1.基址和偏移 6 | 7 | 2.读取和写入 8 | 9 | 3.convar 10 | 11 | 4.netvar 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/[无视频]一些有用小代码/CSGO简单接口类/address.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Counterstrike Global Offensive/[无视频]一些有用小代码/CSGO简单接口类/address.hpp -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/[无视频]一些有用小代码/CSGO简单接口类/convar.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Counterstrike Global Offensive/[无视频]一些有用小代码/CSGO简单接口类/convar.hpp -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/[无视频]一些有用小代码/CSGO简单接口类/main.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Counterstrike Global Offensive/[无视频]一些有用小代码/CSGO简单接口类/main.cpp -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/[无视频]一些有用小代码/CSGO简单接口类/memory.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Counterstrike Global Offensive/[无视频]一些有用小代码/CSGO简单接口类/memory.hpp -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/[无视频]一些有用小代码/CSGO简单接口类/netvar.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Counterstrike Global Offensive/[无视频]一些有用小代码/CSGO简单接口类/netvar.hpp -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/[无视频]一些有用小代码/overlay类/main.cpp: -------------------------------------------------------------------------------- 1 | #include "overlay.hpp" 2 | 3 | int __stdcall WinMain( 4 | _In_ HINSTANCE hInstance, 5 | _In_opt_ HINSTANCE hPrevInstance, 6 | _In_ LPSTR lpCmdLine, 7 | _In_ int nShowCmd) 8 | { 9 | HWND hWnd = FindWindowA(nullptr, "ShadowVolume"); 10 | 11 | overlay* g = new overlay(hWnd); 12 | g->create_overlay_window(); 13 | g->initialize(); 14 | g->message_handle(); 15 | 16 | return 0; 17 | } -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/[无视频]一些有用小代码/overlay类/overlay.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Counterstrike Global Offensive/[无视频]一些有用小代码/overlay类/overlay.hpp -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/[无视频]一些有用小代码/获取网络上的CSGO地址和偏移/README.md: -------------------------------------------------------------------------------- 1 | # 说明 2 | 3 | 将游戏的地址和偏移硬编码是非常不好的一种方式 4 | 5 | 因为游戏稍微更新一点点,你就要修改地址和偏移后重新编译程序 6 | 7 | 所以现在推荐两种方式 : 8 | 9 | - [x] 内存特征匹配 10 | 11 | - [x] 网络动态获取 12 | 13 | 第一种不说了,教程视频都教了,现在教这一种是第二种 14 | 15 | 算了,自己看代码吧,很简单,注释很明了 16 | 17 | 这里给几个经常更新CSGO地址和偏移的网址给你们 18 | 19 | [frk1](https://github.com/frk1/hazedumper/blob/master/csgo.hpp) 20 | 21 | [MrLotsmon](https://github.com/MrLotsmon/csoffsets/blob/8970383d05fe40d110e682c4ba449d831af4ffbd/csgo.cs) 22 | 23 | [JokinAce](https://github.com/JokinAce/CSGO-Offsets/blob/df466d49a242ce645807c3dd036595d817816af0/csgo.cs) 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /[教程] [本人] Counterstrike Global Offensive/[无视频]一些有用小代码/获取网络上的CSGO地址和偏移/main.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Counterstrike Global Offensive/[无视频]一些有用小代码/获取网络上的CSGO地址和偏移/main.cpp -------------------------------------------------------------------------------- /[教程] [本人] Grand Theft Auto V/GTAHaXUI/GTAHaXUI.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] Grand Theft Auto V/GTAHaXUI/GTAHaXUI.exe -------------------------------------------------------------------------------- /[教程] [本人] Grand Theft Auto V/GTAHaXUI/stat.txt: -------------------------------------------------------------------------------- 1 | REPLACE_ME_WITH_WHATEVER_YOU_WANT,_THIS_LINE_IS_MEANT_FOR_COMMENTS_-_SET_STAT_TYPE_STAYS_UNTIL_IT_IS_CHANGED_-_64_SUPPORT_IS_EXPERIMENTAL_AND_MAY_NOT_WORK_-_ONE_LINE_IS_THE_STAT_NAME,_SECOND_IS_THE_VALUE_FOR_IT_-_BOOL_VALUES_ARE_NOT_SUPPORTED_(YET?) 2 | INT32 3 | $MP0_NO_BOUGHT_YUM_SNACKS 4 | 1337 5 | $MP0_NO_BOUGHT_HEALTH_SNACKS 6 | 9001 7 | $MP0_NO_BOUGHT_EPIC_SNACKS 8 | 0x420 9 | INT64 10 | $MPPLY_TOTAL_TIME_MISSION_CREATO 11 | 300000000000000000 12 | INT32 13 | $MP0_CHAR_FM_CARMOD_1_UNLCK 14 | -1 15 | $MP0_CHAR_FM_CARMOD_2_UNLCK 16 | -1 17 | $MP0_CHAR_FM_CARMOD_3_UNLCK 18 | -1 19 | $MP0_CHAR_FM_CARMOD_4_UNLCK 20 | -1 21 | $MP0_CHAR_FM_CARMOD_5_UNLCK 22 | -1 23 | $MP0_CHAR_FM_CARMOD_6_UNLCK 24 | -1 25 | $MP0_CHAR_FM_CARMOD_7_UNLCK 26 | -1 27 | $MP0_NUMBER_TURBO_STARTS_IN_RACE 28 | 50 29 | $MP0_USJS_COMPLETED 30 | 25 31 | $MP0_AWD_FM_RACES_FASTEST_LAP 32 | 50 33 | $MP0_NUMBER_SLIPSTREAMS_IN_RACE 34 | 100 35 | $MP0_AWD_WIN_CAPTURES 36 | 50 37 | $MP0_AWD_DROPOFF_CAP_PACKAGES 38 | 100 39 | $MP0_AWD_KILL_CARRIER_CAPTURE 40 | 100 41 | $MP0_AWD_FINISH_HEISTS 42 | 50 43 | $MP0_AWD_FINISH_HEIST_SETUP_JOB 44 | 50 45 | $MP0_AWD_NIGHTVISION_KILLS 46 | 100 47 | $MP0_AWD_WIN_LAST_TEAM_STANDINGS 48 | 50 49 | $MP0_AWD_ONLY_PLAYER_ALIVE_LTS 50 | 50 51 | $MP0_AWD_FMRALLYWONDRIVE 52 | 1 53 | $MP0_AWD_FMRALLYWONNAV 54 | 1 55 | $MP0_AWD_FMWINAIRRACE 56 | 1 57 | $MP0_AWD_FMWINSEARACE 58 | 1 59 | $MP0_RACES_WON 60 | 50 61 | $MP0_MPPLY_TOTAL_RACES_WON 62 | 50 -------------------------------------------------------------------------------- /[教程] [本人] Grand Theft Auto V/README.md: -------------------------------------------------------------------------------- 1 | # 前言 2 | 3 | 好吧,这里是GTA5相关 4 | 5 | ## 分三个内容教学视频 6 | 7 | 1.刷等级 8 | 9 | 2.刷金钱 10 | 11 | 3.辅助使用 12 | 13 | ## 辅助源码和程序 14 | [辅助源码](https://github.com/FiYHer/gta5_cheats_1.50) 15 | [辅助程序](https://github.com/FiYHer/gta5_cheats_1.50/releases) 16 | [GTAHaXUI v2 for 1.50程序下载 - 提取码:d724](https://pan.baidu.com/s/1SMWwAymbKsVmIy0cgd2_oQ) 17 | 18 | [在线观看 - 刷钱](https://www.ixigua.com/6852550551683793415/?utm_source=xiguastudio) 19 | 20 | [在线观看 - 刷等级](https://www.ixigua.com/6852555956094501390/?utm_source=xiguastudio) 21 | 22 | [在线观看 - 辅助使用](https://www.ixigua.com/6852558639929131527/?utm_source=xiguastudio) 23 | 24 | [百度网盘全部 - 提取码: nncp](https://pan.baidu.com/s/1l1iVHl2j3I_qLiQU7KOQMQ) 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /[教程] [本人] 利用驱动绕过检测的六种方法/Ioctl [输入输出控制]/Driver_IOCTL/Driver_IOCTL.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | VisualStudioVersion = 15.0.28307.1209 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Driver_IOCTL", "Driver_IOCTL\Driver_IOCTL.vcxproj", "{E1E79D3C-A6C9-4333-B2FA-B2586BFD1399}" 7 | EndProject 8 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "User_IOCTL", "User_IOCTL\User_IOCTL.vcxproj", "{0CC39709-2F4A-4623-B44B-3770A36F1DB6}" 9 | EndProject 10 | Global 11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 12 | Debug|ARM = Debug|ARM 13 | Debug|ARM64 = Debug|ARM64 14 | Debug|x64 = Debug|x64 15 | Debug|x86 = Debug|x86 16 | Release|ARM = Release|ARM 17 | Release|ARM64 = Release|ARM64 18 | Release|x64 = Release|x64 19 | Release|x86 = Release|x86 20 | EndGlobalSection 21 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 22 | {E1E79D3C-A6C9-4333-B2FA-B2586BFD1399}.Debug|ARM.ActiveCfg = Debug|ARM 23 | {E1E79D3C-A6C9-4333-B2FA-B2586BFD1399}.Debug|ARM.Build.0 = Debug|ARM 24 | {E1E79D3C-A6C9-4333-B2FA-B2586BFD1399}.Debug|ARM.Deploy.0 = Debug|ARM 25 | {E1E79D3C-A6C9-4333-B2FA-B2586BFD1399}.Debug|ARM64.ActiveCfg = Debug|ARM64 26 | {E1E79D3C-A6C9-4333-B2FA-B2586BFD1399}.Debug|ARM64.Build.0 = Debug|ARM64 27 | {E1E79D3C-A6C9-4333-B2FA-B2586BFD1399}.Debug|ARM64.Deploy.0 = Debug|ARM64 28 | {E1E79D3C-A6C9-4333-B2FA-B2586BFD1399}.Debug|x64.ActiveCfg = Debug|x64 29 | {E1E79D3C-A6C9-4333-B2FA-B2586BFD1399}.Debug|x64.Build.0 = Debug|x64 30 | {E1E79D3C-A6C9-4333-B2FA-B2586BFD1399}.Debug|x64.Deploy.0 = Debug|x64 31 | {E1E79D3C-A6C9-4333-B2FA-B2586BFD1399}.Debug|x86.ActiveCfg = Debug|Win32 32 | {E1E79D3C-A6C9-4333-B2FA-B2586BFD1399}.Debug|x86.Build.0 = Debug|Win32 33 | {E1E79D3C-A6C9-4333-B2FA-B2586BFD1399}.Debug|x86.Deploy.0 = Debug|Win32 34 | {E1E79D3C-A6C9-4333-B2FA-B2586BFD1399}.Release|ARM.ActiveCfg = Release|ARM 35 | {E1E79D3C-A6C9-4333-B2FA-B2586BFD1399}.Release|ARM.Build.0 = Release|ARM 36 | {E1E79D3C-A6C9-4333-B2FA-B2586BFD1399}.Release|ARM.Deploy.0 = Release|ARM 37 | {E1E79D3C-A6C9-4333-B2FA-B2586BFD1399}.Release|ARM64.ActiveCfg = Release|ARM64 38 | {E1E79D3C-A6C9-4333-B2FA-B2586BFD1399}.Release|ARM64.Build.0 = Release|ARM64 39 | {E1E79D3C-A6C9-4333-B2FA-B2586BFD1399}.Release|ARM64.Deploy.0 = Release|ARM64 40 | {E1E79D3C-A6C9-4333-B2FA-B2586BFD1399}.Release|x64.ActiveCfg = Release|x64 41 | {E1E79D3C-A6C9-4333-B2FA-B2586BFD1399}.Release|x64.Build.0 = Release|x64 42 | {E1E79D3C-A6C9-4333-B2FA-B2586BFD1399}.Release|x64.Deploy.0 = Release|x64 43 | {E1E79D3C-A6C9-4333-B2FA-B2586BFD1399}.Release|x86.ActiveCfg = Release|Win32 44 | {E1E79D3C-A6C9-4333-B2FA-B2586BFD1399}.Release|x86.Build.0 = Release|Win32 45 | {E1E79D3C-A6C9-4333-B2FA-B2586BFD1399}.Release|x86.Deploy.0 = Release|Win32 46 | {0CC39709-2F4A-4623-B44B-3770A36F1DB6}.Debug|ARM.ActiveCfg = Debug|Win32 47 | {0CC39709-2F4A-4623-B44B-3770A36F1DB6}.Debug|ARM64.ActiveCfg = Debug|Win32 48 | {0CC39709-2F4A-4623-B44B-3770A36F1DB6}.Debug|x64.ActiveCfg = Debug|x64 49 | {0CC39709-2F4A-4623-B44B-3770A36F1DB6}.Debug|x64.Build.0 = Debug|x64 50 | {0CC39709-2F4A-4623-B44B-3770A36F1DB6}.Debug|x86.ActiveCfg = Debug|Win32 51 | {0CC39709-2F4A-4623-B44B-3770A36F1DB6}.Debug|x86.Build.0 = Debug|Win32 52 | {0CC39709-2F4A-4623-B44B-3770A36F1DB6}.Release|ARM.ActiveCfg = Release|Win32 53 | {0CC39709-2F4A-4623-B44B-3770A36F1DB6}.Release|ARM64.ActiveCfg = Release|Win32 54 | {0CC39709-2F4A-4623-B44B-3770A36F1DB6}.Release|x64.ActiveCfg = Release|x64 55 | {0CC39709-2F4A-4623-B44B-3770A36F1DB6}.Release|x64.Build.0 = Release|x64 56 | {0CC39709-2F4A-4623-B44B-3770A36F1DB6}.Release|x86.ActiveCfg = Release|Win32 57 | {0CC39709-2F4A-4623-B44B-3770A36F1DB6}.Release|x86.Build.0 = Release|Win32 58 | EndGlobalSection 59 | GlobalSection(SolutionProperties) = preSolution 60 | HideSolutionNode = FALSE 61 | EndGlobalSection 62 | GlobalSection(ExtensibilityGlobals) = postSolution 63 | SolutionGuid = {3A5055F0-150D-4D17-BF8E-59371ED1BA15} 64 | EndGlobalSection 65 | EndGlobal 66 | -------------------------------------------------------------------------------- /[教程] [本人] 利用驱动绕过检测的六种方法/Ioctl [输入输出控制]/Driver_IOCTL/Driver_IOCTL/Driver_IOCTL.inf: -------------------------------------------------------------------------------- 1 | ; 2 | ; Driver_IOCTL.inf 3 | ; 4 | 5 | [Version] 6 | Signature="$WINDOWS NT$" 7 | Class=System 8 | ClassGuid={4d36e97d-e325-11ce-bfc1-08002be10318} 9 | Provider=%ManufacturerName% 10 | DriverVer= 11 | CatalogFile=Driver_IOCTL.cat 12 | 13 | [DestinationDirs] 14 | DefaultDestDir = 12 15 | 16 | 17 | [SourceDisksNames] 18 | 1 = %DiskName%,,,"" 19 | 20 | [SourceDisksFiles] 21 | 22 | 23 | [Manufacturer] 24 | %ManufacturerName%=Standard,NT$ARCH$ 25 | 26 | [Standard.NT$ARCH$] 27 | 28 | 29 | [Strings] 30 | ManufacturerName="" ;TODO: Replace with your manufacturer name 31 | ClassName="" 32 | DiskName="Driver_IOCTL Source Disk" 33 | -------------------------------------------------------------------------------- /[教程] [本人] 利用驱动绕过检测的六种方法/Ioctl [输入输出控制]/Driver_IOCTL/Driver_IOCTL/Driver_IOCTL.vcxproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | Win32 7 | 8 | 9 | Release 10 | Win32 11 | 12 | 13 | Debug 14 | x64 15 | 16 | 17 | Release 18 | x64 19 | 20 | 21 | Debug 22 | ARM 23 | 24 | 25 | Release 26 | ARM 27 | 28 | 29 | Debug 30 | ARM64 31 | 32 | 33 | Release 34 | ARM64 35 | 36 | 37 | 38 | {E1E79D3C-A6C9-4333-B2FA-B2586BFD1399} 39 | {dd38f7fc-d7bd-488b-9242-7d8754cde80d} 40 | v4.5 41 | 12.0 42 | Debug 43 | Win32 44 | Driver_IOCTL 45 | 46 | 47 | 48 | Windows10 49 | true 50 | WindowsKernelModeDriver10.0 51 | Driver 52 | WDM 53 | 54 | 55 | Windows10 56 | false 57 | WindowsKernelModeDriver10.0 58 | Driver 59 | WDM 60 | 61 | 62 | Windows10 63 | true 64 | WindowsKernelModeDriver10.0 65 | Driver 66 | WDM 67 | false 68 | 69 | 70 | Windows10 71 | false 72 | WindowsKernelModeDriver10.0 73 | Driver 74 | WDM 75 | 76 | 77 | Windows10 78 | true 79 | WindowsKernelModeDriver10.0 80 | Driver 81 | WDM 82 | 83 | 84 | Windows10 85 | false 86 | WindowsKernelModeDriver10.0 87 | Driver 88 | WDM 89 | 90 | 91 | Windows10 92 | true 93 | WindowsKernelModeDriver10.0 94 | Driver 95 | WDM 96 | 97 | 98 | Windows10 99 | false 100 | WindowsKernelModeDriver10.0 101 | Driver 102 | WDM 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | DbgengKernelDebugger 114 | 115 | 116 | DbgengKernelDebugger 117 | 118 | 119 | DbgengKernelDebugger 120 | 121 | 122 | DbgengKernelDebugger 123 | 124 | 125 | DbgengKernelDebugger 126 | 127 | 128 | DbgengKernelDebugger 129 | 130 | 131 | DbgengKernelDebugger 132 | 133 | 134 | DbgengKernelDebugger 135 | 136 | 137 | 138 | false 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | -------------------------------------------------------------------------------- /[教程] [本人] 利用驱动绕过检测的六种方法/Ioctl [输入输出控制]/Driver_IOCTL/Driver_IOCTL/Driver_IOCTL.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | {8E41214B-6785-4CFE-B992-037D68949A14} 18 | inf;inv;inx;mof;mc; 19 | 20 | 21 | 22 | 23 | Driver Files 24 | 25 | 26 | 27 | 28 | Source Files 29 | 30 | 31 | -------------------------------------------------------------------------------- /[教程] [本人] 利用驱动绕过检测的六种方法/Ioctl [输入输出控制]/Driver_IOCTL/Driver_IOCTL/main.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] 利用驱动绕过检测的六种方法/Ioctl [输入输出控制]/Driver_IOCTL/Driver_IOCTL/main.c -------------------------------------------------------------------------------- /[教程] [本人] 利用驱动绕过检测的六种方法/Ioctl [输入输出控制]/Driver_IOCTL/User_IOCTL/User_IOCTL.vcxproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Debug 6 | Win32 7 | 8 | 9 | Release 10 | Win32 11 | 12 | 13 | Debug 14 | x64 15 | 16 | 17 | Release 18 | x64 19 | 20 | 21 | 22 | 15.0 23 | {0CC39709-2F4A-4623-B44B-3770A36F1DB6} 24 | UserIOCTL 25 | 10.0.17763.0 26 | 27 | 28 | 29 | Application 30 | true 31 | v141 32 | MultiByte 33 | 34 | 35 | Application 36 | false 37 | v141 38 | true 39 | MultiByte 40 | 41 | 42 | Application 43 | true 44 | v141 45 | MultiByte 46 | false 47 | 48 | 49 | Application 50 | false 51 | v141 52 | true 53 | MultiByte 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | Level3 77 | Disabled 78 | true 79 | true 80 | 81 | 82 | Console 83 | 84 | 85 | 86 | 87 | Level3 88 | Disabled 89 | true 90 | true 91 | 92 | 93 | Console 94 | 95 | 96 | 97 | 98 | Level3 99 | MaxSpeed 100 | true 101 | true 102 | true 103 | true 104 | 105 | 106 | Console 107 | true 108 | true 109 | 110 | 111 | 112 | 113 | Level3 114 | MaxSpeed 115 | true 116 | true 117 | true 118 | true 119 | 120 | 121 | Console 122 | true 123 | true 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | -------------------------------------------------------------------------------- /[教程] [本人] 利用驱动绕过检测的六种方法/Ioctl [输入输出控制]/Driver_IOCTL/User_IOCTL/User_IOCTL.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;hm;inl;inc;ipp;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 源文件 20 | 21 | 22 | -------------------------------------------------------------------------------- /[教程] [本人] 利用驱动绕过检测的六种方法/Ioctl [输入输出控制]/Driver_IOCTL/User_IOCTL/User_IOCTL.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /[教程] [本人] 利用驱动绕过检测的六种方法/Ioctl [输入输出控制]/Driver_IOCTL/User_IOCTL/main.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] 利用驱动绕过检测的六种方法/Ioctl [输入输出控制]/Driver_IOCTL/User_IOCTL/main.cpp -------------------------------------------------------------------------------- /[教程] [本人] 利用驱动绕过检测的六种方法/Ioctl [输入输出控制]/README.md: -------------------------------------------------------------------------------- 1 | 2 | [百度网盘 提取码-mmup](https://pan.baidu.com/s/1JjziceV5lYm_n2FkqhZZNQ) 3 | 4 | [在线播放](https://www.ixigua.com/6855645091101573645/?utm_source=xiguastudio) 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /[教程] [本人] 利用驱动绕过检测的六种方法/Mdl读取内存/Driver.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] 利用驱动绕过检测的六种方法/Mdl读取内存/Driver.c -------------------------------------------------------------------------------- /[教程] [本人] 利用驱动绕过检测的六种方法/Mdl读取内存/Driver.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] 利用驱动绕过检测的六种方法/Mdl读取内存/Driver.h -------------------------------------------------------------------------------- /[教程] [本人] 利用驱动绕过检测的六种方法/Mdl读取内存/main.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] 利用驱动绕过检测的六种方法/Mdl读取内存/main.cpp -------------------------------------------------------------------------------- /[教程] [本人] 利用驱动绕过检测的六种方法/MiProcessLoaderEntry隐藏驱动/HideDriver.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] 利用驱动绕过检测的六种方法/MiProcessLoaderEntry隐藏驱动/HideDriver.c -------------------------------------------------------------------------------- /[教程] [本人] 利用驱动绕过检测的六种方法/MiProcessLoaderEntry隐藏驱动/HideDriver.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] 利用驱动绕过检测的六种方法/MiProcessLoaderEntry隐藏驱动/HideDriver.h -------------------------------------------------------------------------------- /[教程] [本人] 利用驱动绕过检测的六种方法/MiProcessLoaderEntry隐藏驱动/README.md: -------------------------------------------------------------------------------- 1 | 2 | # 截图展示 3 |

4 | 5 |

6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /[教程] [本人] 利用驱动绕过检测的六种方法/MiProcessLoaderEntry隐藏驱动/demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] 利用驱动绕过检测的六种方法/MiProcessLoaderEntry隐藏驱动/demo.png -------------------------------------------------------------------------------- /[教程] [本人] 利用驱动绕过检测的六种方法/callback [回调]/README.md: -------------------------------------------------------------------------------- 1 | # 等待更新... 2 | 3 | -------------------------------------------------------------------------------- /[教程] [本人] 利用驱动绕过检测的六种方法/dispatch [分发]/README.md: -------------------------------------------------------------------------------- 1 | # 等待更新... 2 | 3 | -------------------------------------------------------------------------------- /[教程] [本人] 利用驱动绕过检测的六种方法/name pipe [命名管道]/README.md: -------------------------------------------------------------------------------- 1 | # 等待更新... 2 | 3 | -------------------------------------------------------------------------------- /[教程] [本人] 利用驱动绕过检测的六种方法/share memory [共享内存]/README.md: -------------------------------------------------------------------------------- 1 | # 等待更新... 2 | 3 | -------------------------------------------------------------------------------- /[教程] [本人] 利用驱动绕过检测的六种方法/socket [套接字]/README.md: -------------------------------------------------------------------------------- 1 | # 等待更新... 2 | 3 | -------------------------------------------------------------------------------- /[教程] [本人] 利用驱动绕过检测的六种方法/trace cleaner [清跟踪]/Main.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] 利用驱动绕过检测的六种方法/trace cleaner [清跟踪]/Main.cpp -------------------------------------------------------------------------------- /[教程] [本人] 利用驱动绕过检测的六种方法/trace cleaner [清跟踪]/clean.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ycvk/Game-Cheating-Tutorial/611c9d42e74ae7e6fa5a3367b0612b0da84146bd/[教程] [本人] 利用驱动绕过检测的六种方法/trace cleaner [清跟踪]/clean.hpp -------------------------------------------------------------------------------- /[教程] [本人] 利用驱动绕过检测的六种方法/trace cleaner [清跟踪]/struct.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | typedef unsigned char BYTE; 10 | 11 | typedef struct _RTL_PROCESS_MODULE_INFORMATION 12 | { 13 | HANDLE Section; // Not filled in 14 | PVOID MappedBase; 15 | PVOID ImageBase; 16 | ULONG ImageSize; 17 | ULONG Flags; 18 | USHORT LoadOrderIndex; 19 | USHORT InitOrderIndex; 20 | USHORT LoadCount; 21 | USHORT OffsetToFileName; 22 | UCHAR FullPathName[MAXIMUM_FILENAME_LENGTH]; 23 | } RTL_PROCESS_MODULE_INFORMATION, *PRTL_PROCESS_MODULE_INFORMATION; 24 | 25 | typedef struct _RTL_PROCESS_MODULES 26 | { 27 | ULONG NumberOfModules; 28 | RTL_PROCESS_MODULE_INFORMATION Modules[1]; 29 | } RTL_PROCESS_MODULES, *PRTL_PROCESS_MODULES; 30 | 31 | struct PiDDBCacheEntry 32 | { 33 | LIST_ENTRY List; 34 | UNICODE_STRING DriverName; 35 | ULONG TimeDateStamp; 36 | NTSTATUS LoadStatus; 37 | char _0x0028[16]; // data from the shim engine, or uninitialized memory for custom drivers 38 | }; 39 | 40 | typedef enum _SYSTEM_INFORMATION_CLASS 41 | { 42 | SystemBasicInformation = 0x0, 43 | SystemProcessorInformation = 0x1, 44 | SystemPerformanceInformation = 0x2, 45 | SystemTimeOfDayInformation = 0x3, 46 | SystemPathInformation = 0x4, 47 | SystemProcessInformation = 0x5, 48 | SystemCallCountInformation = 0x6, 49 | SystemDeviceInformation = 0x7, 50 | SystemProcessorPerformanceInformation = 0x8, 51 | SystemFlagsInformation = 0x9, 52 | SystemCallTimeInformation = 0xa, 53 | SystemModuleInformation = 0xb, 54 | SystemLocksInformation = 0xc, 55 | SystemStackTraceInformation = 0xd, 56 | SystemPagedPoolInformation = 0xe, 57 | SystemNonPagedPoolInformation = 0xf, 58 | SystemHandleInformation = 0x10, 59 | SystemObjectInformation = 0x11, 60 | SystemPageFileInformation = 0x12, 61 | SystemVdmInstemulInformation = 0x13, 62 | SystemVdmBopInformation = 0x14, 63 | SystemFileCacheInformation = 0x15, 64 | SystemPoolTagInformation = 0x16, 65 | SystemInterruptInformation = 0x17, 66 | SystemDpcBehaviorInformation = 0x18, 67 | SystemFullMemoryInformation = 0x19, 68 | SystemLoadGdiDriverInformation = 0x1a, 69 | SystemUnloadGdiDriverInformation = 0x1b, 70 | SystemTimeAdjustmentInformation = 0x1c, 71 | SystemSummaryMemoryInformation = 0x1d, 72 | SystemMirrorMemoryInformation = 0x1e, 73 | SystemPerformanceTraceInformation = 0x1f, 74 | SystemObsolete0 = 0x20, 75 | SystemExceptionInformation = 0x21, 76 | SystemCrashDumpStateInformation = 0x22, 77 | SystemKernelDebuggerInformation = 0x23, 78 | SystemContextSwitchInformation = 0x24, 79 | SystemRegistryQuotaInformation = 0x25, 80 | SystemExtendServiceTableInformation = 0x26, 81 | SystemPrioritySeperation = 0x27, 82 | SystemVerifierAddDriverInformation = 0x28, 83 | SystemVerifierRemoveDriverInformation = 0x29, 84 | SystemProcessorIdleInformation = 0x2a, 85 | SystemLegacyDriverInformation = 0x2b, 86 | SystemCurrentTimeZoneInformation = 0x2c, 87 | SystemLookasideInformation = 0x2d, 88 | SystemTimeSlipNotification = 0x2e, 89 | SystemSessionCreate = 0x2f, 90 | SystemSessionDetach = 0x30, 91 | SystemSessionInformation = 0x31, 92 | SystemRangeStartInformation = 0x32, 93 | SystemVerifierInformation = 0x33, 94 | SystemVerifierThunkExtend = 0x34, 95 | SystemSessionProcessInformation = 0x35, 96 | SystemLoadGdiDriverInSystemSpace = 0x36, 97 | SystemNumaProcessorMap = 0x37, 98 | SystemPrefetcherInformation = 0x38, 99 | SystemExtendedProcessInformation = 0x39, 100 | SystemRecommendedSharedDataAlignment = 0x3a, 101 | SystemComPlusPackage = 0x3b, 102 | SystemNumaAvailableMemory = 0x3c, 103 | SystemProcessorPowerInformation = 0x3d, 104 | SystemEmulationBasicInformation = 0x3e, 105 | SystemEmulationProcessorInformation = 0x3f, 106 | SystemExtendedHandleInformation = 0x40, 107 | SystemLostDelayedWriteInformation = 0x41, 108 | SystemBigPoolInformation = 0x42, 109 | SystemSessionPoolTagInformation = 0x43, 110 | SystemSessionMappedViewInformation = 0x44, 111 | SystemHotpatchInformation = 0x45, 112 | SystemObjectSecurityMode = 0x46, 113 | SystemWatchdogTimerHandler = 0x47, 114 | SystemWatchdogTimerInformation = 0x48, 115 | SystemLogicalProcessorInformation = 0x49, 116 | SystemWow64SharedInformationObsolete = 0x4a, 117 | SystemRegisterFirmwareTableInformationHandler = 0x4b, 118 | SystemFirmwareTableInformation = 0x4c, 119 | SystemModuleInformationEx = 0x4d, 120 | SystemVerifierTriageInformation = 0x4e, 121 | SystemSuperfetchInformation = 0x4f, 122 | SystemMemoryListInformation = 0x50, 123 | SystemFileCacheInformationEx = 0x51, 124 | SystemThreadPriorityClientIdInformation = 0x52, 125 | SystemProcessorIdleCycleTimeInformation = 0x53, 126 | SystemVerifierCancellationInformation = 0x54, 127 | SystemProcessorPowerInformationEx = 0x55, 128 | SystemRefTraceInformation = 0x56, 129 | SystemSpecialPoolInformation = 0x57, 130 | SystemProcessIdInformation = 0x58, 131 | SystemErrorPortInformation = 0x59, 132 | SystemBootEnvironmentInformation = 0x5a, 133 | SystemHypervisorInformation = 0x5b, 134 | SystemVerifierInformationEx = 0x5c, 135 | SystemTimeZoneInformation = 0x5d, 136 | SystemImageFileExecutionOptionsInformation = 0x5e, 137 | SystemCoverageInformation = 0x5f, 138 | SystemPrefetchPatchInformation = 0x60, 139 | SystemVerifierFaultsInformation = 0x61, 140 | SystemSystemPartitionInformation = 0x62, 141 | SystemSystemDiskInformation = 0x63, 142 | SystemProcessorPerformanceDistribution = 0x64, 143 | SystemNumaProximityNodeInformation = 0x65, 144 | SystemDynamicTimeZoneInformation = 0x66, 145 | SystemCodeIntegrityInformation = 0x67, 146 | SystemProcessorMicrocodeUpdateInformation = 0x68, 147 | SystemProcessorBrandString = 0x69, 148 | SystemVirtualAddressInformation = 0x6a, 149 | SystemLogicalProcessorAndGroupInformation = 0x6b, 150 | SystemProcessorCycleTimeInformation = 0x6c, 151 | SystemStoreInformation = 0x6d, 152 | SystemRegistryAppendString = 0x6e, 153 | SystemAitSamplingValue = 0x6f, 154 | SystemVhdBootInformation = 0x70, 155 | SystemCpuQuotaInformation = 0x71, 156 | SystemNativeBasicInformation = 0x72, 157 | SystemErrorPortTimeouts = 0x73, 158 | SystemLowPriorityIoInformation = 0x74, 159 | SystemBootEntropyInformation = 0x75, 160 | SystemVerifierCountersInformation = 0x76, 161 | SystemPagedPoolInformationEx = 0x77, 162 | SystemSystemPtesInformationEx = 0x78, 163 | SystemNodeDistanceInformation = 0x79, 164 | SystemAcpiAuditInformation = 0x7a, 165 | SystemBasicPerformanceInformation = 0x7b, 166 | SystemQueryPerformanceCounterInformation = 0x7c, 167 | SystemSessionBigPoolInformation = 0x7d, 168 | SystemBootGraphicsInformation = 0x7e, 169 | SystemScrubPhysicalMemoryInformation = 0x7f, 170 | SystemBadPageInformation = 0x80, 171 | SystemProcessorProfileControlArea = 0x81, 172 | SystemCombinePhysicalMemoryInformation = 0x82, 173 | SystemEntropyInterruptTimingInformation = 0x83, 174 | SystemConsoleInformation = 0x84, 175 | SystemPlatformBinaryInformation = 0x85, 176 | SystemThrottleNotificationInformation = 0x86, 177 | SystemHypervisorProcessorCountInformation = 0x87, 178 | SystemDeviceDataInformation = 0x88, 179 | SystemDeviceDataEnumerationInformation = 0x89, 180 | SystemMemoryTopologyInformation = 0x8a, 181 | SystemMemoryChannelInformation = 0x8b, 182 | SystemBootLogoInformation = 0x8c, 183 | SystemProcessorPerformanceInformationEx = 0x8d, 184 | SystemSpare0 = 0x8e, 185 | SystemSecureBootPolicyInformation = 0x8f, 186 | SystemPageFileInformationEx = 0x90, 187 | SystemSecureBootInformation = 0x91, 188 | SystemEntropyInterruptTimingRawInformation = 0x92, 189 | SystemPortableWorkspaceEfiLauncherInformation = 0x93, 190 | SystemFullProcessInformation = 0x94, 191 | SystemKernelDebuggerInformationEx = 0x95, 192 | SystemBootMetadataInformation = 0x96, 193 | SystemSoftRebootInformation = 0x97, 194 | SystemElamCertificateInformation = 0x98, 195 | SystemOfflineDumpConfigInformation = 0x99, 196 | SystemProcessorFeaturesInformation = 0x9a, 197 | SystemRegistryReconciliationInformation = 0x9b, 198 | MaxSystemInfoClass = 0x9c, 199 | } SYSTEM_INFORMATION_CLASS; 200 | 201 | EXTERN_C NTSYSAPI PIMAGE_NT_HEADERS NTAPI RtlImageNtHeader(IN PVOID ModuleAddress); 202 | 203 | EXTERN_C NTSYSAPI NTSTATUS NTAPI ZwQuerySystemInformation( 204 | IN SYSTEM_INFORMATION_CLASS SystemInformationClass, 205 | OUT PVOID SystemInformation, 206 | IN ULONG SystemInformationLength, 207 | OUT PULONG ReturnLength OPTIONAL); 208 | 209 | #define MM_UNLOADED_DRIVERS_SIZE 50 210 | typedef struct _MM_UNLOADED_DRIVER 211 | { 212 | UNICODE_STRING Name; 213 | PVOID ModuleStart; 214 | PVOID ModuleEnd; 215 | ULONG64 UnloadTime; 216 | } MM_UNLOADED_DRIVER, *PMM_UNLOADED_DRIVER; 217 | --------------------------------------------------------------------------------