Гайд Dingo Full fixed

  • Автор темы Автор темы lagasy
  • Дата начала Дата начала
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
6 Май 2016
Сообщения
49
Реакции
17
собственно C+P все умеют, enjoy

#include "stdafx.h"
#include <unordered_map>
//------------------------------------------------------------
// Classes to help the parsing of the netvars
//------------------------------------------------------------
#pragma region Helper classes
typedef unordered_map<string, unique_ptr<NetvarTable>> TableMap;
typedef unordered_map<string, uint32_t> PropMap;
typedef unordered_map<string, unique_ptr<NetvarTable>>::iterator Iter;
struct NetvarTable {
TableMap m_ChildTables;
PropMap m_ChildProps;
uint32_t m_uOffset = 0;
bool is_empty() {

return m_ChildTables.size() == 0 && m_ChildProps.size() == 0;
}
void insert_table(string&& name, unique_ptr<NetvarTable>&& pTable) {

m_ChildTables.emplace(name, std::move(pTable));
}
void insert_prop(string&& name, uint32_t offset) {

m_ChildProps.emplace(name, offset);
}
};
class NetvarDatabase {
public:
TableMap m_Tables;
void insert(string&& name, unique_ptr<NetvarTable>&& pTable) {

m_Tables.emplace(name, std::move(pTable));
}
Iter find(const string& key) {
return m_Tables.find(key);

}
Iter begin() { return m_Tables.begin(); }
Iter end() { return m_Tables.end(); }
};
#pragma endregion
//------------------------------------------------------------
// Netvar Manager
//------------------------------------------------------------
CNetvarManager* CNetvarManager::instance = nullptr;
CNetvarManager::CNetvarManager() {

}
CNetvarManager::~CNetvarManager() {

}
void CNetvarManager::CreateDatabase() {
m_pDatabase = make_unique<NetvarDatabase>();
auto pClient = Interfaces.pClient;

if (pClient) {

for (auto pClass = pClient->GetAllClasses(); pClass; pClass = pClass->m_pNext) {

if (pClass->m_pRecvTable) {

//Insert new entry on the database
m_pDatabase->insert(
pClass->m_pRecvTable->m_pNetTableName,
InternalLoadTable(pClass->m_pRecvTable, 0));
m_tableCount++;
}
}
}
}
void CNetvarManager::Dump(std::ostream& output) {
for (auto& entry : *m_pDatabase) {
auto& pTable = entry.second;
if (pTable->is_empty())
continue;
output << entry.first << std::endl;
Dump(output, *pTable, 1);
output << "==============================================================" << std::endl;
}
}
void CNetvarManager::Dump(const std::string& file) {
std::ofstream output(file);
Dump(output);
}
//------------------------------------------------------------
// Internal methods below. This is where the real work is done
//------------------------------------------------------------
unique_ptr<NetvarTable> CNetvarManager::InternalLoadTable(RecvTable* pRecvTable, uint32_t offset) {
auto pTable = make_unique<NetvarTable>();
pTable->m_uOffset = offset;

for (auto i = 0; i < pRecvTable->m_nProps; ++i) {
auto pProp = &pRecvTable->m_pProps;

//Skip trash array items
if (!pProp || isdigit(pProp->m_pVarName[0])) continue;
//We dont care about the base class
if (strcmp(pProp->m_pVarName, "baseclass") == 0) continue;

//If this prop is a table
if (pProp->m_RecvType == SendPropType::DPT_DataTable && //If it is a table AND
pProp->m_pDataTable != NULL && //The DataTable isnt null AND
pProp->m_pDataTable->m_pNetTableName[0] == 'D') { //The Table name starts with D (this is because there are some shitty nested
//tables that we want to skip, and those dont start with D)

//Load the table pointed by pProp->m_pDataTable and insert it
pTable->insert_table(pProp->m_pVarName, InternalLoadTable(pProp->m_pDataTable, pProp->m_Offset));
}
else {
pTable->insert_prop(pProp->m_pVarName, pProp->m_Offset);
}
m_netvarCount++;
}
return pTable;
}
void CNetvarManager::Dump(std::ostream& output, NetvarTable& table, int level) {
char line[512] = "";
char fmt[512] = "";

sprintf(fmt, "%%-%ds: 0x%%08X\n", 50 - level * 4);

for (auto& prop : table.m_ChildProps) {
for (int i = 0; i < level; i++) {
if (i != level - 1) {
output << " ";
}
else {
output << "|___";
}
}
sprintf(line, fmt, prop.first.c_str(), prop.second + table.m_uOffset);
output << line;
}
for (auto& child : table.m_ChildTables) {
for (int i = 0; i < level; i++) {
if (i != level - 1) {
output << " ";
}
else {
output << "|___";
}
}
sprintf(line, fmt, child.first.c_str(), child.second->m_uOffset);
output << line;
Dump(output, *child.second, level + 1);
}
}
uint32_t CNetvarManager::GetOffset(const std::string& szTableName, const std::initializer_list<std::string>& props) {
auto table = m_pDatabase->find(szTableName);
if (table == m_pDatabase->end()) return -1;

int tableOffset = table->second->m_uOffset;
if (props.size() == 0) return tableOffset;

int totalOffset = tableOffset;
NetvarTable* curTable = table->second.get();

for (auto i = 0; i < props.size(); i++) {
std::string propName = *(props.begin() + i);

if (i + 1 < props.size()) {//This index is not the last one
auto childTable = curTable->m_ChildTables.find(propName);
if (childTable == curTable->m_ChildTables.end()) {
throw std::runtime_error("Prop not found");
}
totalOffset += childTable->second->m_uOffset;
curTable = childTable->second.get();
}
else { //Last index, retrieve prop instead of table
auto childProp = curTable->m_ChildProps.find(propName);
if (childProp == curTable->m_ChildProps.end()) {
throw std::runtime_error("Prop not found");
}
totalOffset += childProp->second;
}
}

return totalOffset;
}
void UTIL_TraceLine( Vector& vecAbsStart, Vector& vecAbsEnd, unsigned int mask, const IHandleEntity *ignore, int collisionGroup, trace_t *ptr )
{
Ray_t ray;
ray.Init(vecAbsStart, vecAbsEnd);
CTraceFilter traceFilter;
traceFilter.pSkip = (void*)ignore;
Interfaces.pTrace->TraceRay(ray, mask, &traceFilter, ptr);
}
void UTIL_TracePos(Ray_t &ray, unsigned int mask, const IHandleEntity *ignore, int collisionGroup, trace_t *ptr)
{
CTraceFilter traceFilter;
traceFilter.pSkip = (void*)ignore;
Interfaces.pTrace->TraceRay(ray, mask, &traceFilter, ptr);
}
float DistanceToRay(const Vector &pos, const Vector &rayStart, const Vector &rayEnd, float *along = NULL, Vector *pointOnRay = NULL)
{
Vector to = pos - rayStart;
Vector dir = rayEnd - rayStart;
float length = dir.NormalizeInPlace();
float rangeAlong = g_Math.DotProduct(dir, to);
if (along)
{
*along = rangeAlong;
}
float range;
if (rangeAlong < 0.0f)
{
// off start point
range = -(pos - rayStart).Length();
if (pointOnRay)
{
*pointOnRay = rayStart;
}
}
else if (rangeAlong > length)
{
// off end point
range = -(pos - rayEnd).Length();
if (pointOnRay)
{
*pointOnRay = rayEnd;
}
}
else // within ray bounds
{
Vector onRay = rayStart + (dir.operator*(rangeAlong));
range = (pos - onRay).Length();
if (pointOnRay)
{
*pointOnRay = onRay;
}
}
return range;
}
void UTIL_ClipTraceToPlayers( Vector& vecAbsStart, Vector& vecAbsEnd, unsigned int mask, ITraceFilter* filter, trace_t* tr)
{
trace_t playerTrace;
Ray_t ray;
float smallestFraction = tr->fraction;
const float maxRange = 60.0f;
ray.Init(vecAbsStart, vecAbsEnd);
for (int k = 1; k <= Interfaces.pGlobalVars->maxClients; ++k)
{
CBaseEntity* player = Interfaces.pEntList->GetClientEntity(k);
if (!player || !player->isAlive())
continue;
if (player->IsDormant())
continue;
if (filter && filter->ShouldHitEntity(player, mask) == false)
continue;
float range = DistanceToRay(player->WorldSpaceCenter(), vecAbsStart, vecAbsEnd);
if (range < 0.0f || range > maxRange)
continue;
Interfaces.pTrace->ClipRayToEntity(ray, mask | CONTENTS_HITBOX, player, &playerTrace);
if (playerTrace.fraction < smallestFraction)
{
// we shortened the ray - save off the trace
*tr = playerTrace;
smallestFraction = playerTrace.fraction;
}
}
}
bool TraceToExit(Vector& end, trace_t& tr, Vector start, Vector vEnd, trace_t* trace)
{
typedef bool(__fastcall* TraceToExitFn)(Vector&, trace_t&, float, float, float, float, float, float, trace_t*);
static DWORD TraceToExit = Utils.PatternSearch("client.dll", (BYTE*)"\x55\x8B\xEC\x83\xEC\x30\xF3\x0F\x10\x75", "xxxxxxxxxx", NULL, NULL);
if (!TraceToExit)
return false;
float start_y = start.y, start_z = start.z, start_x = start.x, dir_y = vEnd.y, dir_x = vEnd.x, dir_z = vEnd.z;
_asm
{
push trace
push dir_z
push dir_y
push dir_x
push start_z
push start_y
push start_x
mov edx, tr
mov ecx, end
call TraceToExit
add esp, 0x1C
}
}
CBaseCombatWeapon* CBaseEntity::GetActiveBaseCombatWeapon() {
static int m_hActiveWeapon = GET_NETVAR("DT_BaseCombatCharacter", "m_hActiveWeapon");
DWORD weaponHandle = *(DWORD*)((DWORD)this + (DWORD)m_hActiveWeapon);
return (CBaseCombatWeapon*)(Interfaces.pEntList->GetClientEntity(weaponHandle & 0xFFF));
}
const char* ConVar::GetName()
{
typedef char*(__thiscall* GetNameFn)(void*);
return getvfunc<GetNameFn>(this, ConVar_GetName)(this);
}
const char* ConVar::GetBaseName()
{
typedef char*(__thiscall* GetNameFn)(void*);
return getvfunc<GetNameFn>(this, ConVar_GetBaseName)(this);
}
void ConVar::SetValue(const char* value)
{
typedef void(__thiscall* SetValueFn)(void*, const char*);
return getvfunc<SetValueFn>(this, ConVar_SetString)(this, value);
}
void ConVar::SetValue(float value)
{
typedef void(__thiscall* SetValueFn)(void*, float);
return getvfunc<SetValueFn>(this, ConVar_SetFloat)(this, value);
}
void ConVar::SetValue(int value)
{
typedef void(__thiscall* SetValueFn)(void*, int);
return getvfunc<SetValueFn>(this, ConVar_SetInt)(this, value);
}
CBaseCombatWeapon* GetActiveBaseCombatWeapon();
bool SetupBones(matrix3x4 *pBoneToWorldOut, int nMaxBones, int boneMask, float currentTime) {
static DWORD m_nWritableBones = GET_NETVAR("DT_BaseAnimating", "m_nForceBone");
static DWORD m_dwOcclusionArray = *(uintptr_t*)(Utils.PatternSearch("client.dll", (PBYTE) "\xA1\x00\x00\x00\x00\x8B\xB7\x00\x00\x00\x00\x89\x75\xF8", "x????xx????xxx", 0, 0) + 0x1);
static DWORD m_bDidCheckForOcclusion = *(uintptr_t*)(Utils.PatternSearch("client.dll", (PBYTE) "\xA1\x00\x00\x00\x00\x8B\xB7\x00\x00\x00\x00\x89\x75\xF8", "x????xx????xxx", 0, 0) + 0x7);
*(int*)((uintptr_t)this + m_nWritableBones) = 0;
*(int*)((uintptr_t)this + m_bDidCheckForOcclusion) = reinterpret_cast< int* >(m_dwOcclusionArray)[1];
__asm
{
mov edi, this
lea ecx, dword ptr ds : [edi + 0x4]
mov edx, dword ptr ds : [ecx]
push currentTime
push boneMask
push nMaxBones
push pBoneToWorldOut
call dword ptr ds : [edx + 0x34]
}
}

void CBaseCombatWeapon::UpdateAccuracyPenalty() {
typedef void(__thiscall* OriginalFn)(void*);
getvfunc<OriginalFn>(this, 485)(this);
}
float& CBaseCombatWeapon::GetAccuracyPenalty() {
static int m_fAccuracyPenalty = GET_NETVAR(("DT_WeaponCSBase"), ("m_fAccuracyPenalty"));
return *(float*)((DWORD)this + m_fAccuracyPenalty);
}
float CBaseCombatWeapon::GetInaccuracy() {
if (!this)
return 0.f;
typedef float(__thiscall* OriginalFn)(void*);
return getvfunc<OriginalFn>(this, 483)(this);
}
float CBaseCombatWeapon::GetSpread() {
if (!this)
return 0.f;
typedef float(__thiscall* OriginalFn)(void*);
return getvfunc<OriginalFn>(this, 484)(this);//479
}
float CBaseCombatWeapon::GetWeaponCone() {
if (!this)
return 0.f;
typedef float(__thiscall* OriginalFn)(void*);
return getvfunc<OriginalFn>(this, 482)(this);
}

CCSWeaponInfo* GetCSWpnData()
{
if (!this) return nullptr;
typedef CCSWeaponInfo*(__thiscall* OriginalFn)(void*);
return getvfunc<OriginalFn>(this, 456)(this);
}
VirusTotal не нужен ибо сурцы
 
Последнее редактирование:
собственно C+P все умеют, enjoy

void InitialiseSDK()
{
DWORD p = Utils.PFindPattern("client.dll", "8B 0D ? ? ? ? FF 75 08 8B 01 FF 50 64");
if (p)
{
pClientMode = **(DWORD***)(p + 2);
pClientMode = pClientMode;
}
cout << iblue << "pClientMode" << igreen << ": 0x" << pClientMode << white << endl;
//PDWORD rank = Utils.PFindPattern("client.dll", "8B EC 8B 0D ? ? ? ? 68") - 1;
CreateInterfaceFn fnEngineFactory = (CreateInterfaceFn)GetProcAddress(GetModuleHandleA("engine.dll"), "CreateInterface");
CreateInterfaceFn AppSystemFactory = (CreateInterfaceFn)GetProcAddress((HMODULE)GetModuleHandle("vguimatsurface.dll"), "CreateInterface");//**(PDWORD*)//(dwInitAddress + 0x3D);
CreateInterfaceFn MaterialSystemFactory = (CreateInterfaceFn)GetProcAddress((HMODULE)GetModuleHandle("materialsystem.dll"), "CreateInterface");
CreateInterfaceFn ClientFactory = (CreateInterfaceFn)GetProcAddress((HMODULE)GetModuleHandle("client.dll"), "CreateInterface");
CreateInterfaceFn StdFactory = (CreateInterfaceFn)GetProcAddress((HMODULE)GetModuleHandle("vstdlib.dll"), "CreateInterface");
CreateInterfaceFn VGUISurfaceFactory= (CreateInterfaceFn)GetProcAddress((HMODULE)GetModuleHandle("vgui2.dll"), "CreateInterface");
//CreateInterfaceFn VGUI2Factory = (CreateInterfaceFn)GetProcAddress((HMODULE)GetModuleHandle("vgui2.dll"), "CreateInterface");
CreateInterfaceFn PhysFactory = (CreateInterfaceFn)GetProcAddress((HMODULE)GetModuleHandle("vphysics.dll"), "CreateInterface");
typedef CGlowObjectManager*(__thiscall* GetGlowObjectManager_t)(void);
static GetGlowObjectManager_t GetGlowObjectManager = (GetGlowObjectManager_t)Utils.PFindPattern("client.dll", "A1 ? ? ? ? A8 01 75 4B");
g_pGlowObjectManager = GetGlowObjectManager();
cout << iblue << "g_pGlowObjectManager:" << igreen<< ": 0x" << g_pGlowObjectManager << white << endl;
pSurface = (ISurface*)GetInterfacePtr("VGUI_Surface", "g_pSurface", AppSystemFactory);
pPanel = (IPanel*)GetInterfacePtr("VGUI_Panel", "g_pPanel", VGUISurfaceFactory);
//pClient = (HLCLient*)GetPointer("client.dll", "VClient018");
pClient = (HLCLient*)GetInterfacePtr("VClient", "g_pClient", ClientFactory);
pEngine = (CEngineClient*)GetInterfacePtr("VEngineClient", "g_pEngine", fnEngineFactory);
pEntList = (CEntityList*)GetInterfacePtr("VClientEntityList", "g_pEntList", ClientFactory);
g_pDebugOverlay = (CDebugOverlay*)GetInterfacePtr("VDebugOverlay", "g_pDebugOverlay", fnEngineFactory);
pTrace = (IEngineTrace*)GetInterfacePtr("EngineTraceClient", "g_pEngineTraceClient", fnEngineFactory);
g_pModelInfo = (IVModelInfo*)GetInterfacePtr("VModelInfoClient", "g_pModelInfo", fnEngineFactory);
g_pModelRender = (IVModelRender*)GetInterfacePtr("VEngineModel", "g_ModelRender", fnEngineFactory);
g_pPred = (CPrediction*)GetInterfacePtr("VClientPrediction", "g_pPred", ClientFactory);
g_pGameMovement = (CGameMovement*)GetInterfacePtr("GameMovement", "g_pGameMovement", ClientFactory);
pPhysProps = (IPhysicsSurfaceProps*)GetInterfacePtr("VPhysicsSurfaceProps", "g_pPhysprops", PhysFactory);
pMaterialSystem = (IMaterialSystem*)GetInterfacePtr("VMaterialSystem", "pMaterialSystem", MaterialSystemFactory);
g_pRenderView = (IVRenderView*)GetInterfacePtr("VEngineRenderView", "g_pRenderView", fnEngineFactory);
pGlobalVars = *(CGlobalVars**)(((*(PDWORD*)pClient)[0]) + 0x1B);
pGlobalVars = (CGlobalVars*)*(PDWORD)pGlobalVars;
cout << iblue << "pGlobalVars " << igreen << ": 0x" << pGlobalVars << white << endl;
pInput = *(CInput**)((*(DWORD**)pClient)[15] + 0x1);//[15] + 0x1)
g_ICVars = (ICVar*)GetInterfacePtr("VEngineCvar", "g_pCVars", StdFactory);
//g_GameEventMgr = (IGameEventManager2*)GetInterfacePtr("GAMEEVENTSMANAGER", "g_pGameEventsMgr", fnEngineFactory);
g_GameEventMgr = (IGameEventManager2*)fnEngineFactory("GAMEEVENTSMANAGER002", NULL);
// cout << iblue << "g_pRenderView:" << igreen << ": 0x" << g_pRenderView << white << endl;
}
private:
bool InitialisedSuccessfuly = false;
public:
ISurface* pSurface;
//DWORD* pClientMode;
DWORD* pClientMode;
IPanel* pPanel;
HLCLient* pClient;
CEntityList* pEntList;
CEngineClient* pEngine;
CInput* pInput;
CGlowObjectManager* g_pGlowObjectManager;
IVModelInfo* g_pModelInfo;
IVModelRender* g_pModelRender;
CPrediction* g_pPred;
CGameMovement* g_pGameMovement;
IMoveHelper* g_pMoveHelper;
CGlobalVars* pGlobalVars;
IEngineTrace* pTrace;
IGameEventManager2* pGameEventManager;
IPhysicsSurfaceProps* pPhysProps;
CDebugOverlay* g_pDebugOverlay;
IMaterialSystem* pMaterialSystem;
IVRenderView* g_pRenderView;
ICVar* g_ICVars;
IGameEventManager2* g_GameEventMgr;
};
extern CInterfaces Interfaces;

#include "Math.h"
#include "checksum_crc.h"
#include "dt_recv2.h"
#include "NetVars.h"
#include "ISurface.h"
#include "CClient.h"
#include "EngineClient.h"
#include "Entitys.h"
#include "EntList.h"
#include "DebugOverlay.h"
#include "CTrace.h"
#include "IVRenderView.h"
#include "CModelInfo.h"
#include "CInput.h"
#include "ICVars.h"
#include "CGlobleVars.h"
#include "CGameMovement.h"
#include "CPred.h"
#include "CGlow.h"
void UTIL_TracePos(Ray_t &ray, unsigned int mask, const IHandleEntity *ignore, int collisionGroup, trace_t *ptr);
void UTIL_TraceLine(Vector& vecAbsStart, Vector& vecAbsEnd, unsigned int mask, const IHandleEntity *ignore, int collisionGroup, trace_t *ptr);
void UTIL_ClipTraceToPlayers(Vector& vecAbsStart, Vector& vecAbsEnd, unsigned int mask, ITraceFilter* filter, trace_t* tr);
bool TraceToExit(Vector& end, trace_t& tr, Vector start, Vector vEnd, trace_t* trace);
/* FIRE BULLET DATA */
struct FireBulletData
{
FireBulletData(const Vector &eye_pos)
: src(eye_pos)
{
}
Vector src;
trace_t enter_trace;
Vector direction;
CTraceFilter filter;
float trace_length;
float trace_length_remaining;
float current_damage;
int penetrate_count;
};
/* HITGROUP DEFINITIONS */
#define HITGROUP_GENERIC 0
#define HITGROUP_HEAD 1
#define HITGROUP_CHEST 2
#define HITGROUP_STOMACH 3
#define HITGROUP_LEFTARM 4
#define HITGROUP_RIGHTARM 5
#define HITGROUP_LEFTLEG 6
#define HITGROUP_RIGHTLEG 7
#define HITGROUP_GEAR 10
typedef bool(*ShouldHitFunc_t)(IHandleEntity *pHandleEntity, int contentsMask);
enum class CSGOClassID
{
CAK47 = 1,
CBaseAnimating = 2,
CBaseAnimatingOverlay = 3,
CBaseAttributableItem = 4,
CBaseButton = 5,
CBaseCombatCharacter = 6,
CBaseCombatWeapon = 7,
CBaseCSGrenade = 8,
CBaseCSGrenadeProjectile = 9,
CBaseDoor = 10,
CBaseEntity = 11,
CBaseFlex = 12,
CBaseGrenade = 13,
CBaseParticleEntity = 14,
CBasePlayer = 15,
CBasePropDoor = 16,
CBaseTeamObjectiveResource = 17,
CBaseTempEntity = 18,
CBaseToggle = 19,
CBaseTrigger = 20,
CBaseViewModel = 21,
CBaseVPhysicsTrigger = 22,
CBaseWeaponWorldModel = 23,
CBeam = 24,
CBeamSpotlight = 25,
CBoneFollower = 26,
CBreakableProp = 27,
CBreakableSurface = 28,
CC4 = 29,
CCascadeLight = 30,
CChicken = 31,
CColorCorrection = 32,
CColorCorrectionVolume = 33,
CCSGameRulesProxy = 34,
CCSPlayer = 35,
CCSPlayerResource = 36,
CCSRagdoll = 37,
CCSTeam = 38,
CDEagle = 39,
CDecoyGrenade = 40,
CDecoyProjectile = 41,
CDynamicLight = 42,
CDynamicProp = 43,
CEconEntity = 44,
CEconWearable = 45,
CEmbers = 46,
CEntityDissolve = 47,
CEntityFlame = 48,
CEntityFreezing = 49,
CEntityParticleTrail = 50,
CEnvAmbientLight = 51,
CEnvDetailController = 52,
CEnvDOFController = 53,
CEnvParticleScript = 54,
CEnvProjectedTexture = 55,
CEnvQuadraticBeam = 56,
CEnvScreenEffect = 57,
CEnvScreenOverlay = 58,
CEnvTonemapController = 59,
CEnvWind = 60,
CFEPlayerDecal = 61,
CFireCrackerBlast = 62,
CFireSmoke = 63,
CFireTrail = 64,
CFish = 65,
CFlashbang = 66,
CFogController = 67,
CFootstepControl = 68,
CFunc_Dust = 69,
CFunc_LOD = 70,
CFuncAreaPortalWindow = 71,
CFuncBrush = 72,
CFuncConveyor = 73,
CFuncLadder = 74,
CFuncMonitor = 75,
CFuncMoveLinear = 76,
CFuncOccluder = 77,
CFuncReflectiveGlass = 78,
CFuncRotating = 79,
CFuncSmokeVolume = 80,
CFuncTrackTrain = 81,
CGameRulesProxy = 82,
CHandleTest = 83,
CHEGrenade = 84,
CHostage = 85,
CHostageCarriableProp = 86,
CIncendiaryGrenade = 87,
CInferno = 88,
CInfoLadderDismount = 89,
CInfoOverlayAccessor = 90,
CItem_Healthshot = 91,
CItemDogtags = 92,
CKnife = 93,
CKnifeGG = 94,
CLightGlow = 95,
CMaterialModifyControl = 96,
CMolotovGrenade = 97,
CMolotovProjectile = 98,
CMovieDisplay = 99,
CParticleFire = 100,
CParticlePerformanceMonitor = 101,
CParticleSystem = 102,
CPhysBox = 103,
CPhysBoxMultiplayer = 104,
CPhysicsProp = 105,
CPhysicsPropMultiplayer = 106,
CPhysMagnet = 107,
CPlantedC4 = 108,
CPlasma = 109,
CPlayerResource = 110,
CPointCamera = 111,
CPointCommentaryNode = 112,
CPointWorldText = 113,
CPoseController = 114,
CPostProcessController = 115,
CPrecipitation = 116,
CPrecipitationBlocker = 117,
CPredictedViewModel = 118,
CProp_Hallucination = 119,
CPropDoorRotating = 120,
CPropJeep = 121,
CPropVehicleDriveable = 122,
CRagdollManager = 123,
CRagdollProp = 124,
CRagdollPropAttached = 125,
CRopeKeyframe = 126,
CSCAR17 = 127,
CSceneEntity = 128,
CSensorGrenade = 129,
CSensorGrenadeProjectile = 130,
CShadowControl = 131,
CSlideshowDisplay = 132,
CSmokeGrenade = 133,
CSmokeGrenadeProjectile = 134,
CSmokeStack = 135,
CSpatialEntity = 136,
CSpotlightEnd = 137,
CSprite = 138,
CSpriteOriented = 139,
CSpriteTrail = 140,
CStatueProp = 141,
CSteamJet = 142,
CSun = 143,
CSunlightShadowControl = 144,
CTeam = 145,
CTeamplayRoundBasedRulesProxy = 146,
CTEArmorRicochet = 147,
CTEBaseBeam = 148,
CTEBeamEntPoint = 149,
CTEBeamEnts = 150,
CTEBeamFollow = 151,
CTEBeamLaser = 152,
CTEBeamPoints = 153,
CTEBeamRing = 154,
CTEBeamRingPoint = 155,
CTEBeamSpline = 156,
CTEBloodSprite = 157,
CTEBloodStream = 158,
CTEBreakModel = 159,
CTEBSPDecal = 160,
CTEBubbles = 161,
CTEBubbleTrail = 162,
CTEClientProjectile = 163,
CTEDecal = 164,
CTEDust = 165,
CTEDynamicLight = 166,
CTEEffectDispatch = 167,
CTEEnergySplash = 168,
CTEExplosion = 169,
CTEFireBullets = 170,
CTEFizz = 171,
CTEFootprintDecal = 172,
CTEFoundryHelpers = 173,
CTEGaussExplosion = 174,
CTEGlowSprite = 175,
CTEImpact = 176,
CTEKillPlayerAttachments = 177,
CTELargeFunnel = 178,
CTEMetalSparks = 179,
CTEMuzzleFlash = 180,
CTEParticleSystem = 181,
CTEPhysicsProp = 182,
CTEPlantBomb = 183,
CTEPlayerAnimEvent = 184,
CTEPlayerDecal = 185,
CTEProjectedDecal = 186,
CTERadioIcon = 187,
CTEShatterSurface = 188,
CTEShowLine = 189,
CTesla = 190,
CTESmoke = 191,
CTESparks = 192,
CTESprite = 193,
CTESpriteSpray = 194,
CTest_ProxyToggle_Networkable = 194,
CTestTraceline = 196,
CTEWorldDecal = 197,
CTriggerPlayerMovement = 198,
CTriggerSoundOperator = 199,
CVGuiScreen = 200,
CVoteController = 201,
CWaterBullet = 202,
CWaterLODControl = 203,
CWeaponAug = 204,
CWeaponAWP = 205,
CWeaponBaseItem = 206,
CWeaponBizon = 207,
CWeaponCSBase = 208,
CWeaponCSBaseGun = 209,
CWeaponCycler = 210,
CWeaponElite = 211,
CWeaponFamas = 212,
CWeaponFiveSeven = 213,
CWeaponG3SG1 = 214,
CWeaponGalil = 215,
CWeaponGalilAR = 216,
CWeaponGlock = 217,
CWeaponHKP2000 = 218,
CWeaponM249 = 219,
CWeaponM3 = 220,
CWeaponM4A1 = 221,
CWeaponMAC10 = 222,
CWeaponMag7 = 223,
CWeaponMP5Navy = 224,
CWeaponMP7 = 225,
CWeaponMP9 = 226,
CWeaponNegev = 227,
CWeaponNOVA = 228,
CWeaponP228 = 229,
CWeaponP250 = 230,
CWeaponP90 = 231,
CWeaponSawedoff = 232,
CWeaponSCAR20 = 233,
CWeaponScout = 234,
CWeaponSG550 = 235,
CWeaponSG552 = 236,
CWeaponSG556 = 237,
CWeaponSSG08 = 238,
CWeaponTaser = 239,
CWeaponTec9 = 240,
CWeaponTMP = 241,
CWeaponUMP45 = 242,
CWeaponUSP = 243,
CWeaponXM1014 = 244,
CWorld = 245,
DustTrail = 246,
MovieExplosion = 247,
ParticleSmokeGrenade = 248,
RocketTrail = 249,
SmokeTrail = 250,
SporeExplosion = 251,
SporeTrail = 252
};
#include "stdafx.h"
#include <unordered_map>
//------------------------------------------------------------
// Classes to help the parsing of the netvars
//------------------------------------------------------------
#pragma region Helper classes
typedef unordered_map<string, unique_ptr<NetvarTable>> TableMap;
typedef unordered_map<string, uint32_t> PropMap;
typedef unordered_map<string, unique_ptr<NetvarTable>>::iterator Iter;
struct NetvarTable {
TableMap m_ChildTables;
PropMap m_ChildProps;
uint32_t m_uOffset = 0;
bool is_empty() {

return m_ChildTables.size() == 0 && m_ChildProps.size() == 0;
}
void insert_table(string&& name, unique_ptr<NetvarTable>&& pTable) {

m_ChildTables.emplace(name, std::move(pTable));
}
void insert_prop(string&& name, uint32_t offset) {

m_ChildProps.emplace(name, offset);
}
};
class NetvarDatabase {
public:
TableMap m_Tables;
void insert(string&& name, unique_ptr<NetvarTable>&& pTable) {

m_Tables.emplace(name, std::move(pTable));
}
Iter find(const string& key) {
return m_Tables.find(key);

}
Iter begin() { return m_Tables.begin(); }
Iter end() { return m_Tables.end(); }
};
#pragma endregion
//------------------------------------------------------------
// Netvar Manager
//------------------------------------------------------------
CNetvarManager* CNetvarManager::instance = nullptr;
CNetvarManager::CNetvarManager() {

}
CNetvarManager::~CNetvarManager() {

}
void CNetvarManager::CreateDatabase() {
m_pDatabase = make_unique<NetvarDatabase>();
auto pClient = Interfaces.pClient;

if (pClient) {

for (auto pClass = pClient->GetAllClasses(); pClass; pClass = pClass->m_pNext) {

if (pClass->m_pRecvTable) {

//Insert new entry on the database
m_pDatabase->insert(
pClass->m_pRecvTable->m_pNetTableName,
InternalLoadTable(pClass->m_pRecvTable, 0));
m_tableCount++;
}
}
}
}
void CNetvarManager::Dump(std::ostream& output) {
for (auto& entry : *m_pDatabase) {
auto& pTable = entry.second;
if (pTable->is_empty())
continue;
output << entry.first << std::endl;
Dump(output, *pTable, 1);
output << "==============================================================" << std::endl;
}
}
void CNetvarManager::Dump(const std::string& file) {
std::ofstream output(file);
Dump(output);
}
//------------------------------------------------------------
// Internal methods below. This is where the real work is done
//------------------------------------------------------------
unique_ptr<NetvarTable> CNetvarManager::InternalLoadTable(RecvTable* pRecvTable, uint32_t offset) {
auto pTable = make_unique<NetvarTable>();
pTable->m_uOffset = offset;

for (auto i = 0; i < pRecvTable->m_nProps; ++i) {
auto pProp = &pRecvTable->m_pProps;

//Skip trash array items
if (!pProp || isdigit(pProp->m_pVarName[0])) continue;
//We dont care about the base class
if (strcmp(pProp->m_pVarName, "baseclass") == 0) continue;

//If this prop is a table
if (pProp->m_RecvType == SendPropType::DPT_DataTable && //If it is a table AND
pProp->m_pDataTable != NULL && //The DataTable isnt null AND
pProp->m_pDataTable->m_pNetTableName[0] == 'D') { //The Table name starts with D (this is because there are some shitty nested
//tables that we want to skip, and those dont start with D)

//Load the table pointed by pProp->m_pDataTable and insert it
pTable->insert_table(pProp->m_pVarName, InternalLoadTable(pProp->m_pDataTable, pProp->m_Offset));
}
else {
pTable->insert_prop(pProp->m_pVarName, pProp->m_Offset);
}
m_netvarCount++;
}
return pTable;
}
void CNetvarManager::Dump(std::ostream& output, NetvarTable& table, int level) {
char line[512] = "";
char fmt[512] = "";

sprintf(fmt, "%%-%ds: 0x%%08X\n", 50 - level * 4);

for (auto& prop : table.m_ChildProps) {
for (int i = 0; i < level; i++) {
if (i != level - 1) {
output << " ";
}
else {
output << "|___";
}
}
sprintf(line, fmt, prop.first.c_str(), prop.second + table.m_uOffset);
output << line;
}
for (auto& child : table.m_ChildTables) {
for (int i = 0; i < level; i++) {
if (i != level - 1) {
output << " ";
}
else {
output << "|___";
}
}
sprintf(line, fmt, child.first.c_str(), child.second->m_uOffset);
output << line;
Dump(output, *child.second, level + 1);
}
}
uint32_t CNetvarManager::GetOffset(const std::string& szTableName, const std::initializer_list<std::string>& props) {
auto table = m_pDatabase->find(szTableName);
if (table == m_pDatabase->end()) return -1;

int tableOffset = table->second->m_uOffset;
if (props.size() == 0) return tableOffset;

int totalOffset = tableOffset;
NetvarTable* curTable = table->second.get();

for (auto i = 0; i < props.size(); i++) {
std::string propName = *(props.begin() + i);

if (i + 1 < props.size()) {//This index is not the last one
auto childTable = curTable->m_ChildTables.find(propName);
if (childTable == curTable->m_ChildTables.end()) {
throw std::runtime_error("Prop not found");
}
totalOffset += childTable->second->m_uOffset;
curTable = childTable->second.get();
}
else { //Last index, retrieve prop instead of table
auto childProp = curTable->m_ChildProps.find(propName);
if (childProp == curTable->m_ChildProps.end()) {
throw std::runtime_error("Prop not found");
}
totalOffset += childProp->second;
}
}

return totalOffset;
}
void UTIL_TraceLine( Vector& vecAbsStart, Vector& vecAbsEnd, unsigned int mask, const IHandleEntity *ignore, int collisionGroup, trace_t *ptr )
{
Ray_t ray;
ray.Init(vecAbsStart, vecAbsEnd);
CTraceFilter traceFilter;
traceFilter.pSkip = (void*)ignore;
Interfaces.pTrace->TraceRay(ray, mask, &traceFilter, ptr);
}
void UTIL_TracePos(Ray_t &ray, unsigned int mask, const IHandleEntity *ignore, int collisionGroup, trace_t *ptr)
{
CTraceFilter traceFilter;
traceFilter.pSkip = (void*)ignore;
Interfaces.pTrace->TraceRay(ray, mask, &traceFilter, ptr);
}
float DistanceToRay(const Vector &pos, const Vector &rayStart, const Vector &rayEnd, float *along = NULL, Vector *pointOnRay = NULL)
{
Vector to = pos - rayStart;
Vector dir = rayEnd - rayStart;
float length = dir.NormalizeInPlace();
float rangeAlong = g_Math.DotProduct(dir, to);
if (along)
{
*along = rangeAlong;
}
float range;
if (rangeAlong < 0.0f)
{
// off start point
range = -(pos - rayStart).Length();
if (pointOnRay)
{
*pointOnRay = rayStart;
}
}
else if (rangeAlong > length)
{
// off end point
range = -(pos - rayEnd).Length();
if (pointOnRay)
{
*pointOnRay = rayEnd;
}
}
else // within ray bounds
{
Vector onRay = rayStart + (dir.operator*(rangeAlong));
range = (pos - onRay).Length();
if (pointOnRay)
{
*pointOnRay = onRay;
}
}
return range;
}
void UTIL_ClipTraceToPlayers( Vector& vecAbsStart, Vector& vecAbsEnd, unsigned int mask, ITraceFilter* filter, trace_t* tr)
{
trace_t playerTrace;
Ray_t ray;
float smallestFraction = tr->fraction;
const float maxRange = 60.0f;
ray.Init(vecAbsStart, vecAbsEnd);
for (int k = 1; k <= Interfaces.pGlobalVars->maxClients; ++k)
{
CBaseEntity* player = Interfaces.pEntList->GetClientEntity(k);
if (!player || !player->isAlive())
continue;
if (player->IsDormant())
continue;
if (filter && filter->ShouldHitEntity(player, mask) == false)
continue;
float range = DistanceToRay(player->WorldSpaceCenter(), vecAbsStart, vecAbsEnd);
if (range < 0.0f || range > maxRange)
continue;
Interfaces.pTrace->ClipRayToEntity(ray, mask | CONTENTS_HITBOX, player, &playerTrace);
if (playerTrace.fraction < smallestFraction)
{
// we shortened the ray - save off the trace
*tr = playerTrace;
smallestFraction = playerTrace.fraction;
}
}
}
bool TraceToExit(Vector& end, trace_t& tr, Vector start, Vector vEnd, trace_t* trace)
{
typedef bool(__fastcall* TraceToExitFn)(Vector&, trace_t&, float, float, float, float, float, float, trace_t*);
static DWORD TraceToExit = Utils.PatternSearch("client.dll", (BYTE*)"\x55\x8B\xEC\x83\xEC\x30\xF3\x0F\x10\x75", "xxxxxxxxxx", NULL, NULL);
if (!TraceToExit)
return false;
float start_y = start.y, start_z = start.z, start_x = start.x, dir_y = vEnd.y, dir_x = vEnd.x, dir_z = vEnd.z;
_asm
{
push trace
push dir_z
push dir_y
push dir_x
push start_z
push start_y
push start_x
mov edx, tr
mov ecx, end
call TraceToExit
add esp, 0x1C
}
}
CBaseCombatWeapon* CBaseEntity::GetActiveBaseCombatWeapon() {
static int m_hActiveWeapon = GET_NETVAR("DT_BaseCombatCharacter", "m_hActiveWeapon");
DWORD weaponHandle = *(DWORD*)((DWORD)this + (DWORD)m_hActiveWeapon);
return (CBaseCombatWeapon*)(Interfaces.pEntList->GetClientEntity(weaponHandle & 0xFFF));
}
const char* ConVar::GetName()
{
typedef char*(__thiscall* GetNameFn)(void*);
return getvfunc<GetNameFn>(this, ConVar_GetName)(this);
}
const char* ConVar::GetBaseName()
{
typedef char*(__thiscall* GetNameFn)(void*);
return getvfunc<GetNameFn>(this, ConVar_GetBaseName)(this);
}
void ConVar::SetValue(const char* value)
{
typedef void(__thiscall* SetValueFn)(void*, const char*);
return getvfunc<SetValueFn>(this, ConVar_SetString)(this, value);
}
void ConVar::SetValue(float value)
{
typedef void(__thiscall* SetValueFn)(void*, float);
return getvfunc<SetValueFn>(this, ConVar_SetFloat)(this, value);
}
void ConVar::SetValue(int value)
{
typedef void(__thiscall* SetValueFn)(void*, int);
return getvfunc<SetValueFn>(this, ConVar_SetInt)(this, value);
}
CBaseCombatWeapon* GetActiveBaseCombatWeapon();
bool SetupBones(matrix3x4 *pBoneToWorldOut, int nMaxBones, int boneMask, float currentTime) {
static DWORD m_nWritableBones = GET_NETVAR("DT_BaseAnimating", "m_nForceBone");
static DWORD m_dwOcclusionArray = *(uintptr_t*)(Utils.PatternSearch("client.dll", (PBYTE) "\xA1\x00\x00\x00\x00\x8B\xB7\x00\x00\x00\x00\x89\x75\xF8", "x????xx????xxx", 0, 0) + 0x1);
static DWORD m_bDidCheckForOcclusion = *(uintptr_t*)(Utils.PatternSearch("client.dll", (PBYTE) "\xA1\x00\x00\x00\x00\x8B\xB7\x00\x00\x00\x00\x89\x75\xF8", "x????xx????xxx", 0, 0) + 0x7);
*(int*)((uintptr_t)this + m_nWritableBones) = 0;
*(int*)((uintptr_t)this + m_bDidCheckForOcclusion) = reinterpret_cast< int* >(m_dwOcclusionArray)[1];
__asm
{
mov edi, this
lea ecx, dword ptr ds : [edi + 0x4]
mov edx, dword ptr ds : [ecx]
push currentTime
push boneMask
push nMaxBones
push pBoneToWorldOut
call dword ptr ds : [edx + 0x34]
}
}

void CBaseCombatWeapon::UpdateAccuracyPenalty() {
typedef void(__thiscall* OriginalFn)(void*);
getvfunc<OriginalFn>(this, 485)(this);
}
float& CBaseCombatWeapon::GetAccuracyPenalty() {
static int m_fAccuracyPenalty = GET_NETVAR(("DT_WeaponCSBase"), ("m_fAccuracyPenalty"));
return *(float*)((DWORD)this + m_fAccuracyPenalty);
}
float CBaseCombatWeapon::GetInaccuracy() {
if (!this)
return 0.f;
typedef float(__thiscall* OriginalFn)(void*);
return getvfunc<OriginalFn>(this, 483)(this);
}
float CBaseCombatWeapon::GetSpread() {
if (!this)
return 0.f;
typedef float(__thiscall* OriginalFn)(void*);
return getvfunc<OriginalFn>(this, 484)(this);//479
}
float CBaseCombatWeapon::GetWeaponCone() {
if (!this)
return 0.f;
typedef float(__thiscall* OriginalFn)(void*);
return getvfunc<OriginalFn>(this, 482)(this);
}

CCSWeaponInfo* GetCSWpnData()
{
if (!this) return nullptr;
typedef CCSWeaponInfo*(__thiscall* OriginalFn)(void*);
return getvfunc<OriginalFn>(this, 456)(this);
}
Епана, ты сделал мой день, жаль лукас не могу поставить.
 
Пожалуйста поставь хайд большой, а то новый pbcheat не хотим.
Спасибо заране
И да 2 причина умья в подпись
 
не знаю про 100 ошибок, у меня все собирается и инжектится без проблем
Мб утебя старая версия или новая, так не получится, тогда скажи какая версия утебя или скинь под хайд
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
dinqo? Бомжо софт забытая хуйня, особа хайд можно вообще не ставить, для рагед киддо сверху(tweetka288) , можешь поставить.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
просто ор
заебал у меня всё пиздить!
 
я ему дал, а он симпы набивает пидор!
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
просто ор
заебал у меня всё пиздить!
 
я ему дал, а он симпы набивает пидор!
погоди, ты тот школяр, кто в вк просил помочь пофиксить?
 
Передумал хайд не поставь, все равно сто ошибок
Вы хоть сурс указывайте который фиксите :D
 
Последнее редактирование:
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Назад
Сверху Снизу