public static int ScanPattern(string mModuleName, string mPattern, int Offset = 0, int Extra = 0, bool ModuleSubract = false) { IntPtr hProcess = CylMem.hProcess.Handle; ProcessModule SelectedModule = null; foreach (ProcessModule module in CylMem.hProcess.Modules) { if (Path.GetFileName(module.FileName) == mModuleName) { SelectedModule = module; } } if (SelectedModule == null) { throw new Exception("Selected Module is Null !"); } var scanner = new SigScan(hProcess); scanner.SelectModule(SelectedModule.BaseAddress, SelectedModule.ModuleMemorySize); int Scaned = (int)scanner.FindPattern(mPattern, out long time); if (Scaned != 0) { var Scan = CylMem.ReadInt(Scaned + Offset) + Extra; if (ModuleSubract) { Scan -= (Int32)SelectedModule.BaseAddress; } return(Scan); } else { return(0); } }
public static int GetStringHash(string name) { CharCodes codes = CylMem.CRead <CharCodes>(Modules.VSTDLibDLLAdress + convar_name_hash_table); int v2 = 0; int v3 = 0; for (int i = 0; i < name.Length; i += 2) { v3 = codes.tab[v2 ^ char.ToUpper(name[i])]; if (i + 1 == name.Length) { break; } v2 = codes.tab[v3 ^ char.ToUpper(name[i + 1])]; } return(v2 | (v3 << 8)); }
public static void ScanTable(IntPtr table, int level, int offset, string name) { var count = CylMem.ReadInt((int)table + 0x4); for (var i = 0; i < count; i++) { var propID = CylMem.ReadInt((int)table) + i * 0x3C; var propName = CylMem.ReadString(CylMem.ReadInt(propID)); var isBaseClass = propName.IndexOf("baseclass") == 0; var propOffset = offset + CylMem.ReadInt(propID + 0x2C); if (!isBaseClass) { if (!Table.ContainsKey(name)) { Table.Add(name, new Dictionary <string, int>()); } if (!Table[name].ContainsKey(propName)) { Table[name].Add(propName, propOffset); } } var child = (IntPtr)CylMem.ReadInt(propID + 0x28); if (child == IntPtr.Zero) { continue; } if (!isBaseClass) { --level; } ScanTable(child, ++level, propOffset, name); } }
public static void Init() { var _firstclass = (IntPtr)SigScan.ScanPattern(Managers.Modules.ClientDLLName, "A1 ? ? ? ? C3 CC CC CC CC CC CC CC CC CC CC A1 ? ? ? ? B9", 1, 0, false); // dwGetAllClasses _firstclass = (IntPtr)CylMem.ReadInt((int)_firstclass); if (_firstclass == IntPtr.Zero) { //Environment.Exit(-1); } do { var table = (IntPtr)CylMem.ReadInt((int)_firstclass + 0xC); if (table != IntPtr.Zero) { var table_name = CylMem.ReadString(CylMem.ReadInt((int)table + 0xC)); ScanTable(table, 0, 0, table_name); } _firstclass = (IntPtr)CylMem.ReadInt((int)_firstclass + 0x10); } while (_firstclass != IntPtr.Zero); }
public static int GetConVarAddress(string name) { var hash = GetStringHash(name); int CvarEngine = CylMem.ReadInt(Modules.VSTDLibDLLAdress + interface_engine_cvar); int Pointer = CylMem.ReadInt(CylMem.ReadInt(CvarEngine + 0x34) + ((byte)hash * 4)); Encoding enc = Encoding.UTF8; while ((IntPtr)Pointer != IntPtr.Zero) { if (CylMem.ReadInt(Pointer) == hash) { int ConVarPointer = CylMem.ReadInt(Pointer + 0x4); if (CylMem.ReadString(CylMem.ReadInt(ConVarPointer + 0xC)) == name) { return(ConVarPointer); } } Pointer = CylMem.ReadInt(Pointer + 0xC); } return((int)IntPtr.Zero); }
public void ClearCallbacks() { CylMem.WriteInt(pThis + 0x44 + 0xC, 0); }