Exemple #1
0
            public static PEStructure TryCreate(PEStructureProviderFactory peStructureProviderFactory, HexBufferFile file)
            {
                if (file.Properties.TryGetProperty(typeof(PEStructure), out PEStructure peStructure))
                {
                    return(peStructure);
                }

                var provider = peStructureProviderFactory.TryGetProvider(file);

                if (provider != null)
                {
                    peStructure = new PEStructure(provider);
                }

                file.Properties.AddProperty(typeof(PEStructure), peStructure);
                return(peStructure);
            }
        public override object GetReference(HexBufferFile file, ComplexData structure, HexPosition position)
        {
            var peStructure = PEStructure.TryCreate(peStructureProviderFactory, file);

            if (peStructure == null)
            {
                return(null);
            }

            var info = peStructure.GetField(position);

            if (info != null)
            {
                return(new HexFieldReference(file, info.Value.Structure, info.Value.Field));
            }

            return(null);
        }