public PyObject( Int64 BaseAddress, IMemoryReader MemoryReader) { this.BaseAddress = BaseAddress; ob_refcnt = MemoryReader.ReadUInt32(BaseAddress + Offset_ob_refcnt); ob_type = MemoryReader.ReadUInt32(BaseAddress + Offset_ob_type); }
public PyObjectWithRefToDictAt8( Int64 BaseAddress, IMemoryReader MemoryReader) : base(BaseAddress, MemoryReader) { ref_dict = MemoryReader.ReadUInt32(BaseAddress + Offset_dict); }
public PyObjectVar( Int64 BaseAddress, IMemoryReader MemoryReader) : base(BaseAddress, MemoryReader) { ob_size = MemoryReader.ReadUInt32(BaseAddress + Offset_ob_size); }
public PyUnicode( Int64 BaseAddress, IMemoryReader MemoryReader) : base(BaseAddress, MemoryReader) { Length = (int)MemoryReader.ReadInt(BaseAddress + 8); StringPtr = MemoryReader.ReadUInt32(BaseAddress + 12); String = MemoryReader.ReadUnicodeString((Int64)StringPtr, Length); }
public PyList( Int64 BaseAddress, IMemoryReader MemoryReader) : base(BaseAddress, MemoryReader) { ob_item = MemoryReader.ReadUInt32(BaseAddress + Offset_ob_item); if (ob_item.HasValue && ob_size.HasValue) { Items = MemoryReader.ReadArray <UInt32>(ob_item.Value, (int)ob_size.Value * 4); } }
public PyTypeObject( Int64 BaseAddress, IMemoryReader MemoryReader) : base( BaseAddress, MemoryReader) { tp_name = MemoryReader.ReadUInt32(BaseAddress + Offset_tp_name); if (tp_name < int.MaxValue) { tp_name_Val = MemoryReader.ReadStringAsciiNullTerminated(tp_name.Value, 0x100); } }
public PyDict( Int64 BaseAddress, IMemoryReader MemoryReader, int?SlotsCountMax = null) : base(BaseAddress, MemoryReader) { ma_fill = MemoryReader.ReadUInt32(BaseAddress + Offset_ma_fill); ma_used = MemoryReader.ReadUInt32(BaseAddress + Offset_ma_used); ma_mask = MemoryReader.ReadUInt32(BaseAddress + Offset_ma_mask); ma_table = MemoryReader.ReadUInt32(BaseAddress + Offset_ma_table); SlotsCount = ma_mask + 1; if (ma_table.HasValue && SlotsCount.HasValue) { var SlotsToReadCount = (int)Math.Min(SlotsCountMax ?? int.MaxValue, SlotsCount.Value); Slots = Enumerable.Range(0, SlotsToReadCount) .Select((SlotIndex) => new PyDictEntry(ma_table.Value + SlotIndex * 12, MemoryReader)) .ToArray(); } }
public static uint?ReadPointerPath32(this IMemoryReader memoryReader, string rootModuleName, uint[] listOffset) { if (memoryReader == null) { return(null); } if (listOffset == null) { return(null); } if (listOffset.Length < 1) { return(null); } uint num = 0u; if (rootModuleName != null) { MemoryReaderModuleInfo[] array = memoryReader.Modules(); if (array == null) { return(null); } MemoryReaderModuleInfo memoryReaderModuleInfo = array.FirstOrDefault((MemoryReaderModuleInfo module) => module.ModuleName.EqualsIgnoreCase(rootModuleName)); if (memoryReaderModuleInfo == null) { return(null); } num = (uint)memoryReaderModuleInfo.BaseAddress; } uint num2 = num; for (int i = 0; i < listOffset.Length - 1; i++) { uint num3 = listOffset[i]; num2 += num3; uint?num4 = memoryReader.ReadUInt32(num2); if (!num4.HasValue) { return(null); } num2 = num4.Value; } return(num2 + listOffset.LastOrDefault()); }
static public UInt32?ReadPointerPath32( this IMemoryReader MemoryReader, string RootModuleName, UInt32[] ListOffset) { if (null == MemoryReader) { return(null); } if (null == ListOffset) { return(null); } if (ListOffset.Length < 1) { return(null); } UInt32 RootModuleOffset = 0; if (null != RootModuleName) { var Modules = MemoryReader.Modules(); if (null == Modules) { return(null); } var RootModule = Modules.FirstOrDefault((Module) => string.Equals(Module.ModuleName, RootModuleName, StringComparison.InvariantCultureIgnoreCase)); if (null == RootModule) { return(null); } RootModuleOffset = (UInt32)RootModule.BaseAddress; } var CurrentAddress = RootModuleOffset; for (int NodeIndex = 0; NodeIndex < ListOffset.Length - 1; NodeIndex++) { var NodeOffset = ListOffset[NodeIndex]; CurrentAddress += NodeOffset; var NodePointer = MemoryReader.ReadUInt32(CurrentAddress); if (!NodePointer.HasValue) { return(null); } CurrentAddress = NodePointer.Value; } CurrentAddress += ListOffset.LastOrDefault(); return(CurrentAddress); }