我正在研究一个程序(可执行程序)。我用ILSpy反编译程序。在我查看源代码时,我发现了一个如下所示的函数:
/ <Module>
[SuppressUnmanagedCodeSecurity]
[MethodImpl(MethodImplOptions.Unmanaged | MethodImplOptions.PreserveSig)]
internal unsafe static extern PointerObject* Function(sbyte*);
没有实施。我怎么能把它拆开呢?
答案 0 :(得分:1)
使用extern
关键字的方法意味着在某些外部文件中指定了该方法的实现。您可以在MSDN Docs中详细了解extern
。通常,您会看到一个DLLImportAttribute
,它将指定实现该方法的程序集的名称。
MethodImpOptions.Unmanaged
意味着调用非托管代码(C,C ++等),而MethodImpOptions.PreserveSig
意味着被调用的方法具有完全相同的方法签名。
除此之外,我不能告诉你太多。
答案 1 :(得分:1)
由于这是本机调用,因此您需要一个本机反汇编程序。有很多可供选择的产品,但是你很可能需要对x86汇编和Windows编程有一个很好的理解,以便从反汇编中获得任何有用的东西 - 它没有像拆解一样例如,C#代码。
本机代码可能位于单独的DLL中,也可能位于同一程序集中的本机模块中 - 您需要检查extern
定义指向的位置。
免责声明:以这种方式获取的任何知识的反汇编和/或使用可能是非法的;确保您了解适用的法律。