繁体   English   中英

如何在C#中反编译本机

[英]How can I decompile native within C#

我正在研究程序(可执行)。 我使用ILSpy反编译程序。 在查看源代码时,我发现了一个看起来像这样的函数:

/ <Module>
[SuppressUnmanagedCodeSecurity]
[MethodImpl(MethodImplOptions.Unmanaged | MethodImplOptions.PreserveSig)]    
internal unsafe static extern PointerObject* Function(sbyte*);

没有执行。 我该如何拆卸?

具有extern关键字的方法表示在某些外部文件中指定了该方法的实现。 您可以在MSDN Docs中阅读有关extern更多信息。 通常,您会看到一个DLLImportAttribute ,它将指定在其中实现该方法的程序集的名称。

MethodImpOptions.Unmanaged表示正在对非托管代码(C,C ++等)进行调用,而MethodImpOptions.PreserveSig表示所调用的方法具有完全相同的方法签名。

除此之外,我不能告诉你太多。

由于这是一个本地调用,因此您需要一个本地反汇编程序。 有很多可供选择的输出水平差异很大,但是您很可能需要对x86汇编和Windows编程有很好的了解,才能从反汇编中获得有用的信息-例如,这与反汇编的C#代码完全不同。

本机代码可能在单独的DLL中,或在同一程序集中的本机模块中-您需要检查该extern定义所指向的位置。

免责声明:在您所在的地方,拆卸和/或使用通过这种方式获得的任何知识可能是非法的; 确保您了解适用法律。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM