攻撃目的の LoadLibrary。
https://www.mdsec.co.uk/2021/06/bypassing-image-load-kernel-callbacks/
DARKMODULE DarkModule = DarkLoadLibrary(
LOAD_LOCAL_FILE, // control flags
L"TestDLL.dll", // local dll path, if loading from disk
NULL, // dll buffer to load from if loading from memory
0, // dll size if loading from memory
NULL // dll name if loaded from memory
);
これは CreateFileW が開く任意のパスです。
この引数は LOAD_MEMORY が設定されている場合のみ必要です。その場合、この引数はDLLを含むバッファを指定します。
この引数は LOAD_MEMORY が設定されている場合のみ必要です。その場合、この引数はDLLを含むバッファのサイズを指定します。
この引数は LOAD_MEMORY が設定されている場合のみ必要です。その場合、この引数はDLLがPEBに設定される名前を指定します。
Windows ローダーは非常に複雑で、DLLのロードにおけるすべてのエッジケースや複雑な処理を扱うことができます。私が発見、リバースエンジニアリング、実装する時間がなかったエッジケースが存在します。そのため、このローダーでは正常に動作しないDLLも存在します。
とはいえ、このローダーを可能な限り完全なものにする予定ですので、正しくロードされないDLLがあれば issue を開いてください。