Files
Better-Seewo/AnalyzeDll/Program.cs
雾启工作室 fb7b924c0d feat: 从零重建项目架构
- Better-EN5 插件:基于官方示例,注册3个右键菜单项
- Manager 管理器:横版5标签布局,深色主题 WPF 应用
- 自定义 Fluent 安装器:无边框窗口,圆角,淡入淡出动画
- 删除旧代码,移除 SDK 自动安装器
- 三个项目全部编译通过(0 错误)
2026-06-28 12:40:10 +08:00

55 lines
2.4 KiB
C#

using System;
using System.IO;
using System.Reflection.Metadata;
using System.Reflection.PortableExecutable;
var dllPath = @"C:\Program Files (x86)\Seewo\EasiNote5\EasiNote5_5.2.4.9855\Main\EasiNote.OfficeDocumentConverter.dll";
using var stream = File.OpenRead(dllPath);
using var pe = new PEReader(stream);
// Check PE characteristics
var headers = pe.PEHeaders;
Console.WriteLine($"Machine: {headers.CoffHeader.Machine}");
Console.WriteLine($"Characteristics: {headers.CoffHeader.Characteristics}");
Console.WriteLine($"Is32Bit: {headers.CoffHeader.Characteristics.HasFlag(Characteristics.Bit32Machine)}");
Console.WriteLine($"IsDll: {headers.CoffHeader.Characteristics.HasFlag(Characteristics.Dll)}");
Console.WriteLine($"IsExecutable: {headers.CoffHeader.Characteristics.HasFlag(Characteristics.ExecutableImage)}");
Console.WriteLine($"IsLargeAddressAware: {headers.CoffHeader.Characteristics.HasFlag(Characteristics.LargeAddressAware)}");
Console.WriteLine($"\nOptional Header Magic: {headers.PEHeader.Magic} (0x10B=PE32, 0x20B=PE32+)");
Console.WriteLine($"Subsystem: {headers.PEHeader.Subsystem}");
// Check the .NET metadata for architecture requirements
var mr = pe.GetMetadataReader();
var asmDef = mr.GetAssemblyDefinition();
Console.WriteLine($"\nAssembly: {mr.GetString(asmDef.Name)} v{asmDef.Version}");
// Print target framework attribute
Console.WriteLine("\nCustom Attributes:");
foreach (var ch in asmDef.GetCustomAttributes())
{
var ca = mr.GetCustomAttribute(ch);
// Try to get the attribute constructor name
if (ca.Constructor.Kind == HandleKind.MemberReference)
{
var mref = mr.GetMemberReference((MemberReferenceHandle)ca.Constructor);
if (mref.Parent.Kind == HandleKind.TypeReference)
{
var tref = mr.GetTypeReference((TypeReferenceHandle)mref.Parent);
var attrName = $"{mr.GetString(tref.Namespace)}.{mr.GetString(tref.Name)}";
Console.WriteLine($" {attrName}");
}
}
}
// Print referenced system assemblies
Console.WriteLine("\nReferenced System Assemblies:");
foreach (var aref in mr.AssemblyReferences)
{
var ar = mr.GetAssemblyReference(aref);
var name = mr.GetString(ar.Name);
if (name.StartsWith("System") || name.StartsWith("Microsoft") || name == "WindowsBase" || name == "PresentationCore" || name == "PresentationFramework")
Console.WriteLine($" {name} v{ar.Version}");
}