2016-08-08 8 views
0

内のネイティブコンパイルすることができます。私はILSpyを使ってプログラムを逆コンパイルしました。私はソースコードを見直しながら、次のような関数を発見しました。は、どのように私はプログラム(実行ファイル)の研究をしていたC#

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

実装がありませんでした。どうすればこれを分解できますか?

答えて

0

externキーワードを持つメソッドは、そのメソッドの実装は、いくつかの外部ファイルに指定されていることを意味します。 MSDN Docsexternについて詳しく読むことができます。通常は、メソッドを実装しているアセンブリの名前を指定しますDLLImportAttributeを見るであろう。

MethodImpOptions.Unmanaged呼び出しがアンマネージコード(C、C++など)に行われているとMethodImpOptions.PreserveSigは方法がされていることを意味していることを意味し呼び出されたメソッドシグネチャはまったく同じです。その向こう

、私がずっとあなたを伝えることはできません。

0

これはネイティブの呼び出しであるので、あなたはネイティブの逆アセンブラを必要としています。さまざまなレベルの出力を選択することができますが、おそらくx86アセンブリとWindowsプログラミングについて理解しておく必要があります。たとえば、分解したC#コードのようなものではありません。

ネイティブコードは、別のDLLで、または同じアセンブリ内のネイティブモジュールにあるかもしれない - あなたはそれextern定義が指している場所を確認する必要があります。

免責事項:分解および/またはあなたがどこ違法となる場合があります。このようにして得られた知識を使って、適用法を認識していることを確認してください。

関連する問題