豚吐露@wiki

Windows8.1が自分のVersion偽装するから調べてみた

最終更新:

Bot(ページ名リンク)

- view
管理者のみ編集可

Windows8.1が自分のVersion偽装するから調べてみた

Windows 8.1 Update1
Visual Studio 2005


調査対象の関数は以下の3つ。
  • GetVersion
  • GetVersionEx
  • RtlGetVersion

添付のzipはVisualC++ 2005で、当該関数の検証用projectを作ったもの。
EXEから直接とDLL経由で呼び出すようになってる。
コレに対して、
①EXE、DLL共にWin8.1に正式対応をmanifestへ記述
②EXEだけWin8.1に正式対応をmanifestへ記述
③EXE、DLL共にmanifestへ記述無し
と、したものを作成し3関数の挙動を確認。

①EXE、DLL共にmanifestを記述 ②EXEだけmanifestを記述 ③manifestの記述無し
EXE DLL EXE DLL EXE DLL
GetVersion 6.3 build 9600 6.3 build 9600 6.3 build 9600 6.3 build 9600 6.2 build 9200 6.2 build 9200
GetVersionEx 6.3 build 9600 6.3 build 9600 6.3 build 9600 6.3 build 9600 6.2 build 9200 6.2 build 9200
RtlGetVersion 6.3 build 9600 6.3 build 9600 6.3 build 9600 6.3 build 9600 6.3 build 9600 6.3 build 9600

結論から言うと、『RtlGetVersion』使っとけです。
それが一番問題が少なそう...(´Д`)

②は一応、DLLに記述したmanifestが与える影響を調べたつもりだが...
ど~も、DLLに記述したmanifestって意味無さそう。呼び出し元のEXEのmanifestに依存するみたいですね。


■ manifest無し\getVersionTest.exe

=== from EXE ===
GetVersion: 6.2 build 9200
GetVersionEx: 6.2 build 9200
RtlGetVersion: 6.3 build 9600

=== from DLL ===
GetVersion: 6.2 build 9200
GetVersionEx: 6.2 build 9200
RtlGetVersion: 6.3 build 9600

■ manifest無し(DLLだけ)\getVersionTest.exe

=== from EXE ===
GetVersion: 6.3 build 9600
GetVersionEx: 6.3 build 9600
RtlGetVersion: 6.3 build 9600

=== from DLL ===
GetVersion: 6.3 build 9600
GetVersionEx: 6.3 build 9600
RtlGetVersion: 6.3 build 9600

■ manifest有り\getVersionTest.exe

=== from EXE ===
GetVersion: 6.3 build 9600
GetVersionEx: 6.3 build 9600
RtlGetVersion: 6.3 build 9600

=== from DLL ===
GetVersion: 6.3 build 9600
GetVersionEx: 6.3 build 9600
RtlGetVersion: 6.3 build 9600



更新日: 2014年06月16日 (月) 11時28分40秒

名前:
コメント:

すべてのコメントを見る
添付ファイル
記事メニュー
ウィキ募集バナー