簡體   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