public ASymbolLoaderThread() { SymbolList = new UArrayManager <ASymbol>(); Process = null; IsLoading = false; CurrentModuleName = ""; Terminated = false; }
public ARefStringArray AllSymbols; //filled at the end with all known symbols (allocs, labels, kallocs, aobscan results, defines that are addresses, etc...) #endregion #region Constructor public ADisableInfo() { Allocs = new AAllocArray(); RegisteredSymbols = new AStringArray(); Exceptions = new UArrayManager <Exception>(); CCodeSymbols = new ASymbolHandler(); DoNotFreeCCodeSymbols = false; AllSymbols = new ARefStringArray(); }
public UIntPtr GetAddressFromPointer(String s, out Boolean error) { error = true; var offsets = new UArrayManager <Int32>(); var list = new AStringArray(); if (!ParseAsPointer(s, list)) { return(UIntPtr.Zero); } UIntPtr baseAddress; try { baseAddress = GetAddressFromName(list[0]); } catch { return(UIntPtr.Zero); } offsets.SetLength(list.Length - 1); for (var i = 1; i < list.Length; i++) //start from the first offset { var off = AStringUtils.Copy(list[i], 1, list[i].Length); try { offsets[i - 1] = (int)AStringUtils.StrToQWordEx("0x" + off); } catch { return(UIntPtr.Zero); } if (list[i][0] == '-') { offsets[i - 1] = -offsets[i - 1]; } } //still here so notation was correct and baseAddress+offsets are filled in //now read var realAddress2 = baseAddress; for (var i = 0; i < offsets.Length; i++) { var realAddress = Process.Memory.Read <UIntPtr>(realAddress2.ToIntPtr()); if (realAddress != UIntPtr.Zero) { realAddress2 = realAddress + offsets[i]; } else { return(UIntPtr.Zero); } } error = false; return(realAddress2); }
public ASymbolHandler() { Process = null; _symbolLoaderThread = null; SymbolList = new UArrayManager <ASymbol>(); UserDefinedSymbols = new UArrayManager <AUserDefinedSymbol>(); _moduleList = new AModuleInfoArray(); ShowSymbols = false; ShowModules = false; ShowSections = false; }