豚吐露@wiki
Windows8.1が自分のVersion偽装するから調べてみた
最終更新:
Bot(ページ名リンク)
-
view
Windows8.1が自分のVersion偽装するから調べてみた
Windows 8.1 Update1
Visual Studio 2005
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経由で呼び出すようになってる。
コレに対して、
①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に依存するみたいですね。
ど~も、DLLに記述したmanifestって意味無さそう。呼び出し元のEXEのmanifestに依存するみたいですね。
■ manifest無し\getVersionTest.exe
=== from EXE ===
GetVersion: 6.2 build 9200
GetVersionEx: 6.2 build 9200
RtlGetVersion: 6.3 build 9600
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
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
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
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
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
GetVersion: 6.3 build 9600
GetVersionEx: 6.3 build 9600
RtlGetVersion: 6.3 build 9600
更新日: 2014年06月16日 (月) 11時28分40秒
添付ファイル