Windows XP のカーネル関数には未実装のものがある?
きっかけは、
Virus-fighting utilities - PE Header problems (Windows 2000 Prof) - Kaspersky Lab Forum
ここに、Windows 2000なクレーマーさんを見つけたのが発端
Rootkit.Win32.TDSS ファミリーのマルウェアを削除する方法
カスペルスキーの公式サイトでは、ルートキットの削除ツールが無料公開されてるのですが、これがWin2000非対応になったのが原因。
Windows 2000で実行できるようにしても、
KERNEL32.DLL に GetFirmwareEnvironmentVariableW がないと何もしないで終了してしまいます
で、XPの GetFirmwareEnvironmentVariable が 内部で NtQuerySystemEnvironmentValueEx を呼んでるのですが、これを調べて見ると、 常に 0xc0000002 を返す。 この値が(この関数は実装されていません)何ですよね
調べて見たところ、次の関数が、名前だけあって中身のない関数だったよ
NtAddBootEntry(0x09)
NtDeleteBootEntry(0x3d)
NtEnumerateBootEntries(0x46)
NtEnumerateSystemEnvironmentValuesEx(0x48)
NtModifyBootEntry(0x6d)
NtQueryBootEntryOrder(0x8c)
NtQueryBootOptions(0x8d)
NtQuerySystemEnvironmentValueEx(0xac)
NtSetBootEntryOrder(0xd3)
NtSetBootOptions(0xd4)
NtSetSystemEnvironmentValueEx(0xef)
NtTranslateFilePath(0x105)
そんなわけで、kdw 0.96iの 2kdll にこの関数 stub で追加してみたのでした
ちなみに、このツールは無事動いたよ|・ω・)ノ
いつもお世話になっています。
“kdw 0.96i”の”Kernel32.dll(5.1.2599.68)”を使うと
いくつかのプログラムで”Visual C++がない”
と言うようなエラーが出るようになりました。
エラーでこけるプログラム
GPU-Z.exe、Speccy.exe、Ncw.exe
現在は、”Kernel32.dll(5.1.2599.67)”に差し替えて使っています