示例#1
0
        public dnModule(byte[] module, string fileName, ModuleContext ctx)
        {
            RawData      = module;
            ErrorMessage = null;
            Name         = Path.GetFileName(fileName);

            var creator = new dnModuleStreamCreator(module, fileName);

            try {
                Image = new PEImage(creator, ImageLayout.File, true);
            }
            catch (Exception ex) {
                ErrorMessage += string.Format("Error while loading PE Image:{0}{1}{0}{0}",
                                              Environment.NewLine, ex);

                Image = null;
                return;
            }

            try {
                MetaData = MetaDataCreator.CreateMetaData(Image);
            }
            catch (Exception ex) {
                ErrorMessage += string.Format("Error while loading MetaData:{0}{1}{0}{0}",
                                              Environment.NewLine, ex);

                MetaData = null;
                return;
            }

            try {
                ModuleDef = (ModuleDefMD)loadInternal.Invoke(null, new object[] {
                    MetaData, new ModuleCreationOptions {
                        TryToLoadPdbFromDisk = true,
                        Context = ctx
                    }
                });
                ModuleDef.EnableTypeDefFindCache = true;
            }
            catch (Exception ex) {
                ErrorMessage = string.Format("Error while loading ModuleDef:{0}{1}{0}{0}",
                                             Environment.NewLine, ex);

                ModuleDef = null;
                return;
            }

            if (ModuleDef.Assembly != null)
            {
                Name = ModuleDef.Assembly.Name;
            }
            else
            {
                Name = ModuleDef.Name;
            }
            if (string.IsNullOrEmpty(Name))
            {
                Name = Path.GetFileName(fileName);
            }
        }
示例#2
0
		public dnModule(byte[] module, string fileName, ModuleContext ctx) {
			RawData = module;
			ErrorMessage = null;
			Name = Path.GetFileName(fileName);

			var creator = new dnModuleStreamCreator(module, fileName);
			try {
				Image = new PEImage(creator, ImageLayout.File, true);
			}
			catch (Exception ex) {
				ErrorMessage += string.Format("Error while loading PE Image:{0}{1}{0}{0}",
					Environment.NewLine, ex);

				Image = null;
				return;
			}

			try {
				MetaData = MetaDataCreator.CreateMetaData(Image);
			}
			catch (Exception ex) {
				ErrorMessage += string.Format("Error while loading MetaData:{0}{1}{0}{0}",
					Environment.NewLine, ex);

				MetaData = null;
				return;
			}

			try {
				ModuleDef = (ModuleDefMD)loadInternal.Invoke(null, new object[] {
					MetaData, new ModuleCreationOptions {
						TryToLoadPdbFromDisk = true,
						Context = ctx
					}
				});
				ModuleDef.EnableTypeDefFindCache = true;
			}
			catch (Exception ex) {
				ErrorMessage = string.Format("Error while loading ModuleDef:{0}{1}{0}{0}",
					Environment.NewLine, ex);

				ModuleDef = null;
				return;
			}

			if (ModuleDef.Assembly != null)
				Name = ModuleDef.Assembly.Name;
			else
				Name = ModuleDef.Name;
			if (string.IsNullOrEmpty(Name))
				Name = Path.GetFileName(fileName);
		}