/// <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);
    }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
0
 public void OpenPEFile(string filename)
 {
     this.PEFile = new PEFile(filename);
 }