Fey*_*yaz 5 c# dll reflector decompiling extern
当我用Reflector反编译一个dll文件时,我看到我需要的方法实现如下.这是什么意思?有可能看到背后的源代码吗?
[return: MarshalAs(UnmanagedType.BStr)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime), DispId(0x3a)]
public virtual extern string GetCOLDText([In] int PageNumber, [In] int Row, [In] int Column, [In, Optional, DefaultParameterValue(0x7fffffff)] int Length);
Run Code Online (Sandbox Code Playgroud)
问候.
这是当您使用 Reflector 查看由 tlbimp.exe 创建的 COM 互操作库时看到的内容。或者通过在 IDE 中从 COM 选项卡或浏览选项卡添加对 COM 服务器的引用,也是一样的。
如果查看包含此方法的外部类或接口,那么您将看到包含此方法的 COM 组件类或接口。它的重要属性是 [ComImport](表示它是在另一个 DLL 中实现的)和 [Guid](所有重要的接口 IID 或组件类 CLSID)。COM 类和接口由 guid(而不是名称)唯一标识。CLSID guid 存在于注册表项中HKCR\CLSID\{guid}。
像这样的 COM 服务器几乎总是用非托管语言实现,C++ 是最典型的,但也有 Delphi 或 VB6。在编译 C++ 代码后对其进行反编译是徒劳的,但您可以使用 /disasm 选项从 Dumpbin.exe 中获取一些内容。需要汇编语言编程技能和大量的空闲时间。许可协议中几乎总是明确禁止这样做。