-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathCheatForm.cs
executable file
·204 lines (165 loc) · 7.12 KB
/
CheatForm.cs
1
2
3
4
5
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
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
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using MaterialSkin;
using MaterialSkin.Controls;
namespace BATTLEGROUNDS_EXERNAL
{
public partial class CheatForm : MaterialForm
{
public CheatForm()
{
InitializeComponent();
var materialSkinManager = MaterialSkinManager.Instance;
materialSkinManager.AddFormToManage(this);
materialSkinManager.Theme = MaterialSkinManager.Themes.LIGHT;
materialSkinManager.ColorScheme = new ColorScheme(Primary.BlueGrey800, Primary.BlueGrey900, Primary.BlueGrey500, Accent.LightBlue200, TextShade.WHITE);
}
private void CheatForm_Load(object sender, EventArgs e)
{
// SET UP SIGSCANNER
Helpers.SigScanSharp SigScan = new Helpers.SigScanSharp(G.hProcess);
// GET BASE ADDRESS OF GAME PROCESS
IntPtr[] hMods = new IntPtr[1024];
var pModules = GCHandle.Alloc(hMods, GCHandleType.Pinned);
uint size = (uint)IntPtr.Size * 1024;
uint cbNeeded;
if (Win32.EnumProcessModules(G.hProcess, pModules.AddrOfPinnedObject(), size, out cbNeeded))
{
G.Memory = new Memory(G.hProcess, hMods[0]); // INITIALISE MEMORY CLASS
int cb = Marshal.SizeOf(typeof(Win32._MODULEINFO));
Win32._MODULEINFO modinfo;
Win32.GetModuleInformation(G.hProcess, hMods[0], out modinfo, cb);
// GET OFFSETS
if (SigScan.SelectModule(hMods[0]/*MAIN MODULE*/, modinfo.SizeOfImage))
{
long lTime = 0;
var GWorldAddress = (IntPtr)SigScan.FindPattern("48 8B 1D ? ? ? ? 74 40", out lTime);
var GWorldOffset = M.Read<uint>(GWorldAddress + 3) + 7;
var ppUWorld = (IntPtr)((ulong)GWorldAddress + GWorldOffset);
G.pUWorld = M.Read<IntPtr>(ppUWorld);
Console.WriteLine($"Found UWorld at 0x{((ulong)ppUWorld - (ulong)hMods[0]).ToString("x2")} - {lTime}ms");
var GNamesAddress = SigScan.FindPattern("48 89 1D ? ? ? ? 48 8B 5C 24 ? 48 83 C4 28 C3 48 8B 5C 24 ? 48 89 05 ? ? ? ? 48 83 C4 28 C3", out lTime);
var GNamesOffset = M.Read<uint>((IntPtr)GNamesAddress + 3);
GNamesAddress += GNamesOffset + 7;
Console.WriteLine($"Found GNames at 0x{(GNamesAddress - (ulong)hMods[0]).ToString("x2")} - {lTime}ms");
GNames namearray = M.Read<GNames>((IntPtr)GNamesAddress);
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
G.Names = namearray.GetStaticArray().DumpNames();
stopwatch.Stop();
Console.WriteLine($"Dump GNames - {stopwatch.ElapsedMilliseconds}ms");
}
}
// NO NASTY MEMORY LEAKS HERE
pModules.Free();
new Thread(Cheat.EntityLoop).Start();
new Thread(Cheat.MainLoop).Start();
// SHOW OVERLAY
new OverlayForm().Show();
}
#region Aimbot
private void chkAimbot_CheckedChanged(object sender, EventArgs e)
{
CheatSettings.Aimbot = chkAimbot.Checked;
}
#endregion
#region Visuals
private void chkVisualsEnabled_CheckedChanged(object sender, EventArgs e)
{
CheatSettings.Visuals = chkVisualsEnabled.Checked;
}
private void chkLineESP_CheckedChanged(object sender, EventArgs e)
{
CheatSettings.LineESP = chkLineESP.Checked;
}
private void chkBoxESP_CheckedChanged(object sender, EventArgs e)
{
CheatSettings.BoxESP = chkBoxESP.Checked;
}
private void chkDistanceESP_CheckedChanged(object sender, EventArgs e)
{
CheatSettings.DistanceESP = chkDistanceESP.Checked;
}
private void chkVehicleESP_CheckedChanged(object sender, EventArgs e)
{
CheatSettings.VehicleESP = chkVehicleESP.Checked;
}
private void chkLootESP_CheckedChanged(object sender, EventArgs e)
{
CheatSettings.LootESP = chkLootESP.Checked;
}
private void chkBoneESP_CheckedChanged(object sender, EventArgs e)
{
CheatSettings.BoneESP = chkBoneESP.Checked;
}
#endregion
#region Weapon Modifications
private void chkNoRecoil_CheckedChanged(object sender, EventArgs e)
{
CheatSettings.NoRecoil = chkNoRecoil.Checked;
}
private void chkNoSpread_CheckedChanged(object sender, EventArgs e)
{
CheatSettings.NoSpread = chkNoSpread.Checked;
}
private void chkInfiniteAmmo_CheckedChanged(object sender, EventArgs e)
{
CheatSettings.InfiniteAmmo = chkInfiniteAmmo.Checked;
}
private void chkInstantHit_CheckedChanged(object sender, EventArgs e)
{
CheatSettings.InstantHit = chkInstantHit.Checked;
}
private void chkFullAuto_CheckedChanged(object sender, EventArgs e)
{
CheatSettings.FullAuto = chkFullAuto.Checked;
}
private void chkMagicBullets_CheckedChanged(object sender, EventArgs e)
{
CheatSettings.MagicBullets = chkMagicBullets.Checked;
}
private void chkNoMuzzleFlash_CheckedChanged(object sender, EventArgs e)
{
CheatSettings.NoMuzzle = chkNoMuzzleFlash.Checked;
}
private void chkNoSway_CheckedChanged(object sender, EventArgs e)
{
CheatSettings.NoSway = chkNoSway.Checked;
}
#endregion
#region Miscellaneous
private void chkMassTP_CheckedChanged(object sender, EventArgs e)
{
CheatSettings.MassTeleport = chkMassTP.Checked;
}
private void chkFlying_CheckedChanged(object sender, EventArgs e)
{
CheatSettings.Flying = chkFlying.Checked;
}
#endregion
private static class Win32
{
[DllImport("psapi.dll", CallingConvention = CallingConvention.StdCall, SetLastError = true)]
public static extern bool EnumProcessModules(IntPtr hProcess, [Out] IntPtr lphModule, uint cb, out uint lpcbNeeded);
[DllImport("psapi.dll", CallingConvention = CallingConvention.StdCall, SetLastError = true)]
public static extern bool GetModuleInformation(IntPtr hProcess, IntPtr hModule, out _MODULEINFO lpModInfo, int cb);
[StructLayout(LayoutKind.Sequential)]
public struct _MODULEINFO
{
public IntPtr lpBaseOfDll;
public uint SizeOfImage;
public IntPtr EntryPoint;
}
}
}
}