質問: 化石言語で申し訳ないのですが、現在当方の事情でvb6で作成されたプロジェクトのリバースエンジニアリングをしております。 ソースを見ているとkernel32.dllで関数を使用しているようなのですが、関数の内容を知りたいです。 方法としてフリーソフトウェアの「ILSpy」を利用してデコンパイルを行ったのですが、ソースを見ることができませんでした。 以下表示文 // C:\Windows\System32\kernel32.dll // PE file does not contain any managed metadata. ICSharpCode.Decompiler.Metadata.PEFileNotSupportedException: PE file does not contain any managed metadata. 場所 ICSharpCode.Decompiler.Metadata.PEFile..ctor(String fileName, PEReader reader, MetadataReaderOptions metadataOptions) 場所 ICSharpCode.ILSpy.LoadedAssembly.LoadAssembly(Object state) 場所 System.Threading.Tasks.Task`1.InnerInvoke() 場所 System.Threading.Tasks.Task.Execute() ここまで これの解決法ないし他の方法をご存知でしたらご教授願えると幸いです。
回答: ILSpyは.NETアプリケーション用のデコンパイラですので、kernel32.dllのようなWin32ネイティブのDLLには使えません。 Windows APIの根幹のひとつである kernel32.dll をリバースエンジニアリングするのは、様々な理由で難しいです。 Windowsごとデバッグできるカーネルデバッガーを使えば不可能ではないですがそこまで求められる案件ではないでしょう。たぶん。 VB6で使っているのであればおそらくkernel32.dllが提供する一般的なWin32 APIでしょうから、それらのAPIであれば例えば Microsoft Docs - Programming reference for Windows API でAPI仕様を把握すれば、動きを理解できると思います。