├── CSGO KERNEL HACK.sln
├── CSGO KERNEL HACK
├── CSGO KERNEL HACK.vcxproj
├── CSGO KERNEL HACK.vcxproj.filters
├── CSGOKERNELHACK.inf
├── Headers.h
├── Main.cpp
├── cheat.h
├── imports.h
├── mem.h
└── sdk.cpp
└── README.md
/CSGO KERNEL HACK.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 16
4 | VisualStudioVersion = 16.0.32407.337
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CSGO KERNEL HACK", "CSGO KERNEL HACK\CSGO KERNEL HACK.vcxproj", "{97877169-E347-4BE8-ABB0-3C1781DF6ACF}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|ARM = Debug|ARM
11 | Debug|ARM64 = Debug|ARM64
12 | Debug|x64 = Debug|x64
13 | Debug|x86 = Debug|x86
14 | Release|ARM = Release|ARM
15 | Release|ARM64 = Release|ARM64
16 | Release|x64 = Release|x64
17 | Release|x86 = Release|x86
18 | EndGlobalSection
19 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
20 | {97877169-E347-4BE8-ABB0-3C1781DF6ACF}.Debug|ARM.ActiveCfg = Debug|ARM
21 | {97877169-E347-4BE8-ABB0-3C1781DF6ACF}.Debug|ARM.Build.0 = Debug|ARM
22 | {97877169-E347-4BE8-ABB0-3C1781DF6ACF}.Debug|ARM.Deploy.0 = Debug|ARM
23 | {97877169-E347-4BE8-ABB0-3C1781DF6ACF}.Debug|ARM64.ActiveCfg = Debug|ARM64
24 | {97877169-E347-4BE8-ABB0-3C1781DF6ACF}.Debug|ARM64.Build.0 = Debug|ARM64
25 | {97877169-E347-4BE8-ABB0-3C1781DF6ACF}.Debug|ARM64.Deploy.0 = Debug|ARM64
26 | {97877169-E347-4BE8-ABB0-3C1781DF6ACF}.Debug|x64.ActiveCfg = Debug|x64
27 | {97877169-E347-4BE8-ABB0-3C1781DF6ACF}.Debug|x64.Build.0 = Debug|x64
28 | {97877169-E347-4BE8-ABB0-3C1781DF6ACF}.Debug|x64.Deploy.0 = Debug|x64
29 | {97877169-E347-4BE8-ABB0-3C1781DF6ACF}.Debug|x86.ActiveCfg = Debug|Win32
30 | {97877169-E347-4BE8-ABB0-3C1781DF6ACF}.Debug|x86.Build.0 = Debug|Win32
31 | {97877169-E347-4BE8-ABB0-3C1781DF6ACF}.Debug|x86.Deploy.0 = Debug|Win32
32 | {97877169-E347-4BE8-ABB0-3C1781DF6ACF}.Release|ARM.ActiveCfg = Release|ARM
33 | {97877169-E347-4BE8-ABB0-3C1781DF6ACF}.Release|ARM.Build.0 = Release|ARM
34 | {97877169-E347-4BE8-ABB0-3C1781DF6ACF}.Release|ARM.Deploy.0 = Release|ARM
35 | {97877169-E347-4BE8-ABB0-3C1781DF6ACF}.Release|ARM64.ActiveCfg = Release|ARM64
36 | {97877169-E347-4BE8-ABB0-3C1781DF6ACF}.Release|ARM64.Build.0 = Release|ARM64
37 | {97877169-E347-4BE8-ABB0-3C1781DF6ACF}.Release|ARM64.Deploy.0 = Release|ARM64
38 | {97877169-E347-4BE8-ABB0-3C1781DF6ACF}.Release|x64.ActiveCfg = Release|x64
39 | {97877169-E347-4BE8-ABB0-3C1781DF6ACF}.Release|x64.Build.0 = Release|x64
40 | {97877169-E347-4BE8-ABB0-3C1781DF6ACF}.Release|x64.Deploy.0 = Release|x64
41 | {97877169-E347-4BE8-ABB0-3C1781DF6ACF}.Release|x86.ActiveCfg = Release|Win32
42 | {97877169-E347-4BE8-ABB0-3C1781DF6ACF}.Release|x86.Build.0 = Release|Win32
43 | {97877169-E347-4BE8-ABB0-3C1781DF6ACF}.Release|x86.Deploy.0 = Release|Win32
44 | EndGlobalSection
45 | GlobalSection(SolutionProperties) = preSolution
46 | HideSolutionNode = FALSE
47 | EndGlobalSection
48 | GlobalSection(ExtensibilityGlobals) = postSolution
49 | SolutionGuid = {2F5706AF-AD87-4ED7-8CB3-4730BCB7E3BE}
50 | EndGlobalSection
51 | EndGlobal
52 |
--------------------------------------------------------------------------------
/CSGO KERNEL HACK/CSGO KERNEL HACK.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 | {97877169-E347-4BE8-ABB0-3C1781DF6ACF}
39 | {1bc93793-694f-48fe-9372-81e2b05556fd}
40 | v4.5
41 | 12.0
42 | Debug
43 | Win32
44 | CSGO_KERNEL_HACK
45 | $(LatestTargetPlatformVersion)
46 |
47 |
48 |
49 | Windows10
50 | true
51 | WindowsKernelModeDriver10.0
52 | Driver
53 | KMDF
54 | Universal
55 |
56 |
57 | Windows10
58 | false
59 | WindowsKernelModeDriver10.0
60 | Driver
61 | KMDF
62 | Universal
63 |
64 |
65 | Windows10
66 | true
67 | WindowsKernelModeDriver10.0
68 | Driver
69 | KMDF
70 | Universal
71 |
72 |
73 | Windows10
74 | false
75 | WindowsKernelModeDriver10.0
76 | Driver
77 | KMDF
78 | Universal
79 | false
80 |
81 |
82 | Windows10
83 | true
84 | WindowsKernelModeDriver10.0
85 | Driver
86 | KMDF
87 | Universal
88 |
89 |
90 | Windows10
91 | false
92 | WindowsKernelModeDriver10.0
93 | Driver
94 | KMDF
95 | Universal
96 |
97 |
98 | Windows10
99 | true
100 | WindowsKernelModeDriver10.0
101 | Driver
102 | KMDF
103 | Universal
104 |
105 |
106 | Windows10
107 | false
108 | WindowsKernelModeDriver10.0
109 | Driver
110 | KMDF
111 | Universal
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 | DbgengKernelDebugger
123 |
124 |
125 | DbgengKernelDebugger
126 |
127 |
128 | DbgengKernelDebugger
129 |
130 |
131 | DbgengKernelDebugger
132 |
133 |
134 | DbgengKernelDebugger
135 |
136 |
137 | DbgengKernelDebugger
138 |
139 |
140 | DbgengKernelDebugger
141 |
142 |
143 | DbgengKernelDebugger
144 |
145 |
146 |
147 | sha256
148 |
149 |
150 |
151 |
152 | sha256
153 |
154 |
155 |
156 |
157 | sha256
158 |
159 |
160 |
161 |
162 | sha256
163 |
164 |
165 | stdcpp17
166 |
167 |
168 | %(AdditionalDependencies);$(KernelBufferOverflowLib);$(DDK_LIB_PATH)ntoskrnl.lib;$(DDK_LIB_PATH)hal.lib;$(DDK_LIB_PATH)wmilib.lib;$(KMDF_LIB_PATH)$(KMDF_VER_PATH)\WdfLdr.lib;$(KMDF_LIB_PATH)$(KMDF_VER_PATH)\WdfDriverEntry.lib;$(DDK_LIB_PATH)\libcntpr.lib
169 |
170 |
171 |
172 |
173 | sha256
174 |
175 |
176 |
177 |
178 | sha256
179 |
180 |
181 |
182 |
183 | sha256
184 |
185 |
186 |
187 |
188 | sha256
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 |
--------------------------------------------------------------------------------
/CSGO KERNEL HACK/CSGO KERNEL HACK.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 | Source Files
32 |
33 |
34 |
35 |
36 | Header Files
37 |
38 |
39 | Header Files
40 |
41 |
42 | Header Files
43 |
44 |
45 | Header Files
46 |
47 |
48 |
--------------------------------------------------------------------------------
/CSGO KERNEL HACK/CSGOKERNELHACK.inf:
--------------------------------------------------------------------------------
1 | ;
2 | ; CSGOKERNELHACK.inf
3 | ;
4 |
5 | [Version]
6 | Signature="$WINDOWS NT$"
7 | Class=System ; TODO: specify appropriate Class
8 | ClassGuid={4d36e97d-e325-11ce-bfc1-08002be10318} ; TODO: specify appropriate ClassGuid
9 | Provider=%ManufacturerName%
10 | CatalogFile=CSGOKERNELHACK.cat
11 | DriverVer= ; TODO: set DriverVer in stampinf property pages
12 | PnpLockdown=1
13 |
14 | [DestinationDirs]
15 | DefaultDestDir = 12
16 | CSGOKERNELHACK_Device_CoInstaller_CopyFiles = 11
17 |
18 | [SourceDisksNames]
19 | 1 = %DiskName%,,,""
20 |
21 | [SourceDisksFiles]
22 | CSGOKERNELHACK.sys = 1,,
23 | WdfCoInstaller$KMDFCOINSTALLERVERSION$.dll=1 ; make sure the number matches with SourceDisksNames
24 |
25 | ;*****************************************
26 | ; Install Section
27 | ;*****************************************
28 |
29 | [Manufacturer]
30 | %ManufacturerName%=Standard,NT$ARCH$
31 |
32 | [Standard.NT$ARCH$]
33 | %CSGOKERNELHACK.DeviceDesc%=CSGOKERNELHACK_Device, Root\CSGOKERNELHACK ; TODO: edit hw-id
34 |
35 | [CSGOKERNELHACK_Device.NT]
36 | CopyFiles=Drivers_Dir
37 |
38 | [Drivers_Dir]
39 | CSGOKERNELHACK.sys
40 |
41 | ;-------------- Service installation
42 | [CSGOKERNELHACK_Device.NT.Services]
43 | AddService = CSGOKERNELHACK,%SPSVCINST_ASSOCSERVICE%, CSGOKERNELHACK_Service_Inst
44 |
45 | ; -------------- CSGOKERNELHACK driver install sections
46 | [CSGOKERNELHACK_Service_Inst]
47 | DisplayName = %CSGOKERNELHACK.SVCDESC%
48 | ServiceType = 1 ; SERVICE_KERNEL_DRIVER
49 | StartType = 3 ; SERVICE_DEMAND_START
50 | ErrorControl = 1 ; SERVICE_ERROR_NORMAL
51 | ServiceBinary = %12%\CSGOKERNELHACK.sys
52 |
53 | ;
54 | ;--- CSGOKERNELHACK_Device Coinstaller installation ------
55 | ;
56 |
57 | [CSGOKERNELHACK_Device.NT.CoInstallers]
58 | AddReg=CSGOKERNELHACK_Device_CoInstaller_AddReg
59 | CopyFiles=CSGOKERNELHACK_Device_CoInstaller_CopyFiles
60 |
61 | [CSGOKERNELHACK_Device_CoInstaller_AddReg]
62 | HKR,,CoInstallers32,0x00010000, "WdfCoInstaller$KMDFCOINSTALLERVERSION$.dll,WdfCoInstaller"
63 |
64 | [CSGOKERNELHACK_Device_CoInstaller_CopyFiles]
65 | WdfCoInstaller$KMDFCOINSTALLERVERSION$.dll
66 |
67 | [CSGOKERNELHACK_Device.NT.Wdf]
68 | KmdfService = CSGOKERNELHACK, CSGOKERNELHACK_wdfsect
69 | [CSGOKERNELHACK_wdfsect]
70 | KmdfLibraryVersion = $KMDFVERSION$
71 |
72 | [Strings]
73 | SPSVCINST_ASSOCSERVICE= 0x00000002
74 | ManufacturerName="" ;TODO: Replace with your manufacturer name
75 | DiskName = "CSGOKERNELHACK Installation Disk"
76 | CSGOKERNELHACK.DeviceDesc = "CSGOKERNELHACK Device"
77 | CSGOKERNELHACK.SVCDESC = "CSGOKERNELHACK Service"
78 |
--------------------------------------------------------------------------------
/CSGO KERNEL HACK/Headers.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include
3 | #include "imports.h"
4 |
5 | inline void kernel_sleep(int ms)
6 | {
7 | LARGE_INTEGER time;
8 | time.QuadPart = -(ms) * 10 * 1000;
9 | KeDelayExecutionThread(KernelMode, TRUE, &time);
10 | }
--------------------------------------------------------------------------------
/CSGO KERNEL HACK/Main.cpp:
--------------------------------------------------------------------------------
1 | #include "Headers.h"
2 | #include "cheat.h"
3 |
4 | HANDLE game_process_id = 0;
5 | PEPROCESS game_eprocess = NULL;
6 |
7 | PVOID m_client = 0;
8 | PVOID m_engine = 0;
9 |
10 | KEVENT driver_unload_event;
11 |
12 | HANDLE g_work_thread;
13 |
14 | client g_client;
15 |
16 | void reduce_recoil()
17 | {
18 | auto clamp_angle = [](Vector3 qaAng) noexcept -> Vector3
19 | {
20 | if (qaAng.x > 89.0f)
21 | qaAng.x = 89.0f;
22 | if (qaAng.x < -89.0f)
23 | qaAng.x = -89.0f;
24 | while (qaAng.y > 180.0f)
25 | qaAng.y -= 360.0f;
26 | while (qaAng.y < -180.0f)
27 | qaAng.y += 360.0f;
28 | qaAng.z = 0;
29 | return qaAng;
30 | };
31 |
32 | static Vector3 old_punch_angle;
33 | Vector3 aim_punch_angle = g_client.get_local().get_aim_punch();
34 | Vector3 view_angles = g_client.get_view_angles();
35 |
36 | float totalPunch = aim_punch_angle.x + aim_punch_angle.y;
37 | if (totalPunch != 0.f)
38 | {
39 | auto compensatedAngle = Vector3{
40 | ((view_angles.x + old_punch_angle.x) - (aim_punch_angle.x * 2.f)),
41 | ((view_angles.y + old_punch_angle.y) - (aim_punch_angle.y * 2.f)),0.f
42 | };
43 | auto newAngle = clamp_angle(compensatedAngle);
44 | old_punch_angle = Vector3{ aim_punch_angle.x * 2.f, aim_punch_angle.y * 2.f, 0.f };
45 | g_client.set_view_angles(newAngle);
46 | }
47 | else
48 | {
49 | old_punch_angle = Vector3{ 0.f,0.f,0.f };
50 | }
51 | }
52 |
53 |
54 | void trigger_bot()
55 | {
56 | ULONG crosshair_id = g_client.get_local().get_crosshair_id();
57 | if (crosshair_id <= 0 || crosshair_id > 65)
58 | return;
59 |
60 | crosshair_id -= 1;
61 |
62 | entity target = g_client.get_entity(crosshair_id);
63 |
64 | if (!target.is_valid_palyer())
65 | return;
66 |
67 | if (target.get_team() == g_client.get_local().get_team())
68 | return;
69 |
70 | if (target.get_health() <= NULL)
71 | return;
72 |
73 | if (g_client.get_force_attack() == 4)
74 | g_client.set_force_attack(6);
75 |
76 | }
77 |
78 | void glow_hack()
79 | {
80 | entity local = g_client.get_local();
81 |
82 | if (!local.is_valid_palyer())
83 | return;
84 |
85 | for (ULONG n = 0; n <= 32; n++)
86 | {
87 | entity player = g_client.get_entity(n);
88 |
89 | if (!player.is_valid_palyer())
90 | continue;
91 |
92 | if (player.get_team() == local.get_team())
93 | continue;
94 |
95 | if (player.get_health() <= NULL)
96 | continue;
97 |
98 | player.get_glow_mananger().set_glow();
99 | }
100 |
101 | }
102 |
103 |
104 |
105 |
106 | VOID work_thread(void* context [[maybe_unused]] )
107 | {
108 | while (true)
109 | {
110 | kernel_sleep(2);
111 | if (KeReadStateEvent(&driver_unload_event))
112 | break;
113 | if (!game_eprocess)
114 | continue;
115 | if (!m_client || !m_engine)
116 | continue;
117 | KAPC_STATE apc_state;
118 | KeStackAttachProcess(game_eprocess, &apc_state);
119 |
120 | glow_hack();
121 |
122 | trigger_bot();
123 |
124 | reduce_recoil();
125 |
126 | KeUnstackDetachProcess(&apc_state);
127 | }
128 | PsTerminateSystemThread(0);
129 | }
130 |
131 |
132 | VOID load_image_notify([[maybe_unused]] PUNICODE_STRING FullImageName, [[maybe_unused]] HANDLE ProcessId, [[maybe_unused]] PIMAGE_INFO ImageInfo)
133 | {
134 | if (game_process_id == ProcessId)
135 | {
136 | if (wcsstr(FullImageName->Buffer, L"\\csgo\\bin\\client.dll")) {
137 | DbgPrintEx(77, 0, "[+] Loaded Name: %ws \n", FullImageName->Buffer);
138 | DbgPrintEx(77, 0, "[+] Loaded Base: 0x%llx \n", ImageInfo->ImageBase);
139 | DbgPrintEx(77, 0, "[+] Loaded To Process: %d \n", ProcessId);
140 | m_client = ImageInfo->ImageBase;
141 | }
142 | if (wcsstr(FullImageName->Buffer, L"\\bin\\engine.dll")) {
143 | DbgPrintEx(77, 0, "[+] Loaded Name: %ws \n", FullImageName->Buffer);
144 | DbgPrintEx(77, 0, "[+] Loaded Base: 0x%llx \n", ImageInfo->ImageBase);
145 | DbgPrintEx(77, 0, "[+] Loaded To Process: %d \n", ProcessId);
146 | m_engine = ImageInfo->ImageBase;
147 | }
148 |
149 | }
150 | }
151 |
152 | VOID create_process_notify(PEPROCESS process, HANDLE process_id, PPS_CREATE_NOTIFY_INFO create_info)
153 | {
154 | if (create_info)
155 | {
156 | PCHAR process_name = PsGetProcessImageFileName(process);
157 | if (0 == _stricmp(process_name, "csgo.exe"))
158 | {
159 | DbgPrintEx(77, 0, "[+] game_process_id: %d \n", process_id);
160 | DbgPrintEx(77, 0, "[+] game_eprocess: 0x%llx \n", process);
161 | game_process_id = process_id;
162 | game_eprocess = process;
163 | }
164 | }
165 | else
166 | {
167 | if (game_process_id == process_id)
168 | {
169 | game_process_id = 0;
170 | game_eprocess = NULL;
171 | m_client = 0;
172 | m_engine = 0;
173 | DbgPrintEx(77, 0, "[+] game client exit! \n");
174 | }
175 | }
176 | }
177 |
178 | EXTERN_C NTSTATUS DriverEntry([[maybe_unused]] PDRIVER_OBJECT drv_obj, [[maybe_unused]] PUNICODE_STRING registry_path)
179 | {
180 | drv_obj->DriverUnload = []([[maybe_unused]] PDRIVER_OBJECT drv_obj) noexcept -> VOID
181 | {
182 |
183 | KeSetEvent(&driver_unload_event, IO_NO_INCREMENT, FALSE);
184 |
185 | ZwWaitForSingleObject(g_work_thread, FALSE, NULL);
186 |
187 | ZwClose(g_work_thread);
188 |
189 | PsRemoveLoadImageNotifyRoutine(&load_image_notify);
190 |
191 | PsSetCreateProcessNotifyRoutineEx(create_process_notify, TRUE);
192 |
193 | DbgPrintEx(77, 0, "[+] Driver Unload!\n");
194 |
195 | return;
196 | };
197 | *((ULONG*)drv_obj->DriverSection + 26) |= 0x20ul;
198 |
199 | KeInitializeEvent(&driver_unload_event, NotificationEvent, FALSE);
200 |
201 | PsCreateSystemThread(&g_work_thread, THREAD_ALL_ACCESS, NULL, NULL, NULL, work_thread, NULL);
202 |
203 | PsSetCreateProcessNotifyRoutineEx(create_process_notify, FALSE);
204 |
205 | PsSetLoadImageNotifyRoutine(&load_image_notify);
206 |
207 | DbgPrintEx(77, 0, "[+] Driver Load!\n");
208 |
209 | return STATUS_SUCCESS;
210 | }
--------------------------------------------------------------------------------
/CSGO KERNEL HACK/cheat.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include
3 | #include
4 | #include "mem.h"
5 |
6 | constexpr auto dwEntityList = 0x4DDB92C;
7 | constexpr auto dwLocalPlayer = 0xDBF4CC;
8 | constexpr auto dwForceAttack = 0x320BE10;
9 | constexpr auto dwGlowObjectManager = 0x5324588;
10 | constexpr auto m_iHealth = 0x100;
11 | constexpr auto m_iTeamNum = 0xF4;
12 | constexpr auto m_iCrosshairId = 0x11838;
13 | constexpr auto m_iGlowIndex = 0x10488;
14 | constexpr auto m_aimPunchAngle = 0x303C;
15 | constexpr auto dwClientState = 0x58CFDC;
16 | constexpr auto dwClientState_ViewAngles = 0x4D90;
17 |
18 | struct Vector3
19 | {
20 | float x = 0; float y = 0; float z = 0;
21 | Vector3 operator+(const Vector3& pos)
22 | {
23 | Vector3 ret;
24 | ret.x = x + pos.x;
25 | ret.y = y + pos.y;
26 | ret.z = z + pos.z;
27 | return ret;
28 | }
29 | Vector3 operator-(const Vector3& pos)
30 | {
31 | Vector3 ret;
32 | ret.x = x - pos.x;
33 | ret.y = y - pos.y;
34 | ret.z = z - pos.z;
35 | return ret;
36 | }
37 | bool operator==(const Vector3& pos)
38 | {
39 | if (pos.x == x && pos.y == y && pos.z == z)
40 | return true;
41 | return false;
42 | }
43 |
44 | Vector3() {};
45 |
46 | Vector3(float _x, float _y, float _z) noexcept : x{ _x }, y{ _y }, z{ _z } {}
47 |
48 | };
49 |
50 | class glow_mananger
51 | {
52 | private:
53 | ULONG64 base;
54 |
55 | public:
56 | glow_mananger() { base = 0; };
57 |
58 | glow_mananger(ULONG64 _base) :base(_base) {};
59 |
60 | ~glow_mananger() {};
61 | public:
62 | void set_glow();
63 | };
64 |
65 | class entity
66 | {
67 |
68 | private:
69 | ULONG64 base;
70 |
71 | public:
72 | entity() { base = 0; };
73 | entity(ULONG64 entitybase) :base(entitybase) {};
74 | ~entity() {};
75 |
76 | public:
77 | BOOLEAN is_valid_palyer();
78 |
79 | ULONG64 get_base();
80 |
81 | ULONG get_health();
82 |
83 | ULONG get_team();
84 |
85 | ULONG get_crosshair_id();
86 |
87 | Vector3 get_aim_punch();
88 |
89 | glow_mananger get_glow_mananger();
90 | };
91 |
92 | class client
93 | {
94 | public:
95 | entity get_entity(int index);
96 |
97 | entity get_local();
98 |
99 | Vector3 get_view_angles();
100 |
101 | void set_view_angles(Vector3 new_view_angles);
102 |
103 | void set_force_attack(int val = 6);
104 |
105 | int get_force_attack();
106 | };
107 |
--------------------------------------------------------------------------------
/CSGO KERNEL HACK/imports.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include
3 | EXTERN_C NTKERNELAPI
4 | PIMAGE_NT_HEADERS
5 | RtlImageNtHeader(
6 | PVOID Base);
7 |
8 | EXTERN_C NTKERNELAPI
9 | NTSTATUS
10 | MmCopyVirtualMemory(
11 | PEPROCESS SourceProcess,
12 | PVOID SourceAddress,
13 | PEPROCESS TargetProcess,
14 | PVOID TargetAddress,
15 | SIZE_T BufferSize,
16 | KPROCESSOR_MODE PreviousMode,
17 | PSIZE_T ReturnSize);
18 |
19 | EXTERN_C NTKERNELAPI
20 | PVOID
21 | PsGetProcessWow64Process(_In_ PEPROCESS Process);
22 |
23 | EXTERN_C NTKERNELAPI
24 | PVOID
25 | PsGetProcessPeb(_In_ PEPROCESS Process);
26 |
27 | EXTERN_C NTKERNELAPI
28 | PVOID
29 | RtlFindExportedRoutineByName(
30 | _In_ PVOID ImageBase,
31 | _In_ PCCH RoutineName);
32 |
33 | EXTERN_C NTKERNELAPI
34 | PCHAR
35 | PsGetProcessImageFileName(PEPROCESS Process);
--------------------------------------------------------------------------------
/CSGO KERNEL HACK/mem.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include
3 | #include
4 |
5 | namespace memory
6 | {
7 | template
8 | inline auto read(void* address) -> T
9 | {
10 | if(MmIsAddressValid(address))
11 | {
12 | return *reinterpret_cast(address);
13 | }
14 | T ZeroVal;
15 | RtlZeroMemory(&ZeroVal, sizeof(T));
16 | return ZeroVal;
17 | }
18 |
19 | template
20 | inline void write(void* address,T val)
21 | {
22 | if (MmIsAddressValid(address))
23 | {
24 | *reinterpret_cast(address) = val;
25 | }
26 | }
27 |
28 | template
29 | inline auto read(ULONG64 address) -> T
30 | {
31 | if (MmIsAddressValid((void*)address))
32 | {
33 | return *reinterpret_cast(address);
34 | }
35 | T ZeroVal;
36 | RtlZeroMemory(&ZeroVal,sizeof(T));
37 | return ZeroVal;
38 | }
39 |
40 | template
41 | inline void write(ULONG64 address, T val)
42 | {
43 | if (MmIsAddressValid((void*)address))
44 | {
45 | *reinterpret_cast(address) = val;
46 | }
47 | }
48 |
49 |
50 | inline bool read(void* address,void* buffer,size_t len)
51 | {
52 | if (MmIsAddressValid(address) && MmIsAddressValid(buffer))
53 | {
54 | RtlCopyMemory(buffer, address, len);
55 | return true;
56 | }
57 | return false;
58 | }
59 |
60 | inline bool write(void* address, void* buffer, size_t len)
61 | {
62 | if (MmIsAddressValid(address) && MmIsAddressValid(buffer))
63 | {
64 | RtlCopyMemory(address, buffer,len);
65 | return true;
66 | }
67 | return false;
68 | }
69 |
70 | }
71 |
--------------------------------------------------------------------------------
/CSGO KERNEL HACK/sdk.cpp:
--------------------------------------------------------------------------------
1 | #include "cheat.h"
2 | extern PVOID m_client;
3 | extern PVOID m_engine;
4 |
5 | void glow_mananger::set_glow()
6 | {
7 | if (!base) return;
8 | memory::write((base + 0xC), 1.f);
9 | memory::write((base + 0x14), 1.f);
10 | memory::write((base + 0x28), true);
11 | memory::write((base + 0x29), false);
12 | }
13 |
14 | BOOLEAN entity::is_valid_palyer()
15 | {
16 | return (base != NULL);
17 | }
18 |
19 | ULONG64 entity::get_base() {
20 | return base;
21 | }
22 |
23 | ULONG entity::get_health() {
24 | if (!base) return NULL;
25 | return memory::read(base + m_iHealth);
26 | }
27 |
28 | ULONG entity::get_team() {
29 | if (!base) return NULL;
30 | return memory::read(base + m_iTeamNum);
31 | }
32 |
33 | ULONG entity::get_crosshair_id() {
34 | if (!base) return NULL;
35 | return memory::read(base + m_iCrosshairId);
36 | }
37 |
38 | Vector3 entity::get_aim_punch() {
39 | if (!base) return {0,0,0};
40 | Vector3 aimPunch = memory::read(base + m_aimPunchAngle);
41 | return aimPunch;
42 | }
43 |
44 | glow_mananger entity::get_glow_mananger()
45 | {
46 | if (!base) glow_mananger(NULL);
47 | ULONG GLPOINTR = memory::read(ULONG64(m_client) + (DWORD64)dwGlowObjectManager);
48 | ULONG GLcpg = memory::read(base + (DWORD64)m_iGlowIndex);
49 | ULONG64 addr = GLPOINTR + (GLcpg * 0x38);
50 | return glow_mananger(addr);
51 | }
52 |
53 | entity client::get_entity(int index)
54 | {
55 | auto base = memory::read(ULONG64(m_client) + dwEntityList + index * 0x10);
56 | return entity(base);
57 | }
58 |
59 | entity client::get_local()
60 | {
61 | auto base = memory::read(ULONG64(m_client) + dwLocalPlayer);
62 | return entity(base);
63 | }
64 |
65 | Vector3 client::get_view_angles() {
66 | ULONG addr = memory::read(ULONG64(m_engine) + dwClientState) + dwClientState_ViewAngles;
67 | return memory::read(addr);
68 | }
69 |
70 | void client::set_view_angles(Vector3 new_view_angles) {
71 | if (!_isnan(new_view_angles.y) && !_isnan(new_view_angles.x))
72 | {
73 | ULONG addr = memory::read(ULONG64(m_engine) + dwClientState) + dwClientState_ViewAngles;
74 | memory::write(addr, new_view_angles);
75 | }
76 | }
77 |
78 | void client::set_force_attack(int val)
79 | {
80 | memory::write(ULONG64(m_client) + dwForceAttack, val);
81 | }
82 |
83 | int client::get_force_attack()
84 | {
85 | return memory::read(ULONG64(m_client) + dwForceAttack);
86 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # CSGO-Kernel-Hack
2 |
3 | Full kernel cheat without user mode client
4 |
5 | How to use:
6 | Using vs2019 + WDK to compile,signing .sys with leaked certs,then start the driver in the way you like
7 |
8 | Features:
9 | Glow esp
10 | Trigger bot
11 | Reduce recoil
12 |
13 | Notice:
14 | Driver may makes the PC bluescreen (system exception),use in your own risk
15 |
16 |
17 |
--------------------------------------------------------------------------------