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 に重複するので 再配置するというヤバい動作になりました。
ダメですねこれ ・ω・

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です