├── .gitattributes
├── .gitignore
├── ExtCSGO
├── ExtCSGO.sln
└── ExtCSGO
│ ├── ExtCSGO.vcxproj
│ ├── ExtCSGO.vcxproj.filters
│ ├── Include
│ ├── Engine.h
│ ├── Engine
│ │ ├── Module.h
│ │ └── Process.h
│ ├── Features
│ │ └── Aimbot.h
│ ├── Maths
│ │ ├── Math.h
│ │ └── Vector.h
│ ├── Netvars.h
│ ├── Update.h
│ └── sdk
│ │ ├── IClientEntityList.h
│ │ ├── IVEngineClient.h
│ │ └── Player.h
│ ├── main.cpp
│ └── src
│ ├── Engine.cpp
│ ├── Engine
│ ├── Module.cpp
│ └── Process.cpp
│ ├── Features
│ └── Aimbot.cpp
│ ├── Maths
│ ├── Math.cpp
│ └── Vector.cpp
│ ├── Update.cpp
│ └── sdk
│ ├── IClientEntityList.cpp
│ ├── IVEngineClient.cpp
│ └── Player.cpp
└── README.md
/.gitattributes:
--------------------------------------------------------------------------------
1 | ###############################################################################
2 | # Set default behavior to automatically normalize line endings.
3 | ###############################################################################
4 | * text=auto
5 |
6 | ###############################################################################
7 | # Set default behavior for command prompt diff.
8 | #
9 | # This is need for earlier builds of msysgit that does not have it on by
10 | # default for csharp files.
11 | # Note: This is only used by command line
12 | ###############################################################################
13 | #*.cs diff=csharp
14 |
15 | ###############################################################################
16 | # Set the merge driver for project and solution files
17 | #
18 | # Merging from the command prompt will add diff markers to the files if there
19 | # are conflicts (Merging from VS is not affected by the settings below, in VS
20 | # the diff markers are never inserted). Diff markers may cause the following
21 | # file extensions to fail to load in VS. An alternative would be to treat
22 | # these files as binary and thus will always conflict and require user
23 | # intervention with every merge. To do so, just uncomment the entries below
24 | ###############################################################################
25 | #*.sln merge=binary
26 | #*.csproj merge=binary
27 | #*.vbproj merge=binary
28 | #*.vcxproj merge=binary
29 | #*.vcproj merge=binary
30 | #*.dbproj merge=binary
31 | #*.fsproj merge=binary
32 | #*.lsproj merge=binary
33 | #*.wixproj merge=binary
34 | #*.modelproj merge=binary
35 | #*.sqlproj merge=binary
36 | #*.wwaproj merge=binary
37 |
38 | ###############################################################################
39 | # behavior for image files
40 | #
41 | # image files are treated as binary by default.
42 | ###############################################################################
43 | #*.jpg binary
44 | #*.png binary
45 | #*.gif binary
46 |
47 | ###############################################################################
48 | # diff behavior for common document formats
49 | #
50 | # Convert binary document formats to text before diffing them. This feature
51 | # is only available from the command line. Turn it on by uncommenting the
52 | # entries below.
53 | ###############################################################################
54 | #*.doc diff=astextplain
55 | #*.DOC diff=astextplain
56 | #*.docx diff=astextplain
57 | #*.DOCX diff=astextplain
58 | #*.dot diff=astextplain
59 | #*.DOT diff=astextplain
60 | #*.pdf diff=astextplain
61 | #*.PDF diff=astextplain
62 | #*.rtf diff=astextplain
63 | #*.RTF diff=astextplain
64 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 |
4 | # User-specific files
5 | *.suo
6 | *.user
7 | *.userosscache
8 | *.sln.docstates
9 |
10 | # User-specific files (MonoDevelop/Xamarin Studio)
11 | *.userprefs
12 |
13 | # Build results
14 | [Dd]ebug/
15 | [Dd]ebugPublic/
16 | [Rr]elease/
17 | [Rr]eleases/
18 | [Xx]64/
19 | [Xx]86/
20 | [Bb]uild/
21 | bld/
22 | [Bb]in/
23 | [Oo]bj/
24 |
25 | # Visual Studio 2015 cache/options directory
26 | .vs/
27 | # Uncomment if you have tasks that create the project's static files in wwwroot
28 | #wwwroot/
29 |
30 | # MSTest test Results
31 | [Tt]est[Rr]esult*/
32 | [Bb]uild[Ll]og.*
33 |
34 | # NUNIT
35 | *.VisualState.xml
36 | TestResult.xml
37 |
38 | # Build Results of an ATL Project
39 | [Dd]ebugPS/
40 | [Rr]eleasePS/
41 | dlldata.c
42 |
43 | # DNX
44 | project.lock.json
45 | artifacts/
46 |
47 | *_i.c
48 | *_p.c
49 | *_i.h
50 | *.ilk
51 | *.meta
52 | *.obj
53 | *.pch
54 | *.pdb
55 | *.pgc
56 | *.pgd
57 | *.rsp
58 | *.sbr
59 | *.tlb
60 | *.tli
61 | *.tlh
62 | *.tmp
63 | *.tmp_proj
64 | *.log
65 | *.vspscc
66 | *.vssscc
67 | .builds
68 | *.pidb
69 | *.svclog
70 | *.scc
71 |
72 | # Chutzpah Test files
73 | _Chutzpah*
74 |
75 | # Visual C++ cache files
76 | ipch/
77 | *.aps
78 | *.ncb
79 | *.opendb
80 | *.opensdf
81 | *.sdf
82 | *.cachefile
83 | *.VC.db
84 |
85 | # Visual Studio profiler
86 | *.psess
87 | *.vsp
88 | *.vspx
89 | *.sap
90 |
91 | # TFS 2012 Local Workspace
92 | $tf/
93 |
94 | # Guidance Automation Toolkit
95 | *.gpState
96 |
97 | # ReSharper is a .NET coding add-in
98 | _ReSharper*/
99 | *.[Rr]e[Ss]harper
100 | *.DotSettings.user
101 |
102 | # JustCode is a .NET coding add-in
103 | .JustCode
104 |
105 | # TeamCity is a build add-in
106 | _TeamCity*
107 |
108 | # DotCover is a Code Coverage Tool
109 | *.dotCover
110 |
111 | # NCrunch
112 | _NCrunch_*
113 | .*crunch*.local.xml
114 | nCrunchTemp_*
115 |
116 | # MightyMoose
117 | *.mm.*
118 | AutoTest.Net/
119 |
120 | # Web workbench (sass)
121 | .sass-cache/
122 |
123 | # Installshield output folder
124 | [Ee]xpress/
125 |
126 | # DocProject is a documentation generator add-in
127 | DocProject/buildhelp/
128 | DocProject/Help/*.HxT
129 | DocProject/Help/*.HxC
130 | DocProject/Help/*.hhc
131 | DocProject/Help/*.hhk
132 | DocProject/Help/*.hhp
133 | DocProject/Help/Html2
134 | DocProject/Help/html
135 |
136 | # Click-Once directory
137 | publish/
138 |
139 | # Publish Web Output
140 | *.[Pp]ublish.xml
141 | *.azurePubxml
142 |
143 | # TODO: Un-comment the next line if you do not want to checkin
144 | # your web deploy settings because they may include unencrypted
145 | # passwords
146 | #*.pubxml
147 | *.publishproj
148 |
149 | # NuGet Packages
150 | *.nupkg
151 | # The packages folder can be ignored because of Package Restore
152 | **/packages/*
153 | # except build/, which is used as an MSBuild target.
154 | !**/packages/build/
155 | # Uncomment if necessary however generally it will be regenerated when needed
156 | #!**/packages/repositories.config
157 | # NuGet v3's project.json files produces more ignoreable files
158 | *.nuget.props
159 | *.nuget.targets
160 |
161 | # Microsoft Azure Build Output
162 | csx/
163 | *.build.csdef
164 |
165 | # Microsoft Azure Emulator
166 | ecf/
167 | rcf/
168 |
169 | # Windows Store app package directory
170 | AppPackages/
171 | BundleArtifacts/
172 |
173 | # Visual Studio cache files
174 | # files ending in .cache can be ignored
175 | *.[Cc]ache
176 | # but keep track of directories ending in .cache
177 | !*.[Cc]ache/
178 |
179 | # Others
180 | ClientBin/
181 | [Ss]tyle[Cc]op.*
182 | ~$*
183 | *~
184 | *.dbmdl
185 | *.dbproj.schemaview
186 | *.pfx
187 | *.publishsettings
188 | node_modules/
189 | orleans.codegen.cs
190 |
191 | # RIA/Silverlight projects
192 | Generated_Code/
193 |
194 | # Backup & report files from converting an old project file
195 | # to a newer Visual Studio version. Backup files are not needed,
196 | # because we have git ;-)
197 | _UpgradeReport_Files/
198 | Backup*/
199 | UpgradeLog*.XML
200 | UpgradeLog*.htm
201 |
202 | # SQL Server files
203 | *.mdf
204 | *.ldf
205 |
206 | # Business Intelligence projects
207 | *.rdl.data
208 | *.bim.layout
209 | *.bim_*.settings
210 |
211 | # Microsoft Fakes
212 | FakesAssemblies/
213 |
214 | # GhostDoc plugin setting file
215 | *.GhostDoc.xml
216 |
217 | # Node.js Tools for Visual Studio
218 | .ntvs_analysis.dat
219 |
220 | # Visual Studio 6 build log
221 | *.plg
222 |
223 | # Visual Studio 6 workspace options file
224 | *.opt
225 |
226 | # Visual Studio LightSwitch build output
227 | **/*.HTMLClient/GeneratedArtifacts
228 | **/*.DesktopClient/GeneratedArtifacts
229 | **/*.DesktopClient/ModelManifest.xml
230 | **/*.Server/GeneratedArtifacts
231 | **/*.Server/ModelManifest.xml
232 | _Pvt_Extensions
233 |
234 | # LightSwitch generated files
235 | GeneratedArtifacts/
236 | ModelManifest.xml
237 |
238 | # Paket dependency manager
239 | .paket/paket.exe
240 |
241 | # FAKE - F# Make
242 | .fake/
243 |
--------------------------------------------------------------------------------
/ExtCSGO/ExtCSGO.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 14
4 | VisualStudioVersion = 14.0.25420.1
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ExtCSGO", "ExtCSGO\ExtCSGO.vcxproj", "{0E7BA0AE-7D43-482B-82AA-19257BB7FAEC}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|x64 = Debug|x64
11 | Debug|x86 = Debug|x86
12 | Release|x64 = Release|x64
13 | Release|x86 = Release|x86
14 | EndGlobalSection
15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
16 | {0E7BA0AE-7D43-482B-82AA-19257BB7FAEC}.Debug|x64.ActiveCfg = Debug|x64
17 | {0E7BA0AE-7D43-482B-82AA-19257BB7FAEC}.Debug|x64.Build.0 = Debug|x64
18 | {0E7BA0AE-7D43-482B-82AA-19257BB7FAEC}.Debug|x86.ActiveCfg = Debug|Win32
19 | {0E7BA0AE-7D43-482B-82AA-19257BB7FAEC}.Debug|x86.Build.0 = Debug|Win32
20 | {0E7BA0AE-7D43-482B-82AA-19257BB7FAEC}.Release|x64.ActiveCfg = Release|x64
21 | {0E7BA0AE-7D43-482B-82AA-19257BB7FAEC}.Release|x64.Build.0 = Release|x64
22 | {0E7BA0AE-7D43-482B-82AA-19257BB7FAEC}.Release|x86.ActiveCfg = Release|Win32
23 | {0E7BA0AE-7D43-482B-82AA-19257BB7FAEC}.Release|x86.Build.0 = Release|Win32
24 | EndGlobalSection
25 | GlobalSection(SolutionProperties) = preSolution
26 | HideSolutionNode = FALSE
27 | EndGlobalSection
28 | EndGlobal
29 |
--------------------------------------------------------------------------------
/ExtCSGO/ExtCSGO/ExtCSGO.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 | {0E7BA0AE-7D43-482B-82AA-19257BB7FAEC}
23 | Win32Proj
24 | ExtCSGO
25 | 8.1
26 |
27 |
28 |
29 | Application
30 | true
31 | v140
32 | Unicode
33 |
34 |
35 | Application
36 | false
37 | v140
38 | true
39 | Unicode
40 |
41 |
42 | Application
43 | true
44 | v140
45 | Unicode
46 |
47 |
48 | Application
49 | false
50 | v140
51 | true
52 | Unicode
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 | true
74 |
75 |
76 | true
77 | $(ProjectDir)/Include;$(IncludePath)
78 |
79 |
80 | false
81 | $(ProjectDir)/Include;$(IncludePath)
82 |
83 |
84 | false
85 | $(ProjectDir)/Include;$(IncludePath)
86 |
87 |
88 |
89 |
90 |
91 | Level3
92 | Disabled
93 | WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
94 |
95 |
96 | Console
97 | true
98 |
99 |
100 |
101 |
102 |
103 |
104 | Level3
105 | Disabled
106 | _DEBUG;_CONSOLE;%(PreprocessorDefinitions)
107 | /std:c++latest %(AdditionalOptions)
108 |
109 |
110 | Console
111 | true
112 |
113 |
114 |
115 |
116 | Level3
117 |
118 |
119 | MaxSpeed
120 | true
121 | true
122 | WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
123 | MultiThreaded
124 | /std:c++latest %(AdditionalOptions)
125 |
126 |
127 | Console
128 | true
129 | true
130 | false
131 |
132 |
133 |
134 |
135 | Level3
136 |
137 |
138 | MaxSpeed
139 | true
140 | true
141 | NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
142 | MultiThreaded
143 | /std:c++latest %(AdditionalOptions)
144 |
145 |
146 | Console
147 | true
148 | true
149 | false
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
--------------------------------------------------------------------------------
/ExtCSGO/ExtCSGO/ExtCSGO.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;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 | Source Files
20 |
21 |
22 | Source Files
23 |
24 |
25 | Source Files
26 |
27 |
28 | Source Files
29 |
30 |
31 | Source Files
32 |
33 |
34 | Source Files
35 |
36 |
37 | Source Files
38 |
39 |
40 | Source Files
41 |
42 |
43 | Source Files
44 |
45 |
46 | Source Files
47 |
48 |
49 | Source Files
50 |
51 |
52 |
53 |
54 | Header Files
55 |
56 |
57 | Header Files
58 |
59 |
60 | Header Files
61 |
62 |
63 | Header Files
64 |
65 |
66 | Header Files
67 |
68 |
69 | Header Files
70 |
71 |
72 | Header Files
73 |
74 |
75 | Header Files
76 |
77 |
78 | Header Files
79 |
80 |
81 | Header Files
82 |
83 |
84 | Header Files
85 |
86 |
87 |
--------------------------------------------------------------------------------
/ExtCSGO/ExtCSGO/Include/Engine.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Engine\Process.h"
3 | #include "Engine\Module.h"
4 |
5 | #include "sdk\Player.h"
6 | #include "sdk\IVEngineClient.h"
7 | #include "sdk\IClientEntityList.h"
8 |
9 |
10 | namespace ExtCSGO
11 | {
12 | class Engine
13 | {
14 | Process* m_Process;
15 | sdk:: IClientEntityList* m_IClientEntity;
16 | Module* m_ClientDLL;
17 | Module* m_EngineDLL;
18 | public:
19 | Engine();
20 | ~Engine();
21 |
22 | Process* GetProcess() const;
23 | Module* GetClientDLL() const;
24 | Module* GetEngineDLL() const;
25 |
26 | bool GetClient(sdk::IClientEntityList** EntityList) const;
27 | bool GetIVEngine(sdk::IVEngineClient** IVEngine) const;
28 |
29 | void Update() const;
30 | bool IsValid() const;
31 | private:
32 | bool IsHandleValid() const;
33 | bool IsModuleValid() const;
34 | };
35 | }
--------------------------------------------------------------------------------
/ExtCSGO/ExtCSGO/Include/Engine/Module.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include
3 | namespace ExtCSGO
4 | {
5 | class Module
6 | {
7 | const char* m_ModuleName;
8 | int m_ListModules;
9 | HMODULE m_BaseAddress;
10 | public:
11 | Module(const char* ModuleName, const int & LIST_MODULES);
12 | ~Module();
13 | HMODULE GetBaseAddress() const;
14 | DWORD GetdwBaseAddress() const;
15 |
16 | void Reset();
17 |
18 | bool IsValid() const;
19 | bool Init(const HANDLE & hProcess);
20 | };
21 | }
--------------------------------------------------------------------------------
/ExtCSGO/ExtCSGO/Include/Engine/Process.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include
3 | namespace ExtCSGO
4 | {
5 | enum PROCESS_FLAGS_CREATE
6 | {
7 | PROCESS_HANDLE = ( 1 << 0),
8 | PROCESS_WINDOW = ( 1 << 2 )
9 | };
10 |
11 | class Process
12 | {
13 | const char* m_ProcessPath;
14 | const char* m_ProcessName;
15 | const char* m_WindowName;
16 | const char* m_ProcessArguments;
17 | HANDLE m_Process;
18 | public:
19 | Process(
20 | const char* ProcessPath,
21 | const char* ProcessName,
22 | const char* WindowName,
23 | const char* ProcessArguments);
24 | ~Process();
25 |
26 |
27 | HANDLE GetProcess() const;
28 |
29 | bool ReadMemory(LPCVOID Adr, LPVOID Buffer, SIZE_T Size) const;
30 | bool Init();
31 | bool IsValid(const int & PROCESS_FLAGS) const;
32 | };
33 | }
--------------------------------------------------------------------------------
/ExtCSGO/ExtCSGO/Include/Features/Aimbot.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Engine.h"
3 | #include "sdk\Player.h"
4 |
5 |
6 | namespace ExtCSGO::Features
7 | {
8 | class Aimbot
9 | {
10 | int m_AimKey;
11 | double m_AimFov;
12 | DWORD m_AimSmooth;
13 | double m_Sensitivity;
14 |
15 | const Engine* m_Engine;
16 | sdk:: IClientEntityList* m_EntList;
17 | sdk:: IVEngineClient* m_IVEngine;
18 | public:
19 | Aimbot(const int &AimKey, const double & AimFov, const DWORD & AimSmooth, const double & Sensitivity, const Engine* Engine);
20 | ~Aimbot();
21 |
22 | void Run();
23 | private:
24 | bool GetTargetAngles (
25 | const vec3 & ViewAngles,
26 | vec3* BestAngles,
27 | float* AimFov) const;
28 |
29 | vec3 GetAimAngles (
30 | const int & BoneId,
31 | const sdk::Player& Local,
32 | const sdk::Player& Entity) const;
33 |
34 | void PixelMove(
35 | const vec3 & ViewAngles,
36 | const vec3 & AimAngles,
37 | const float & Sensitivity,
38 | const DWORD & Smooth) const;
39 | };
40 | }
--------------------------------------------------------------------------------
/ExtCSGO/ExtCSGO/Include/Maths/Math.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Vector.h"
3 |
4 |
5 | namespace ExtCSGO::Maths
6 | {
7 | void ClampAngles(vec3& v);
8 | void VectorNormalize(vec3& vec);
9 | void VectorAngles(vec3 & forward, vec3 & angles);
10 | void AngleVectors(const vec3 & angles, vec3 * forward);
11 |
12 | float AngleDistance(
13 | const vec3 & ViewAngles,
14 | const vec3 & TargetAngles,
15 | const vec3 & MyPos,
16 | const vec3 & TargetPos);
17 |
18 | float Distance2d(vec3 v1, vec3 v2);
19 |
20 | vec3 ConvertAngles(
21 | const float Sensitivity,
22 | const vec3 &AimAngle,
23 | const vec3 &ViewAngle);
24 |
25 | float GetFov(const vec3& viewAngle, const vec3& aimAngle);
26 |
27 |
28 | int PxAngleDistance(const vec3& PxAimAngle);
29 | }
--------------------------------------------------------------------------------
/ExtCSGO/ExtCSGO/Include/Maths/Vector.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include
3 | namespace ExtCSGO
4 | {
5 | class vec3
6 | {
7 | public:
8 | vec3();
9 | vec3(const float & x, const float & y, const float & z);
10 | vec3(const vec3 & v);
11 | ~vec3();
12 |
13 | vec3 & Add(const vec3 & v);
14 | vec3 & Subtract(const vec3 & v);
15 | vec3 & Divide(const vec3 & v);
16 | vec3 & Multiply(const vec3 & v);
17 |
18 | vec3 & operator+=(const vec3 & v);
19 | vec3 operator+(const vec3 & v) const;
20 |
21 | vec3 & operator-=(const vec3 & v);
22 | vec3 operator-(const vec3 & v) const;
23 |
24 | vec3 & operator/=(const vec3 & v);
25 | vec3 operator/(const vec3 & v) const;
26 |
27 | vec3 & operator*=(const vec3 & v);
28 | vec3 operator*(const vec3 & v) const;
29 | vec3 operator*(const float & v) const;
30 |
31 | vec3 & operator=(const float & v);
32 |
33 | bool operator==(const vec3 & v) const;
34 | bool operator==(const float & v) const;
35 | bool operator!=(const vec3 & v) const;
36 |
37 | float Dot(const vec3& v) const;
38 |
39 | float LengthSqr() const;
40 |
41 | friend std::ostream& operator <<(std::ostream& os, const vec3& dt);
42 |
43 | float x, y, z;
44 | };
45 | typedef float matrix3x4_t[3][4];
46 |
47 | void GetArrayData(const char* Array, const int & dwOffset, void* buffer);
48 |
49 | }
--------------------------------------------------------------------------------
/ExtCSGO/ExtCSGO/Include/Netvars.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #define m_Dormant 0xE9
3 | #define m_iTeamNum 0xF0
4 | #define m_iHealth 0xFC
5 | #define m_VecView 0x104
6 | #define m_VecOrigin 0x134
7 | #define m_LifeState 0x25B
8 | #define m_iShotsFired 0xA2C0
9 | #define m_aimPunchAngle 0x301C
10 | #define m_BoneMatrix 0x2698
11 | #define m_GetLocalPlayer 0x178
12 | #define m_EntityList 0x4A6DA5C
13 | #define m_ViewAngles 0x4D0C
14 | #define m_ClientState 0x5A29FC
15 | #define m_SensitivityPtr 0xA51C40
--------------------------------------------------------------------------------
/ExtCSGO/ExtCSGO/Include/Update.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Engine.h"
3 | #include "Features\Aimbot.h"
4 |
5 | namespace ExtCSGO
6 | {
7 | class Update
8 | {
9 | Engine* m_Engine;
10 |
11 | Features::
12 | Aimbot* m_Aimbot;
13 | public:
14 | Update(char* argv[]);
15 | ~Update();
16 | int Run() const;
17 | };
18 | }
--------------------------------------------------------------------------------
/ExtCSGO/ExtCSGO/Include/sdk/IClientEntityList.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 |
4 | namespace ExtCSGO
5 | {
6 | class Engine;
7 | class vec3;
8 | }
9 | namespace ExtCSGO::sdk
10 | {
11 | class Player;
12 | class IClientEntityList
13 | {
14 | const Engine *m_Engine;
15 | public:
16 | IClientEntityList(const Engine *engine);
17 | ~IClientEntityList();
18 |
19 | vec3 GetBonePosition(const int & Index, const Player& player) const;
20 | bool GetClientEntity(const int & Index, Player* Entity) const;
21 | };
22 | }
--------------------------------------------------------------------------------
/ExtCSGO/ExtCSGO/Include/sdk/IVEngineClient.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "..\Maths\Math.h"
3 | namespace ExtCSGO::sdk
4 | {
5 | class IVEngineClient
6 | {
7 | char m_IVEngine[0x10000];
8 | public:
9 | int GetLocalPlayer() const;
10 | vec3 GetViewAngles() const;
11 | };
12 | }
--------------------------------------------------------------------------------
/ExtCSGO/ExtCSGO/Include/sdk/Player.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "Maths\Vector.h"
3 |
4 | namespace ExtCSGO::sdk
5 | {
6 | class Player
7 | {
8 | char m_Player[0x10000];
9 | public:
10 | int GetHealth() const;
11 | int GetTeamNum() const;
12 | int GetLifeState() const;
13 | int GetShotsFired() const;
14 |
15 | vec3 GetOrigin() const;
16 | vec3 GetVecView() const;
17 | vec3 GetEyePosition() const;
18 | vec3 GetVecPunch() const;
19 | uint32_t GetdwBoneMatrix() const;
20 |
21 |
22 | bool IsDormant() const;
23 | bool IsValid() const;
24 |
25 | void Reset()
26 | {
27 | for (int i = 0; i < 0x10000; i++)
28 | m_Player[i] = 0;
29 | }
30 | };
31 | }
--------------------------------------------------------------------------------
/ExtCSGO/ExtCSGO/main.cpp:
--------------------------------------------------------------------------------
1 | #include
2 |
3 | int main(int argc, char* argv[])
4 | {
5 | if (argc < 5)
6 | return 0;
7 | return ExtCSGO::Update(argv).Run();
8 | }
--------------------------------------------------------------------------------
/ExtCSGO/ExtCSGO/src/Engine.cpp:
--------------------------------------------------------------------------------
1 | #include "Engine.h"
2 | #include "NetVars.h"
3 |
4 | #define LIST_MODULES_32BIT 0x1
5 | #define LIST_MODULES_64BIT 0x2
6 | #define LIST_MODULES_ALL 0x3
7 |
8 | namespace ExtCSGO
9 | {
10 | using namespace sdk;
11 | Engine::Engine() :
12 | m_Process(new Process (
13 | "C:/Program Files (x86)/Steam/steamapps/common/Counter-Strike Global Offensive/",
14 | "csgo.exe",
15 | "Counter-Strike: Global Offensive",
16 | "-steam -freq 144 -novid") ),
17 | m_ClientDLL(new Module("client.dll", LIST_MODULES_32BIT)),
18 | m_EngineDLL(new Module("engine.dll", LIST_MODULES_32BIT)),
19 | m_IClientEntity(new IClientEntityList(this))
20 | {
21 | }
22 |
23 | Engine::~Engine()
24 | {
25 | delete m_EngineDLL;
26 | delete m_ClientDLL;
27 | delete m_Process;
28 | }
29 |
30 | Process * Engine::GetProcess() const
31 | {
32 | return m_Process;
33 | }
34 |
35 | Module * Engine::GetClientDLL() const
36 | {
37 | return m_ClientDLL;
38 | }
39 |
40 | Module * Engine::GetEngineDLL() const
41 | {
42 | return m_EngineDLL;
43 | }
44 |
45 | bool Engine::GetClient(IClientEntityList **EntityList) const
46 | {
47 | *EntityList = m_IClientEntity;
48 | return (m_IClientEntity > nullptr);
49 | }
50 |
51 | bool Engine::GetIVEngine(IVEngineClient **IVEngine) const
52 | {
53 | static DWORD Ptr = 0;
54 | if (!m_Process->ReadMemory
55 | (
56 | (PVOID)((DWORD64)m_EngineDLL->GetdwBaseAddress() + m_ClientState),
57 | &Ptr, sizeof(vec3)
58 | ))
59 | {
60 | return false;
61 | }
62 |
63 | static IVEngineClient Engine;
64 | if (!m_Process->ReadMemory
65 | (
66 | (PVOID)(DWORD64)(Ptr),
67 | &Engine, sizeof(IVEngineClient)
68 | ))
69 | {
70 | return false;
71 | }
72 |
73 | *IVEngine = &Engine;
74 |
75 |
76 | return (*IVEngine > nullptr);
77 | }
78 |
79 | void Engine::Update() const
80 | {
81 | if (!IsHandleValid())
82 | {
83 | GetClientDLL()->Reset();
84 | GetEngineDLL()->Reset();
85 |
86 | GetProcess()->Init();
87 | }
88 | else
89 | {
90 | GetClientDLL()->Init(GetProcess()->GetProcess());
91 | GetEngineDLL()->Init(GetProcess()->GetProcess());
92 |
93 | if (IsValid())
94 | {
95 | std::cout << "Process Found! Handle:" << m_Process->GetProcess() << std::endl;
96 | }
97 | }
98 | }
99 |
100 | bool Engine::IsValid() const
101 | {
102 | return (IsHandleValid() && IsModuleValid());
103 | }
104 |
105 | bool Engine::IsHandleValid() const
106 | {
107 | return GetProcess()->IsValid(PROCESS_HANDLE);
108 | }
109 |
110 | bool Engine::IsModuleValid() const
111 | {
112 | return GetClientDLL()->IsValid() &&
113 | GetEngineDLL()->IsValid();
114 | }
115 | }
--------------------------------------------------------------------------------
/ExtCSGO/ExtCSGO/src/Engine/Module.cpp:
--------------------------------------------------------------------------------
1 | #include "Engine\Module.h"
2 | #include
3 | #include
4 | namespace ExtCSGO
5 | {
6 | bool ExGetModuleHandle(
7 | const HANDLE & hProcess,
8 | const char* ModuleName,
9 | int LIST_MODULES,
10 | HMODULE* hModule);
11 |
12 |
13 | Module::Module(const char* ModuleName, const int & LIST_MODULES) :
14 | m_ModuleName(ModuleName),
15 | m_ListModules(LIST_MODULES)
16 | {
17 | m_BaseAddress = nullptr;
18 | }
19 |
20 | Module::~Module()
21 | {
22 | }
23 |
24 | HMODULE Module::GetBaseAddress() const
25 | {
26 | return m_BaseAddress;
27 | }
28 |
29 | DWORD Module::GetdwBaseAddress() const
30 | {
31 | return (DWORD)(DWORD64)m_BaseAddress;
32 | }
33 |
34 | void Module::Reset()
35 | {
36 | m_BaseAddress = nullptr;
37 | }
38 |
39 | bool Module::IsValid() const
40 | {
41 | return (m_BaseAddress > nullptr);
42 | }
43 |
44 | bool Module::Init(const HANDLE & hProcess)
45 | {
46 | return ExGetModuleHandle(hProcess, m_ModuleName, m_ListModules, &m_BaseAddress);
47 | }
48 |
49 | bool ExGetModuleHandle(
50 | const HANDLE & hProcess,
51 | const char* ModuleName,
52 | int LIST_MODULES,
53 | HMODULE* hModule)
54 | {
55 | DWORD ModuleCount = 0;
56 | HMODULE Modules[1024] = { 0 };
57 | CHAR Name[MAX_PATH] = { 0 };
58 |
59 | if (!K32EnumProcessModulesEx(hProcess, Modules, 1024, &ModuleCount, LIST_MODULES))
60 | return false;
61 |
62 | for (DWORD i = 0; i < ModuleCount; i++)
63 | {
64 | if (!K32GetModuleBaseNameA(hProcess, Modules[i], Name, MAX_PATH))
65 | continue;
66 |
67 | if (!_stricmp(Name, ModuleName))
68 | {
69 | *hModule = Modules[i];
70 | break;
71 | }
72 |
73 | }
74 |
75 | if (*hModule == nullptr)
76 | {
77 | return false;
78 | }
79 |
80 | return true;
81 | }
82 |
83 |
84 | }
--------------------------------------------------------------------------------
/ExtCSGO/ExtCSGO/src/Engine/Process.cpp:
--------------------------------------------------------------------------------
1 | #include "Engine\Process.h"
2 | #include
3 |
4 | namespace ExtCSGO
5 | {
6 | bool HandleIsValid(const HANDLE & ProcessHandle);
7 |
8 | bool WindowExists(const char * WindowName);
9 |
10 | void CloseProcess(const char * ProcessName, const HANDLE & hProcess);
11 |
12 | bool NewProcess(
13 | const char* ProcessPath,
14 | const char* ProcessName,
15 | const char* Arguments,
16 | PHANDLE ProcessHandle);
17 |
18 | Process::Process(
19 | const char* ProcessPath,
20 | const char* ProcessName,
21 | const char* WindowName,
22 | const char* ProcessArguments) :
23 | m_ProcessPath(ProcessPath), m_ProcessName(ProcessName),
24 | m_WindowName(WindowName), m_ProcessArguments(ProcessArguments)
25 | {
26 | m_Process = nullptr;
27 | }
28 |
29 | Process::~Process()
30 | {
31 | }
32 |
33 | HANDLE Process::GetProcess() const
34 | {
35 | return m_Process;
36 | }
37 |
38 | bool Process::ReadMemory(LPCVOID Adr, LPVOID Buffer, SIZE_T Size) const
39 | {
40 | return (ReadProcessMemory(m_Process, Adr, Buffer, Size, 0) > FALSE);
41 | }
42 |
43 | bool Process::Init()
44 | {
45 | if (IsValid(PROCESS_WINDOW))
46 | {
47 | #ifdef _DEBUG
48 | #else
49 | CloseProcess(m_ProcessName, m_Process);
50 | m_Process = nullptr;
51 | Sleep(5000);
52 | #endif
53 | }
54 | else
55 | {
56 | m_Process = nullptr;
57 | }
58 | return NewProcess(m_ProcessPath, m_ProcessName, m_ProcessArguments, &m_Process);
59 | }
60 |
61 | bool Process::IsValid(const int & PROCESS_FLAGS) const
62 | {
63 | bool status = false;
64 | switch (PROCESS_FLAGS)
65 | {
66 | case PROCESS_WINDOW:
67 | {
68 | status = WindowExists(m_WindowName);
69 | break;
70 | }
71 |
72 | case PROCESS_HANDLE:
73 | {
74 | status = HandleIsValid(m_Process);
75 | break;
76 | }
77 | }
78 | return status;
79 | }
80 |
81 | bool HandleIsValid(const HANDLE & ProcessHandle)
82 | {
83 | if (ProcessHandle == nullptr)
84 | return false;
85 |
86 | DWORD ExitCode;
87 | GetExitCodeProcess(ProcessHandle, &ExitCode);
88 | return (ExitCode == STILL_ACTIVE);
89 | }
90 |
91 | bool WindowExists(const char * WindowName)
92 | {
93 | return (FindWindowA(0, WindowName) > nullptr);
94 | }
95 |
96 | void CloseProcess(const char * ProcessName, const HANDLE & hProcess)
97 | {
98 | std::string CmdString =
99 | (
100 | "Taskkill /IM" + std::string(" ") +
101 | ProcessName + std::string(" ") + "/F"
102 | );
103 |
104 | system(CmdString.c_str());
105 | if (hProcess > nullptr)
106 | {
107 | CloseHandle(hProcess);
108 | }
109 | }
110 |
111 | bool NewProcess(
112 | const char* ProcessPath,
113 | const char * ProcessName,
114 | const char* Arguments,
115 | PHANDLE ProcessHandle)
116 | {
117 | #ifdef _DEBUG
118 | DWORD pid = 0;
119 | GetWindowThreadProcessId(FindWindowA("Valve001", nullptr), &pid);
120 | if (pid == 0)
121 | {
122 | return false;
123 | }
124 |
125 | *ProcessHandle = OpenProcess(PROCESS_ALL_ACCESS, false, pid);
126 |
127 | if (*ProcessHandle == nullptr)
128 | {
129 | return false;
130 | }
131 | #else
132 | PROCESS_INFORMATION pi = { 0 };
133 | STARTUPINFOA si = { 0 };
134 | si.cb = sizeof(STARTUPINFO);
135 | si.dwFlags = STARTF_USESHOWWINDOW;
136 | si.wShowWindow = SW_HIDE;
137 |
138 |
139 | std::string FullPath = std::string
140 | (
141 | ProcessPath + std::string("") +
142 | ProcessName + std::string(" ") +
143 | Arguments
144 | );
145 |
146 | if (!CreateProcessA(
147 | nullptr,
148 | (LPSTR)FullPath.c_str(),
149 | nullptr,
150 | nullptr,
151 | FALSE,
152 | FALSE,
153 | nullptr,
154 | nullptr,
155 | &si,
156 | &pi))
157 | {
158 | return false;
159 | }
160 |
161 | CloseHandle(pi.hThread);
162 |
163 | *ProcessHandle = pi.hProcess;
164 | #endif
165 | return true;
166 | }
167 | }
168 |
169 |
170 |
--------------------------------------------------------------------------------
/ExtCSGO/ExtCSGO/src/Features/Aimbot.cpp:
--------------------------------------------------------------------------------
1 | #include "Features\Aimbot.h"
2 | #include "Maths\Math.h"
3 |
4 | namespace ExtCSGO::Features
5 | {
6 | using namespace sdk;
7 | using namespace Maths;
8 |
9 | Aimbot::Aimbot(const int &AimKey, const double & AimFov, const DWORD & AimSmooth, const double & Sensitivity, const Engine* Engine) :
10 | m_AimKey(AimKey),
11 | m_AimFov(AimFov),
12 | m_AimSmooth(AimSmooth),
13 | m_Sensitivity(Sensitivity),
14 | m_Engine(Engine)
15 | {
16 | }
17 |
18 | Aimbot::~Aimbot()
19 | {
20 | }
21 |
22 | void Aimbot::Run()
23 | {
24 | if (GetAsyncKeyState(m_AimKey))
25 | {
26 | if (!m_Engine->GetIVEngine(&m_IVEngine))
27 | return;
28 |
29 | if (!m_Engine->GetClient(&m_EntList))
30 | return;
31 |
32 | vec3 AimAngles; float Fov;
33 | if (!GetTargetAngles(m_IVEngine->GetViewAngles(), &AimAngles, &Fov))
34 | return;
35 |
36 | if (Fov < (float)m_AimFov)
37 | {
38 | PixelMove(m_IVEngine->GetViewAngles(), AimAngles, (float)m_Sensitivity, m_AimSmooth);
39 | }
40 |
41 | }
42 | }
43 |
44 | bool Aimbot::GetTargetAngles (
45 | const vec3 & ViewAngles,
46 | vec3* BestAngles,
47 | float* AimFov) const
48 | {
49 | static float BestFov = 180.f;
50 | static Player LocalPlayer, Enemy;
51 | int BestIndex = -1;
52 |
53 | m_EntList->GetClientEntity(m_IVEngine->GetLocalPlayer(), &LocalPlayer);
54 | if (!LocalPlayer.IsValid())
55 | {
56 | return false;
57 | }
58 |
59 | for (auto i = 1; i < 32; i++)
60 | {
61 | if (!m_EntList->GetClientEntity(i, &Enemy))
62 | continue;
63 |
64 | if (!Enemy.IsValid())
65 | continue;
66 |
67 | if (Enemy.GetTeamNum() == LocalPlayer.GetTeamNum())
68 | continue;
69 |
70 | auto AimAngles = GetAimAngles(8, LocalPlayer, Enemy);
71 |
72 |
73 | auto Fov = GetFov(ViewAngles, AimAngles);
74 |
75 | if (Fov < BestFov)
76 | {
77 | BestFov = Fov;
78 |
79 | BestIndex = i;
80 | *BestAngles = AimAngles;
81 | }
82 | }
83 | if (BestIndex == -1)
84 | {
85 | BestFov = 180.f;
86 | *BestAngles = 0.f;
87 | return false;
88 | }
89 | *AimFov = BestFov;
90 |
91 |
92 | return (BestFov < 180.f);
93 | }
94 |
95 | vec3 Aimbot::GetAimAngles(
96 | const int & BoneId,
97 | const Player& Local,
98 | const Player& Entity) const
99 | {
100 | vec3 AimAngles, BoneCoords;
101 | BoneCoords = m_EntList->GetBonePosition(BoneId, Entity);
102 | BoneCoords -= Local.GetEyePosition();
103 |
104 | VectorNormalize(BoneCoords);
105 | VectorAngles(BoneCoords, AimAngles);
106 |
107 | if (Local.GetShotsFired() > 1)
108 | {
109 | AimAngles -= Local.GetVecPunch() * 2.0f;
110 | }
111 | ClampAngles(AimAngles);
112 | return AimAngles;
113 | }
114 |
115 | void Aimbot::PixelMove(
116 | const vec3 & ViewAngles,
117 | const vec3 & AimAngles,
118 | const float & Sensitivity,
119 | const DWORD & Smooth) const
120 | {
121 | vec3 PixelAngles = ConvertAngles(Sensitivity, AimAngles, ViewAngles);
122 | if (Smooth > 0)
123 | {
124 | vec3 Smoothed;
125 | if (Smoothed.x != PixelAngles.x && std::abs(PixelAngles.x) > std::abs(PixelAngles.y))
126 | {
127 | Smoothed.x = Smoothed.x < PixelAngles.x ? Smoothed.x += 2 : (Smoothed.x > PixelAngles.x ? Smoothed.x -= 2 : Smoothed.x = PixelAngles.x);
128 | }
129 | else if (Smoothed.y != PixelAngles.y)
130 | {
131 | Smoothed.y = Smoothed.y < PixelAngles.y ? Smoothed.y += 2 : (Smoothed.y > PixelAngles.y ? Smoothed.y -= 2 : Smoothed.y = PixelAngles.y);
132 | }
133 | static auto TickCount = GetTickCount();
134 | if (GetTickCount() - TickCount >= Smooth - 1)
135 | {
136 | TickCount = GetTickCount();
137 | mouse_event(MOUSEEVENTF_MOVE, (int)Smoothed.x, (int)Smoothed.y, 0, 0);
138 | }
139 |
140 | }
141 | else
142 | {
143 | static auto TickCount = GetTickCount();
144 | if (GetTickCount() - TickCount > 0)
145 | {
146 | TickCount = GetTickCount();
147 | mouse_event(MOUSEEVENTF_MOVE, (int)PixelAngles.x, (int)PixelAngles.y, 0, 0);
148 | }
149 | }
150 | }
151 | }
152 |
--------------------------------------------------------------------------------
/ExtCSGO/ExtCSGO/src/Maths/Math.cpp:
--------------------------------------------------------------------------------
1 | #include "Maths\Math.h"
2 |
3 |
4 | #include
5 | namespace ExtCSGO::Maths
6 | {
7 | #define DEG2RAD( x ) ( (float)(x) * (float)(3.14159265358979323846f / 180.f) )
8 | #define RAD2DEG( x ) ( (float)(x) * (float)(180.f / 3.14159265358979323846f) )
9 |
10 | void SinCos(float radians, float * sine, float * cosine)
11 | {
12 | *sine = (float)sin(radians);
13 | *cosine = (float)cos(radians);
14 | }
15 |
16 | void ClampAngles(vec3& v)
17 | {
18 | if (v.x > 89.0f && v.x <= 180.0f)
19 | v.x = 89.0f;
20 |
21 | if (v.x > 180.0f)
22 | v.x = v.x - 360.0f;
23 |
24 | if (v.x < -89.0f)
25 | v.x = -89.0f;
26 |
27 | v.y = fmodf(v.y + 180, 360) - 180;
28 |
29 | v.z = 0;
30 | }
31 |
32 | void VectorNormalize(vec3& vec)
33 | {
34 | float iradius = 1.f / (sqrtf(vec.x*vec.x + vec.y*vec.y + vec.z*vec.z) + 1.192092896e-07f);
35 | vec.x *= iradius;
36 | vec.y *= iradius;
37 | vec.z *= iradius;
38 | }
39 |
40 | void VectorAngles(vec3 & forward, vec3 & angles)
41 | {
42 | float tmp, yaw, pitch;
43 |
44 |
45 | if (forward.y == 0.f && forward.x == 0.f)
46 | {
47 | yaw = 0;
48 | if (forward.z > 0)pitch = 270;
49 | else pitch = 90.f;
50 | }
51 | else
52 | {
53 | yaw = (float)(atan2(forward.y, forward.x) * 180.f / 3.14159265358979323846f);
54 | if (yaw < 0)yaw += 360.f;
55 |
56 | tmp = (float)sqrt(forward.x * forward.x + forward.y * forward.y);
57 | pitch = (float)(atan2(-forward.z, tmp) * 180.f / 3.14159265358979323846f);
58 | if (pitch < 0)pitch += 360.f;
59 | }
60 | angles.x = pitch;
61 | angles.y = yaw;
62 | angles.z = 0.f;
63 | }
64 |
65 | void AngleVectors(const vec3 & angles, vec3 * forward)
66 | {
67 | float sp, sy, cp, cy;
68 |
69 | SinCos(DEG2RAD(angles.x), &sp, &cp);
70 | SinCos(DEG2RAD(angles.y), &sy, &cy);
71 |
72 |
73 | forward->x = cp * cy;
74 | forward->y = cp * sy;
75 | forward->z = -sp;
76 | }
77 |
78 | float Distance2d(vec3 v1, vec3 v2)
79 | {
80 | return (float)sqrt(pow(v1.x - v2.x, 2.0f) + pow(v1.y - v2.y, 2) + pow(v1.z - v2.z, 2.0f));
81 | }
82 |
83 | float AngleDistance(
84 | const vec3 & ViewAngles,
85 | const vec3 & TargetAngles,
86 | const vec3 & MyPos,
87 | const vec3 & TargetPos)
88 | {
89 | float VecDist = Distance2d(MyPos, TargetPos);
90 | float pitch = (float)sin(DEG2RAD(ViewAngles.x - TargetAngles.x)) * VecDist;
91 | float yaw = (float)sin(DEG2RAD(ViewAngles.y - TargetAngles.y)) * VecDist;
92 | return (float)sqrt(powf(pitch, 2.0) + powf(yaw, 2.0));
93 | }
94 |
95 | vec3 ConvertAngles(
96 | const float Sensitivity,
97 | const vec3 &AimAngle,
98 | const vec3 &ViewAngle)
99 | {
100 | vec3 AnglePixels = (ViewAngle - AimAngle);
101 | ClampAngles(AnglePixels);
102 |
103 | AnglePixels.x = ((AnglePixels.x / Sensitivity) / -0.022f);
104 | AnglePixels.y = ((AnglePixels.y / Sensitivity) / 0.022f);
105 |
106 | return vec3(AnglePixels.y, AnglePixels.x, 0.f);
107 | }
108 |
109 | int PxAngleDistance(const vec3& PxAimAngle)
110 | {
111 | return (int)sqrt(pow(abs(PxAimAngle.x), 2.0) + pow(abs(PxAimAngle.y), 2.0));
112 | }
113 |
114 | float GetFov(const vec3& viewAngle, const vec3& aimAngle)
115 | {
116 | vec3 ang, aim;
117 |
118 | AngleVectors(viewAngle, &aim);
119 | AngleVectors(aimAngle, &ang);
120 |
121 | return RAD2DEG(acos(aim.Dot(ang) / aim.LengthSqr()));
122 | }
123 | }
--------------------------------------------------------------------------------
/ExtCSGO/ExtCSGO/src/Maths/Vector.cpp:
--------------------------------------------------------------------------------
1 | #include "Maths\Vector.h"
2 |
3 | namespace ExtCSGO
4 | {
5 | vec3::vec3() :
6 | x(0.0f), y(0.0f), z(0.0f)
7 | {
8 | }
9 |
10 | vec3::vec3(const float & x, const float & y, const float & z) :
11 | x(x),
12 | y(y),
13 | z(z)
14 | {
15 | }
16 |
17 | vec3::vec3(const vec3 & v) :
18 | x(v.x),
19 | y(v.y),
20 | z(v.z)
21 | {
22 | }
23 |
24 | vec3::~vec3()
25 | {
26 | }
27 |
28 | vec3 & vec3::Add(const vec3 & v)
29 | {
30 | x += v.x;
31 | y += v.y;
32 | z += v.z;
33 | return *this;
34 | }
35 |
36 | vec3 & vec3::Subtract(const vec3 & v)
37 | {
38 | x -= v.x;
39 | y -= v.y;
40 | z -= v.z;
41 | return *this;
42 | }
43 |
44 | vec3 & vec3::Divide(const vec3 & v)
45 | {
46 | x /= v.x;
47 | y /= v.y;
48 | z /= v.z;
49 | return *this;
50 | }
51 |
52 | vec3 & vec3::Multiply(const vec3 & v)
53 | {
54 | x *= v.x;
55 | y *= v.y;
56 | z *= v.z;
57 | return *this;
58 | }
59 |
60 | vec3 & vec3::operator+=(const vec3 & v)
61 | {
62 | return Add(v);
63 | }
64 |
65 | vec3 vec3::operator+(const vec3 & v) const
66 | {
67 | return vec3(x + v.x, y + v.y, z + v.z);
68 | }
69 |
70 | vec3 & vec3::operator-=(const vec3 & v)
71 | {
72 | return Subtract(v);
73 | }
74 |
75 | vec3 vec3::operator-(const vec3 & v) const
76 | {
77 | return vec3(x - v.x, y - v.y, z - v.z);
78 | }
79 |
80 | vec3 & vec3::operator/=(const vec3 & v)
81 | {
82 | return Divide(v);
83 | }
84 |
85 | vec3 vec3::operator/(const vec3 & v) const
86 | {
87 | return vec3(x / v.x, y / v.y, z / v.z);
88 | }
89 |
90 | vec3 & vec3::operator*=(const vec3 & v)
91 | {
92 | return Multiply(v);
93 | }
94 |
95 | vec3 vec3::operator*(const vec3 & v) const
96 | {
97 | return vec3(x * v.x, y * v.y, z * v.z);
98 | }
99 |
100 | vec3 vec3::operator*(const float & v) const
101 | {
102 | return vec3(x * v, y * v, z * v);
103 | }
104 |
105 | vec3 & vec3::operator=(const float & v)
106 | {
107 | x = v;
108 | y = v;
109 | z = v;
110 | return *this;
111 | }
112 |
113 | bool vec3::operator==(const vec3 & v) const
114 | {
115 | return (
116 | x == v.x &&
117 | y == v.y &&
118 | z == v.z );
119 | }
120 |
121 | bool vec3::operator==(const float & v) const
122 | {
123 | return (
124 | x == v &&
125 | y == v &&
126 | z == v);
127 | }
128 |
129 | bool vec3::operator!=(const vec3 & v) const
130 | {
131 | return (
132 | x != v.x ||
133 | y != v.y ||
134 | z != v.z );
135 | }
136 |
137 | float vec3::Dot(const vec3 & v) const
138 | {
139 | return (x * v.x + y * v.y + z * v.z);
140 | }
141 |
142 | float vec3::LengthSqr() const
143 | {
144 | return (x * x + y * y + z * z);
145 | }
146 |
147 | std::ostream & operator<<(std::ostream & os, const vec3 & dt)
148 | {
149 | return os << "vec3(" << dt.x << ", " << dt.y << ", " << dt.z << ")";
150 | }
151 |
152 | void GetArrayData(const char* Array, const int & dwOffset, void* buffer)
153 | {
154 | *(void**)buffer = (void*)*(void**)(Array + dwOffset);
155 | }
156 | }
--------------------------------------------------------------------------------
/ExtCSGO/ExtCSGO/src/Update.cpp:
--------------------------------------------------------------------------------
1 | #include "Update.h"
2 |
3 | #include
4 | namespace ExtCSGO
5 | {
6 | using namespace Features;
7 | Update::Update(char* argv[]):
8 | m_Engine(new Engine()),
9 | m_Aimbot(new Aimbot(std::atoi(argv[1]), std::atof(argv[2]), std::atoi(argv[3]), std::atof(argv[4]), m_Engine))
10 | {
11 | }
12 |
13 | Update::~Update()
14 | {
15 | delete m_Aimbot;
16 | delete m_Engine;
17 | }
18 |
19 | int Update::Run() const
20 | {
21 | bool Running = false;
22 | while (true)
23 | {
24 | if (Running == true)
25 | {
26 | if (m_Engine->IsValid())
27 | {
28 | m_Aimbot->Run();
29 | }
30 | else
31 | {
32 | #ifdef _DEBUG
33 | #else
34 | Sleep(5000);
35 | #endif
36 | m_Engine->Update();
37 | }
38 | }
39 | if (GetAsyncKeyState(VK_INSERT) & 1)
40 | {
41 | Running = !Running;
42 | }
43 | Sleep(1);
44 | }
45 | return 0;
46 | }
47 | }
--------------------------------------------------------------------------------
/ExtCSGO/ExtCSGO/src/sdk/IClientEntityList.cpp:
--------------------------------------------------------------------------------
1 | #include "sdk\IClientEntityList.h"
2 | #include "Netvars.h"
3 | #include "Engine.h"
4 |
5 | namespace ExtCSGO::sdk
6 | {
7 |
8 | IClientEntityList::IClientEntityList(const Engine *engine):
9 | m_Engine(engine)
10 | {
11 |
12 | }
13 |
14 | IClientEntityList::~IClientEntityList()
15 | {
16 | }
17 |
18 | vec3 IClientEntityList::GetBonePosition(const int & Index, const Player & player) const
19 | {
20 | static matrix3x4_t Matrix;
21 | if (!m_Engine->GetProcess()->ReadMemory
22 | (
23 | (PVOID)((DWORD64)player.GetdwBoneMatrix() + Index * 0x30),
24 | &Matrix, sizeof(matrix3x4_t)
25 | ))
26 | {
27 | return vec3(0.f, 0.f, 0.f);
28 | }
29 | return vec3(Matrix[0][3], Matrix[1][3], Matrix[2][3]);
30 | }
31 |
32 | bool IClientEntityList::GetClientEntity(const int & Index, Player* Entity) const
33 | {
34 | static DWORD Ptr = 0;
35 | if (!m_Engine->GetProcess()->ReadMemory
36 | (
37 | (PVOID)((DWORD64)m_Engine->GetClientDLL()->GetdwBaseAddress() + m_EntityList + Index * 0x10),
38 | &Ptr, sizeof(DWORD)
39 | ))
40 | {
41 | return false;
42 | }
43 |
44 | Player Ent;
45 | if (!m_Engine->GetProcess()->ReadMemory
46 | (
47 | (PVOID)((DWORD64)Ptr),
48 | &Ent, sizeof(Player)
49 | ))
50 | {
51 | return false;
52 | }
53 | *Entity = Ent;
54 |
55 | return (Entity > nullptr);
56 | }
57 |
58 | }
--------------------------------------------------------------------------------
/ExtCSGO/ExtCSGO/src/sdk/IVEngineClient.cpp:
--------------------------------------------------------------------------------
1 | #include "sdk\IVEngineClient.h"
2 | #include "Netvars.h"
3 | namespace ExtCSGO::sdk
4 | {
5 | int IVEngineClient::GetLocalPlayer() const
6 | {
7 | static int Angles;
8 | GetArrayData(m_IVEngine, m_GetLocalPlayer, &Angles);
9 | return Angles;
10 | }
11 |
12 | vec3 IVEngineClient::GetViewAngles() const
13 | {
14 | static vec3 Angles;
15 | GetArrayData(m_IVEngine, m_ViewAngles, &Angles);
16 | return Angles;
17 | }
18 | }
--------------------------------------------------------------------------------
/ExtCSGO/ExtCSGO/src/sdk/Player.cpp:
--------------------------------------------------------------------------------
1 | #include "sdk\Player.h"
2 | #include "Netvars.h"
3 | namespace ExtCSGO::sdk
4 | {
5 | int Player::GetHealth() const
6 | {
7 | static int result = -1;
8 | GetArrayData(m_Player, m_iHealth, &result);
9 | return result;
10 | }
11 |
12 | int Player::GetTeamNum() const
13 | {
14 | static int result = -1;
15 | GetArrayData(m_Player, m_iTeamNum, &result);
16 | return result;
17 | }
18 |
19 | int Player::GetLifeState() const
20 | {
21 | static int result = -1;
22 | GetArrayData(m_Player, m_LifeState, &result);
23 | return result;
24 | }
25 |
26 | int Player::GetShotsFired() const
27 | {
28 | static int result = -1;
29 | GetArrayData(m_Player, m_iShotsFired, &result);
30 | return result;
31 | }
32 |
33 | vec3 Player::GetOrigin() const
34 | {
35 | static vec3 result;
36 | GetArrayData(m_Player, m_VecOrigin, &result);
37 | return result;
38 | }
39 |
40 | vec3 Player::GetVecView() const
41 | {
42 | static vec3 result;
43 | GetArrayData(m_Player, m_VecView + 0x4, &result);
44 | return vec3(0.f, 0.f, result.y);
45 | }
46 |
47 | vec3 Player::GetEyePosition() const
48 | {
49 | return vec3(GetOrigin() + GetVecView());
50 | }
51 |
52 | vec3 Player::GetVecPunch() const
53 | {
54 | static vec3 result;
55 | GetArrayData(m_Player, m_aimPunchAngle, &result);
56 | return result;
57 | }
58 |
59 | uint32_t Player::GetdwBoneMatrix() const
60 | {
61 | static uint32_t result = 0;
62 | GetArrayData(m_Player, m_BoneMatrix, &result);
63 | return result;
64 | }
65 |
66 | bool Player::IsDormant() const
67 | {
68 | static bool result = false;
69 | GetArrayData(m_Player, m_Dormant, &result);
70 | return result;
71 | }
72 |
73 | bool Player::IsValid() const
74 | {
75 | if (this->GetHealth() < 1 && this->GetHealth() > 1337)
76 | return false;
77 |
78 | if (this->IsDormant())
79 | return false;
80 |
81 | if (this->GetLifeState() != 0)
82 | return false;
83 |
84 | return true;
85 | }
86 |
87 |
88 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # ExtCSGO
2 | Example EAC ring3 bypass Project
3 | Aimbot with Fov/Smooth/AimKey
4 |
5 | # Q
6 | Why Its bypassing?
7 |
8 | Because its using CreateProcessA to get processhandle instead of OpenProcess.
9 | # Usage
10 |
11 | 1: Compile x64 Release
12 |
13 | 2: Make ExtCSGO.exe Shortcut
14 |
15 | 3: Edit Shortcut to ExtCSGO.exe "1" "180" "0" "2.0"
16 |
17 | those Shortcut Arguments Are:
18 |
19 | AimKey, AimFov, AimSmooth & CSGO Sensitivity
20 |
21 | 4: Start Shortcut & Press Insert to start Aimbotting.
22 |
23 |
24 |
--------------------------------------------------------------------------------