Jump to content

How to make a CSGO external WH cheat in C#


Recommended Posts

Screenshot.png

Begin. Guide by CoderAlmir 💛

First, we create a Console application project in Visual C#.

Don't forget to connect System.Diagnostics!

Then we need to download a library to read and write memory to our game.

DOWNLOAD: Memory.zip

Next, in our namespace (in other words, as you named your project), or rather inside our namespace, we declare two variables.

1. Memory

Memory mem;

2. Our client

private static int client.dll;

So, now you can write the following code inside our main function:

static void Main()
{
    try
    {
    Process csgo = Process.GetProcessesByName("csgo")[0]; //Getting the process name
    mem = new Memory("csgo");
    
    foreach (ProcessModule module in csgo.Modules) //Module receiving cycle
    {

        if (module.ModuleName == "client_panorama.dll") // Condition, if this is the module we need, then assign the value to our client

            client_dll = (int)module.BaseAddress;
    }
    Console.WriteLine("The module was not received successfully!");
    }
    catch //Exception handling
    {
        Console.WriteLine("The module was not received successfully!");
    }
}

So, we wrote getting the module and conditions, whether it is our module, and also did exception handling.

Now let's proceed to the next step, making an infinite loop:

static void Main()
{
    try
    {
    Process csgo = Process.GetProcessesByName("csgo")[0]; //Get the process name
    mem = new Memory("csgo");
    
    foreach (ProcessModule module in csgo.Modules) //Module receiving cycle
    {

        if (module.ModuleName == "client_panorama.dll") // Condition, if this is the module we need, then assign the value to our client
            client_dll = (int)module.BaseAddress;
    }
    Console.WriteLine("The module was successfully received!");
    }
    catch //Обработка исключений
    {
        Console.WriteLine("The module was successfully received!");
    }
    while (true)
    {
        Thread.Sleep(1);

                int LocalPlayer = mem.Read<int>(bClient + Offsets.LocalPlayer);
                int PlayerTeam = mem.Read<int>(LocalPlayer + Offsets.TeamNum);

                for (int i = 0; i < 64; i++)
                {

                    int EntityList = mem.Read<int>(bClient + Offsets.entitylist + i * 0x10);
                    int EntityTeam = mem.Read<int>(EntityList + Offsets.TeamNum);

                    if (EntityTeam != 0 && EntityTeam != PlayerTeam)
                    {
                        int GlowIndex = mem.Read<int>(EntityList + Offsets.glowindex);
                        float HP = mem.Read<int>(EntityList + Offsets.health);

                        DrawEntityHP(GlowIndex, HP);
                    }
                }
    }

So we declared a variable and did our player rendering cycle.

Now declare our function that is in the loop.

public static void DrawEntityHP(int GlowIndex, float HP)
        {
            int GlowObject = mem.Read<int>(bClient + Offsets.glowobjectmanager);
            mem.Write(GlowObject + (GlowIndex * 0x38) + 4, 1 - HP / 100f);
            mem.Write(GlowObject + (GlowIndex * 0x38) + 8, HP / 100f);
            mem.Write(GlowObject + (GlowIndex * 0x38) + 12, 0 / 100f);
            mem.Write(GlowObject + (GlowIndex * 0x38) + 0x10, 255 / 100f);
            mem.Write(GlowObject + (GlowIndex * 0x38) + 0x24, true);
            mem.Write(GlowObject + (GlowIndex * 0x38) + 0x25, false);
        }

The function is declared, now what? Now, as we can see, if there is a word like "Offsets", what is it? "Offsets" are offsets in our game.

Then we declare the Offsets class, the class where our offsets will be stored

class Offsets
    {
        public const Int32 m_ArmorValue = 0xB340;
        public const Int32 m_Collision = 0x31C;
        public const Int32 m_CollisionGroup = 0x474;
        public const Int32 m_Local = 0x2FBC;
        public const Int32 m_MoveType = 0x25C;
        public const Int32 m_OriginalOwnerXuidHigh = 0x31B4;
        public const Int32 m_OriginalOwnerXuidLow = 0x31B0;
        public const Int32 m_SurvivalGameRuleDecisionTypes = 0x1320;
        public const Int32 m_SurvivalRules = 0xCF8;
        public const Int32 m_aimPunchAngle = 0x302C;
        public const Int32 m_aimPunchAngleVel = 0x3038;
        public const Int32 m_angEyeAnglesX = 0xB344;
        public const Int32 m_angEyeAnglesY = 0xB348;
        public const Int32 m_bBombPlanted = 0x99D;
        public const Int32 m_bFreezePeriod = 0x20;
        public const Int32 m_bGunGameImmunity = 0x392C;
        public const Int32 m_bHasDefuser = 0xB350;
        public const Int32 m_bHasHelmet = 0xB334;
        public const Int32 m_bInReload = 0x3285;
        public const Int32 m_bIsDefusing = 0x3918;
        public const Int32 m_bIsQueuedMatchmaking = 0x74;
        public const Int32 m_bIsScoped = 0x3910;
        public const Int32 m_bIsValveDS = 0x75;
        public const Int32 m_bSpotted = 0x93D;
        public const Int32 m_bSpottedByMask = 0x980;
        public const Int32 m_bStartedArming = 0x33D0;
        public const Int32 m_clrRender = 0x70;
        public const Int32 m_dwBoneMatrix = 0x26A8;
        public const Int32 m_fAccuracyPenalty = 0x3310;
        public const Int32 m_fFlags = 0x104;
        public const Int32 m_flC4Blow = 0x2990;
        public const Int32 m_flDefuseCountDown = 0x29AC;
        public const Int32 m_flDefuseLength = 0x29A8;
        public const Int32 m_flFallbackWear = 0x31C0;
        public const Int32 m_flFlashDuration = 0xA3F4;
        public const Int32 m_flFlashMaxAlpha = 0xA3F0;
        public const Int32 m_flLastBoneSetupTime = 0x2924;
        public const Int32 m_flLowerBodyYawTarget = 0x3A78;
        public const Int32 m_flNextAttack = 0x2D70;
        public const Int32 m_flNextPrimaryAttack = 0x3218;
        public const Int32 m_flSimulationTime = 0x268;
        public const Int32 m_flTimerLength = 0x2994;
        public const Int32 m_hActiveWeapon = 0x2EF8;
        public const Int32 m_hMyWeapons = 0x2DF8;
        public const Int32 m_hObserverTarget = 0x3388;
        public const Int32 m_hOwner = 0x29CC;
        public const Int32 m_hOwnerEntity = 0x14C;
        public const Int32 m_iAccountID = 0x2FC8;
        public const Int32 m_iClip1 = 0x3244;
        public const Int32 m_iCompetitiveRanking = 0x1A84;
        public const Int32 m_iCompetitiveWins = 0x1B88;
        public const Int32 m_iCrosshairId = 0xB3AC;
        public const Int32 m_iEntityQuality = 0x2FAC;
        public const Int32 m_iFOV = 0x31E4;
        public const Int32 m_iFOVStart = 0x31E8;
        public const Int32 glowindex = 0xA40C;
        public const Int32 health = 0x100;
        public const Int32 m_iItemDefinitionIndex = 0x2FAA;
        public const Int32 m_iItemIDHigh = 0x2FC0;
        public const Int32 m_iMostRecentModelBoneCounter = 0x2690;
        public const Int32 m_iObserverMode = 0x3374;
        public const Int32 m_iShotsFired = 0xA380;
        public const Int32 m_iState = 0x3238;
        public const Int32 TeamNum = 0xF4;
        public const Int32 m_lifeState = 0x25F;
        public const Int32 m_nFallbackPaintKit = 0x31B8;
        public const Int32 m_nFallbackSeed = 0x31BC;
        public const Int32 m_nFallbackStatTrak = 0x31C4;
        public const Int32 m_nForceBone = 0x268C;
        public const Int32 m_nTickBase = 0x342C;
        public const Int32 m_rgflCoordinateFrame = 0x444;
        public const Int32 m_szCustomName = 0x303C;
        public const Int32 m_szLastPlaceName = 0x35B0;
        public const Int32 m_thirdPersonViewAngles = 0x31D8;
        public const Int32 vecOriginPosition = 0x138;
        public const Int32 m_vecVelocity = 0x114;
        public const Int32 m_vecViewOffset = 0x108;
        public const Int32 m_viewPunchAngle = 0x3020;
        public const Int32 clientstate_choked_commands = 0x4D28;
        public const Int32 clientstate_delta_ticks = 0x174;
        public const Int32 clientstate_last_outgoing_command = 0x4D24;
        public const Int32 clientstate_net_channel = 0x9C;
        public const Int32 convar_name_hash_table = 0x2F0F8;
        public const Int32 dwClientState = 0x58CCFC;
        public const Int32 dwClientState_GetLocalPlayer = 0x180;
        public const Int32 dwClientState_IsHLTV = 0x4D40;
        public const Int32 dwClientState_Map = 0x28C;
        public const Int32 dwClientState_MapDirectory = 0x188;
        public const Int32 dwClientState_MaxPlayer = 0x388;
        public const Int32 dwClientState_PlayerInfo = 0x52B8;
        public const Int32 dwClientState_State = 0x108;
        public const Int32 dwClientState_ViewAngles = 0x4D88;
        public const Int32 entitylist = 0x4D05AD4;
        public const Int32 dwForceAttack = 0x31371C0;
        public const Int32 dwForceAttack2 = 0x31371CC;
        public const Int32 dwForceBackward = 0x3137214;
        public const Int32 dwForceForward = 0x3137220;
        public const Int32 jumpforce = 0x51A918C;
        public const Int32 dwForceLeft = 0x313719C;
        public const Int32 dwForceRight = 0x3137190;
        public const Int32 dwGameDir = 0x632F70;
        public const Int32 dwGameRulesProxy = 0x521B4D4;
        public const Int32 dwGetAllClasses = 0xD1895C;
        public const Int32 dwGlobalVars = 0x58CA00;
        public const Int32 glowobjectmanager = 0x5245FE8;
        public const Int32 dwInput = 0x5150B20;
        public const Int32 dwInterfaceLinkList = 0x8C8014;
        public const Int32 LocalPlayer = 0xCF3A3C;
        public const Int32 dwMouseEnable = 0xCF9588;
        public const Int32 dwMouseEnablePtr = 0xCF9558;
        public const Int32 dwPlayerResource = 0x313551C;
        public const Int32 dwRadarBase = 0x513A834;
        public const Int32 dwSensitivity = 0xCF9424;
        public const Int32 dwSensitivityPtr = 0xCF93F8;
        public const Int32 dwSetClanTag = 0x896A0;
        public const Int32 dwViewMatrix = 0x4CF7504;
        public const Int32 dwWeaponTable = 0x51515E4;
        public const Int32 dwWeaponTableIndex = 0x323C;
        public const Int32 dwYawPtr = 0xCF91E8;
        public const Int32 dwZoomSensitivityRatioPtr = 0xCFE408;
        public const Int32 dwbSendPackets = 0xD28FA;
        public const Int32 dwppDirect3DDevice9 = 0xA6030;
        public const Int32 force_update_spectator_glow = 0x393362;
        public const Int32 interface_engine_cvar = 0x3E9EC;
        public const Int32 is_c4_owner = 0x39F5A0;
        public const Int32 Dormant = 0xED;
        public const Int32 m_pStudioHdr = 0x294C;
        public const Int32 m_pitchClassPtr = 0x513AAE0;
        public const Int32 m_yawClassPtr = 0xCF91E8;
        public const Int32 model_ambient_min = 0x58FD1C;
        public const Int32 set_abs_angles = 0x1CA8B0;
        public const Int32 set_abs_origin = 0x1CA6F0;
        }

How can I find the latest updated offsets? Keep the link: https://github.com/frk1/hazedumper/blob/master/csgo.cs 

What should I do now? Click the "Build" button, wait until compiled and then run our cheat and rejoice! 

  • Like 15
  • Thanks 3
  • Haha 2
Link to comment
Share on other sites

  • 1 month later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...