Beispiel #1
0
        /// <summary>
        /// Parses a SignatureDefinition element.
        /// </summary>
        SignatureDefinition ParseSignatureDefinition()
        {
            Debug.Assert(reader.Name == "");
            bool isEmptyElement = reader.IsEmptyElement;
            SignatureDefinition signatureDefinition = new SignatureDefinition();

            while (MoveToNextAttribute())
            {
                switch (reader.Name)
                {
                case "SpotID":
                    signatureDefinition.SpotID = reader.Value;
                    break;

                case "SignerName":
                    signatureDefinition.SignerName = reader.Value;
                    break;

                case "xml:lang":
                    signatureDefinition.lang = reader.Value;
                    break;

                default:
                    UnexpectedAttribute(reader.Name);
                    break;
                }
            }
            MoveToNextElement();
            return(signatureDefinition);
        }
        public static unsafe nint FindSignatureInModule(ProcessModule module, SignatureDefinition sigDef)
        {
            nint ptr = FindSignatureInBlock(
                module.BaseAddress,
                module.ModuleMemorySize,
                sigDef.pattern,
                sigDef.mask,
                sigDef.offset
                );

            if (ptr != 0 && sigDef.xref)
            {
                ptr = XrefScannerLowLevel.JumpTargets(ptr).FirstOrDefault();
            }
            return(ptr);
        }