/// <summary> /// Given a module image base, return a Module instance that has all the information we have on it. /// </summary> private Module GetModuleForImageBase(Address moduleBaseAddress) { Module module; if (!m_modules.TryGetValue(moduleBaseAddress, out module)) { module = new Module(moduleBaseAddress); m_modules.Add(moduleBaseAddress, module); } if (module.PdbName == null && module.Path != null) { m_log.WriteLine("No PDB information for {0} in ETL file, looking for it directly", module.Path); if (File.Exists(module.Path)) { using (var modulePEFile = new PEFile.PEFile(module.Path)) { if (!modulePEFile.GetPdbSignature(out module.PdbName, out module.PdbGuid, out module.PdbAge)) { m_log.WriteLine("Could not get PDB information for {0}", module.Path); } } } } return(module); }
internal ResourceNode(string name, int nodeFileOffset, PEFile file, bool isLeaf, bool isTop=false) { m_file = file; m_nodeFileOffset = nodeFileOffset; m_isTop = isTop; IsLeaf = isLeaf; Name = name; if (isLeaf) { var buff = m_file.AllocBuff(); IMAGE_RESOURCE_DATA_ENTRY* dataDescr = (IMAGE_RESOURCE_DATA_ENTRY*)buff.Fetch(nodeFileOffset, sizeof(IMAGE_RESOURCE_DATA_ENTRY)); m_dataLen = dataDescr->Size; m_dataFileOffset = file.Header.RvaToFileOffset(dataDescr->RvaToData); var data = FetchData(0, m_dataLen, buff); m_file.FreeBuff(buff); } }
public void OpenPEFile(string filename) { this.PEFile = new PEFile(filename); }