PEパッカーをC++でコーディングしました。これはプロセススペースに実行可能ファイルをロードし、IATと再配置を修正してからエントリポイントを呼び出します。ネイティブプロセスからの.NET PEのメモリロード中
私の問題は、.NETはサポートされていないことです。私は.NET PEフォーマットを検索しましたが、インポートされた関数(_CorExeMain)に設定されたエントリポイントで実行可能なのは32ビットです。
私がそれを呼び出すと、Windowsに.NETがインストールされていないことを示すエラーがポップアップ表示されます。
.NET PE実行可能ファイルには、DataDirectoryに特別なCOMヘッダーがありますが、その処理方法はわかりません。
誰かが私を助けてくれることを願っています。
ありがとうございます。
PEはAVIのような単なるコンテナ形式です。内部に何があるかは保証されません。単にプロトコルが定義されているだけで、情報がどこにどのようにエンコードされているのですか。 .NETアセンブリがPEファイル形式を使用しているということは、ネイティブ(アンマネージド)DLLのように単純にロードできるということではありません。マネージアセンブリの型をアクティブにするには、[CLRをホストする](https://msdn.microsoft.com/en-us/library/ms404385.aspx)が必要です。さて、.winmdファイルはPEファイル形式も再利用しますが、コードは一切含まれていません。 – IInspectable
関連資料:[.NETアセンブリの構造 - CLRローダースタブ](https://www.simple-talk.com/blogs/anatomy-of-a-net-assembly-the-clr-loader-stub/ )。 – IInspectable