实例介绍
dnlib是一个.NET模块/程序集的读取和写入库。
首先,重要的命名空间是dnlib.DotNet和dnlib.DotNet.Emit。如果您打算读取/写入方法体,则只需要dnlib.DotNet.Emit。以下所有示例都假定您在每个源文件的顶部有适当的using语句:
using dnlib.DotNet; using dnlib.DotNet.Emit;
当您打开.NET模块时,会创建ModuleDefMD类。它有几个Load()方法将创建一个ModuleDefMD实例。如果不是.NET模块/程序集,则会抛出BadImageFormatException。
从文件中读取.NET模块:
// 创建一个默认的程序集解析器和类型解析器并将其传递给Load()。 // 如果它是一个.NET Core程序集,则需要禁用GAC加载并添加.NET Core参考程序集搜索路径。 ModuleContext modCtx = ModuleDef.CreateModuleContext(); ModuleDefMD module = ModuleDefMD.Load(@"C:\path\to\file.exe", modCtx);
从字节数组中读取.NET模块:
byte[] data = System.IO.File.ReadAllBytes(@"C:\path\of\file.dll"); 【实例截图】 【核心代码】 文件清单 └── dnlib-0b2dc951e3a74cd31e177fae62cc56dab676583e ├── build.ps1 ├── dnlib.sln ├── dnlib.snk ├── Examples │ ├── Example1.cs │ ├── Example2.cs │ ├── Example3.cs │ ├── Example4.cs │ ├── Example5.cs │ ├── Example6.cs │ ├── Example7.cs │ ├── Examples.csproj │ └── Program.cs ├── LICENSE.txt ├── README.md └── src ├── DefaultDllImportSearchPathsAttribute.cs ├── dnlib.csproj ├── DotNet │ ├── AllTypesHelper.cs │ ├── AssemblyAttributes.cs │ ├── AssemblyDef.cs │ ├── AssemblyHashAlgorithm.cs │ ├── AssemblyHash.cs │ ├── AssemblyNameComparer.cs │ ├── AssemblyNameInfo.cs │ ├── AssemblyRef.cs │ ├── AssemblyResolver.cs │ ├── CallingConvention.cs │ ├── CallingConventionSig.cs │ ├── ClassLayout.cs │ ├── Constant.cs │ ├── CorLibTypes.cs │ ├── CpuArch.cs │ ├── CustomAttributeCollection.cs │ ├── CustomAttribute.cs │ ├── CustomAttributeReader.cs │ ├── DeclSecurity.cs │ ├── DeclSecurityReader.cs │ ├── ElementType.cs │ ├── Emit │ │ ├── Code.cs │ │ ├── DynamicMethodBodyReader.cs │ │ ├── ExceptionHandler.cs │ │ ├── ExceptionHandlerType.cs │ │ ├── Extensions.cs │ │ ├── FlowControl.cs │ │ ├── Instruction.cs │ │ ├── InstructionPrinter.cs │ │ ├── InvalidMethodException.cs │ │ ├── LocalList.cs │ │ ├── MethodBody.cs │ │ ├── MethodBodyReaderBase.cs │ │ ├── MethodBodyReader.cs │ │ ├── MethodTableToTypeConverter.cs │ │ ├── MethodUtils.cs │ │ ├── OpCode.cs │ │ ├── OpCodes.cs │ │ ├── OpCodeType.cs │ │ ├── OperandType.cs │ │ └── StackBehaviour.cs │ ├── EventAttributes.cs │ ├── EventDef.cs │ ├── ExportedType.cs │ ├── Extensions.cs │ ├── FieldAttributes.cs │ ├── FieldDef.cs │ ├── FileAttributes.cs │ ├── FileDef.cs │ ├── FrameworkRedirect.cs │ ├── FullNameFactory.cs │ ├── GenericArguments.cs │ ├── GenericParamAttributes.cs │ ├── GenericParamConstraint.cs │ ├── GenericParamContext.cs │ ├── GenericParam.cs │ ├── IAssemblyResolver.cs │ ├── ICodedToken.cs │ ├── ICorLibTypes.cs │ ├── ICustomAttribute.cs │ ├── IDecrypters.cs │ ├── ILogger.cs │ ├── ImplMap.cs │ ├── Importer.cs │ ├── InterfaceImpl.cs │ ├── IResolver.cs │ ├── ITokenResolver.cs │ ├── IType.cs │ ├── ITypeDefFinder.cs │ ├── IVariable.cs │ ├── ManifestResourceAttributes.cs │ ├── ManifestResource.cs │ ├── MarshalBlobReader.cs │ ├── MarshalType.cs │ ├── MD │ │ ├── BlobStream.cs │ │ ├── CodedToken.cs │ │ ├── ColumnInfo.cs │ │ ├── ColumnSize.cs │ │ ├── ComImageFlags.cs │ │ ├── CompressedMetadata.cs │ │ ├── CustomDotNetStream.cs │ │ ├── DotNetStream.cs │ │ ├── DotNetTableSizes.cs │ │ ├── ENCMetadata.cs │ │ ├── GuidStream.cs │ │ ├── HeapType.cs │ │ ├── ImageCor20Header.cs │ │ ├── IRowReaders.cs │ │ ├── MDHeaderRuntimeVersion.cs │ │ ├── MDStreamFlags.cs │ │ ├── MDTable.cs │ │ ├── MetadataBase.cs │ │ ├── Metadata.cs │ │ ├── MetadataFactory.cs │ │ ├── MetadataHeader.cs │ │ ├── PdbStream.cs │ │ ├── RawRowEqualityComparer.cs │ │ ├── RawTableRows.cs │ │ ├── RidList.cs │ │ ├── StorageFlags.cs │ │ ├── StreamHeader.cs │ │ ├── StringsStream.cs │ │ ├── Table.cs │ │ ├── TableInfo.cs │ │ ├── TablesStream.cs │ │ ├── TablesStream_Read.cs │ │ └── USStream.cs │ ├── MDToken.cs │ ├── MemberFinder.cs │ ├── MemberMDInitializer.cs │ ├── MemberRef.cs │ ├── MethodAttributes.cs │ ├── MethodDef.cs │ ├── MethodExportInfo.cs │ ├── MethodExportInfoProvider.cs │ ├── MethodImplAttributes.cs │ ├── MethodOverride.cs │ ├── MethodSemanticsAttributes.cs │ ├── MethodSpec.cs │ ├── ModuleContext.cs │ ├── ModuleCreationOptions.cs │ ├── ModuleDef.cs │ ├── ModuleDefMD.cs │ ├── ModuleKind.cs │ ├── ModuleLoader.cs │ ├── ModuleRef.cs │ ├── NativeType.cs │ ├── NullResolver.cs │ ├── ParamAttributes.cs │ ├── ParamDef.cs │ ├── ParameterList.cs │ ├── Pdb │ │ ├── CustomDebugInfoGuids.cs │ │ ├── DataReaderFactoryUtils.cs │ │ ├── Dss │ │ │ ├── ComInterfaces.cs │ │ │ ├── DataReaderIStream.cs │ │ │ ├── MDEmitter.cs │ │ │ ├── MetaDataImport.cs │ │ │ ├── ReaderMetaDataImport.cs │ │ │ ├── StreamIStream.cs │ │ │ ├── SymbolDocumentImpl.cs │ │ │ ├── SymbolDocumentWriter.cs │ │ │ ├── SymbolMethodImpl.cs │ │ │ ├── SymbolNamespaceImpl.cs │ │ │ ├── SymbolReaderImpl.cs │ │ │ ├── SymbolReaderWriterFactory.cs │ │ │ ├── SymbolScopeImpl.cs │ │ │ ├── SymbolVariableImpl.cs │ │ │ └── SymbolWriterImpl.cs │ │ ├── IMAGE_DEBUG_DIRECTORY.cs │ │ ├── Managed │ │ │ ├── DbiDocument.cs │ │ │ ├── DbiFunction.cs │ │ │ ├── DbiModule.cs │ │ │ ├── DbiNamespace.cs │ │ │ ├── DbiScope.cs │ │ │ ├── DbiVariable.cs │ │ │ ├── ModuleStreamType.cs │ │ │ ├── MsfStream.cs │ │ │ ├── NumericLeaf.cs │ │ │ ├── NumericReader.cs │ │ │ ├── PdbAddress.cs │ │ │ ├── PdbException.cs │ │ │ ├── PdbReader.cs │ │ │ ├── SymbolReaderFactory.cs │ │ │ └── SymbolType.cs │ │ ├── PdbConstant.cs │ │ ├── PdbCustomDebugInfo.cs │ │ ├── PdbDocumentConstants.cs │ │ ├── PdbDocument.cs │ │ ├── PdbFileKind.cs │ │ ├── PdbImport.cs │ │ ├── PdbLocalAttributes.cs │ │ ├── PdbLocal.cs │ │ ├── PdbMethod.cs │ │ ├── PdbReaderContext.cs │ │ ├── PdbReaderOptions.cs │ │ ├── PdbScope.cs │ │ ├── PdbState.cs │ │ ├── PdbUtils.cs │ │ ├── Portable │ │ │ ├── DocumentNameReader.cs │ │ │ ├── ImportDefinitionKindUtils.cs │ │ │ ├── ImportScopeBlobReader.cs │ │ │ ├── ImportScopeBlobWriter.cs │ │ │ ├── ListCache.cs │ │ │ ├── LocalConstantSigBlobReader.cs │ │ │ ├── LocalConstantSigBlobWriter.cs │ │ │ ├── PortablePdbCustomDebugInfoReader.cs │ │ │ ├── PortablePdbCustomDebugInfoWriter.cs │ │ │ ├── PortablePdbReader.cs │ │ │ ├── SequencePointConstants.cs │ │ │ ├── SymbolDocumentImpl.cs │ │ │ ├── SymbolMethodImpl.cs │ │ │ ├── SymbolReaderFactory.cs │ │ │ ├── SymbolScopeImpl.cs │ │ │ └── SymbolVariableImpl.cs │ │ ├── SequencePoint.cs │ │ ├── SymbolReaderFactory.cs │ │ ├── Symbols │ │ │ ├── SymbolAsyncStepInfo.cs │ │ │ ├── SymbolDocument.cs │ │ │ ├── SymbolMethod.cs │ │ │ ├── SymbolNamespace.cs │ │ │ ├── SymbolReader.cs │ │ │ ├── SymbolScope.cs │ │ │ ├── SymbolSequencePoint.cs │ │ │ └── SymbolVariable.cs │ │ └── WindowsPdb │ │ ├── CorSymVarFlag.cs │ │ ├── CustomDebugInfoConstants.cs │ │ ├── PdbCustomDebugInfoReader.cs │ │ ├── PdbCustomDebugInfoWriter.cs │ │ ├── PseudoCustomDebugInfoFactory.cs │ │ ├── SymbolWriter.cs │ │ └── WindowsPdbWriter.cs │ ├── PInvokeAttributes.cs │ ├── PropertyAttributes.cs │ ├── PropertyDef.cs │ ├── PublicKeyBase.cs │ ├── PublicKey.cs │ ├── PublicKeyToken.cs │ ├── RecursionCounter.cs │ ├── ReflectionExtensions.cs │ ├── ResolveException.cs │ ├── Resolver.cs │ ├── ResourceCollection.cs │ ├── Resource.cs │ ├── Resources │ │ ├── BuiltInResourceData.cs │ │ ├── IResourceData.cs │ │ ├── ResourceBinaryWriter.cs │ │ ├── ResourceDataFactory.cs │ │ ├── ResourceElement.cs │ │ ├── ResourceElementSet.cs │ │ ├── ResourceReader.cs │ │ ├── ResourceReaderType.cs │ │ ├── ResourceTypeCode.cs │ │ ├── ResourceWriter.cs │ │ ├── UserResourceData.cs │ │ └── UserResourceType.cs │ ├── SecurityAction.cs │ ├── SecurityAttribute.cs │ ├── SerializationType.cs │ ├── SigComparer.cs │ ├── SignatureReader.cs │ ├── StandAloneSig.cs │ ├── StrongNameKey.cs │ ├── StrongNameSigner.cs │ ├── TIAHelper.cs │ ├── TypeAttributes.cs │ ├── TypeDef.cs │ ├── TypeDefFinder.cs │ ├── TypeHelper.cs │ ├── TypeNameParser.cs │ ├── TypeRef.cs │ ├── TypeSig.cs │ ├── TypeSpec.cs │ ├── UTF8String.cs │ ├── Utils.cs │ ├── VariantType.cs │ ├── VTableFixups.cs │ ├── WinMDHelpers.cs │ ├── WinMDStatus.cs │ └── Writer │ ├── ArrayWriter.cs │ ├── BlobHeap.cs │ ├── ByteArrayChunk.cs │ ├── ChecksumAlgorithm.cs │ ├── ChunkListBase.cs │ ├── ChunkList.cs │ ├── CustomAttributeWriter.cs │ ├── DataReaderChunk.cs │ ├── DataReaderHeap.cs │ ├── DataWriter.cs │ ├── DebugDirectory.cs │ ├── DeclSecurityWriter.cs │ ├── Extensions.cs │ ├── GuidHeap.cs │ ├── Hasher.cs │ ├── HeapBase.cs │ ├── IChunk.cs │ ├── IHeap.cs │ ├── ImageCor20Header.cs │ ├── ImportAddressTable.cs │ ├── ImportDirectory.cs │ ├── IOffsetHeap.cs │ ├── IWriterError.cs │ ├── ManagedExportsWriter.cs │ ├── MarshalBlobWriter.cs │ ├── MaxStackCalculator.cs │ ├── MDTable.cs │ ├── MDTableWriter.cs │ ├── Metadata.cs │ ├── MetadataErrorContext.cs │ ├── MetadataEvent.cs │ ├── MetadataHeader.cs │ ├── MethodBodyChunks.cs │ ├── MethodBody.cs │ ├── MethodBodyWriterBase.cs │ ├── MethodBodyWriter.cs │ ├── ModuleWriterBase.cs │ ├── ModuleWriter.cs │ ├── ModuleWriterEvent.cs │ ├── ModuleWriterException.cs │ ├── NativeModuleWriter.cs │ ├── NetResources.cs │ ├── NormalMetadata.cs │ ├── PdbHeap.cs │ ├── PEHeaders.cs │ ├── PESection.cs │ ├── PortablePdbConstants.cs │ ├── PreserveTokensMetadata.cs │ ├── RelocDirectory.cs │ ├── RoslynContentIdProvider.cs │ ├── SectionSizes.cs │ ├── SerializerMethodContext.cs │ ├── SignatureWriter.cs │ ├── StartupStub.cs │ ├── StringsHeap.cs │ ├── StrongNameSignature.cs │ ├── TablesHeap.cs │ ├── UniqueChunkList.cs │ ├── USHeap.cs │ ├── Win32ResourcesChunk.cs │ └── WriterUtils.cs ├── HandleProcessCorruptedStateExceptionsAttribute.cs ├── IO │ ├── AlignedByteArrayDataStream.cs │ ├── AlignedNativeMemoryDataStream.cs │ ├── ByteArrayDataReaderFactory.cs │ ├── DataReader.cs │ ├── DataReaderFactory.cs │ ├── DataReaderFactoryFactory.cs │ ├── DataReaderStream.cs │ ├── DataStream.cs │ ├── DataStreamFactory.cs │ ├── EmptyDataStream.cs │ ├── FileOffset.cs │ ├── FileSection.cs │ ├── IFileSection.cs │ ├── IOExtensions.cs │ ├── MemoryMappedDataReaderFactory.cs │ ├── NativeMemoryDataReaderFactory.cs │ ├── UnalignedByteArrayDataStream.cs │ └── UnalignedNativeMemoryDataStream.cs ├── PE │ ├── Characteristics.cs │ ├── DllCharacteristics.cs │ ├── IImageOptionalHeader.cs │ ├── ImageDataDirectory.cs │ ├── ImageDebugDirectory.cs │ ├── ImageDebugType.cs │ ├── ImageDosHeader.cs │ ├── ImageFileHeader.cs │ ├── ImageNTHeaders.cs │ ├── ImageOptionalHeader32.cs │ ├── ImageOptionalHeader64.cs │ ├── ImageSectionHeader.cs │ ├── IPEImage.cs │ ├── IPEType.cs │ ├── Machine.cs │ ├── PEExtensions.cs │ ├── PEImage.cs │ ├── PEInfo.cs │ ├── ProcessorArchUtils.cs │ ├── RVA.cs │ └── Subsystem.cs ├── Settings.cs ├── Threading │ ├── ICancellationToken.cs │ └── Lock.cs ├── Utils │ ├── ArrayEmpty.cs │ ├── CollectionDebugView.cs │ ├── ILazyList.cs │ ├── LazyList.cs │ ├── SimpleLazyList.cs │ └── UserValue.cs └── W32Resources ├── ResourceData.cs ├── ResourceDirectory.cs ├── ResourceDirectoryEntry.cs ├── ResourceName.cs └── Win32Resources.cs 19 directories, 389 files
标签:
相关软件
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论