Windows 2000にkernel32の動的ロード機能を実装してみた結果
AnyDesktopが Windows 2000で動かない理由
回避方法として以下のコードをEntrypoint を呼び出す前の処理にkernel32.dllをロードしていない場合だけコールするしょりとして入れてみました
push 00000001h lea eax,[ebp-44h] push eax lea eax,[ebp-18h] push eax push edi push edi mov dword ptr [eax],001A0018h mov dword ptr [eax+04h],SWC77F8CD50_kernel32_dll call SUB_L77F8D19D |
結果
呼び出した、 kernel32.dll がntdll.dll を認識せずに、更に別に ntdll.dll をロードするものの、アドレスが元の ntdll.dll に重複するので 再配置するというヤバい動作になりました。
ダメですねこれ ・ω・
Comments