check_guard_cf.zip/Readme.txt
プログラム名:GuardCFチェッカー
用途:
GuardCFが有効な.dll/.exeかをチェックします。
使い方:
usage: check_guard_cf [OPTION] [--target] path
オプション:
-h [ --help ] ヘルプを表示
-s [ --silent ] 標準出力に出さない
-t [ --target ] arg 対象の.exe/.dll
ファイル解説:
check_guard_cf.exe プログラム本体
Readme.txt 今読んでいるこれ
check_guard_cf ソースコードなど
check_guard_cf.sln ビルド用ソリューションファイル
免責事項:
これに同梱されたプログラムその他が原因で発生したいかなる損害も当方は一切関知しません。
また、全てのプログラムがウイルスではないという証明も、ウイルスに感染していないという証明もありません。
自己責任でお使いください。
Q&A:
Q:GuardCFってなに?
A:Control flow guardというWindows8.1 updateから入ったセキュリティ機能です
このまま略すとCFGになるのですが
Control flow graphという機能の略称として既に使用されているため
FFRIさんに倣ってGuardCFと呼称しています。
Q:これでチェックできて何が嬉しいの?
A:GuardCFは.exeだけではなく.dllまで含めてすべてで有効でないと効力が著しく下がります。
そのため、ソースコードが手に入らない.dllなどで有効か調べるために使う想定です。
Q:64bitの.exe/.dllにも対応してる?
A:32bitオンリーです。
64bit対応していないのは単に面倒だったからで、特に難しくはないはず。
Q:Windows付属のdllなのに無効と出るものがあるんだが
A:directXなどでは動作差異が出るのを嫌ったためか古いものはかかっていません。
またGuardCFは機械語を実行する必要のあるdllでしか必要ではないため
リソースのみを持つdllやリダイレクトするだけで実体を含まないdllの場合は
Windows標準付属でも無効なこともあります。
Q:その他バグをみつけた or 動作しない or 要望がある
A:確認次第対応可能であれば対応します。
公開しても問題が無いメールアドレスにて
下部に記載されたアドレスまでメールをどうぞ。
メールアドレス:sweetie(あっと)click3.org
ライセンス:
・本ライセンスにおいて、全ての条項は「変更の有無を問わず、明示暗示を問わず、商業慈善を問わず、
個人法人を問わず、保持使用を問わず、有料無料を問わず、全体一部を問わず、コピー派生を問わず
実行ファイルソースファイルを問わず、故意錯誤を問わず」と装飾されている物として扱う。
・著作権者は本ソフトウェアに関する一切の保障義務をもたない。
・上記条項唯一の例外として、本ライセンスに違反した場合を除いて著作権者から
本ソフトウェアに関する一切の法的措置を受ける事が無い事のみ保証される。
・著作権者やその他保持者がこのライセンスの範囲で行う活動に支障が無い範囲であれば何を行っても構わない。
・上記条項の”何を行っても構わない”には本ソフトウェアの製作者を偽っての再配布も含まれる。
・全ての権利の行使において、著作権者への連絡、著作権者やライセンス条項の記載、
適用ライセンスなどの制限は一切存在しない。
著作権者名:sweetie
面倒な人向けライセンス解説:
作者やライセンスの記載義務すらありません。
再配布や改造など申告なし記述なしで好きにできます。
技術情報(と、どうでもいい話):
ソースコード的にはimport_listから派生して作った。
なので、動作する仕組みもimport_listと同じで、自前でメモリー上にレイアウトしてチェックしている。
GuardCFの習作として作ったもの。
LoadConfigのサイズが0x5Cなのに0x40としてDataDirectoryには定義されていて大変だった。
コンパイラのバグか、もしくは古いWindowsに0x40かで==しているコードがあり下位互換を維持するためか
どっちにしろ読む側からしたらたまったものではない。
GuardCF自体の説明がないのは、まだ調査中ではっきりとわかっていないからなのと
最終的にはブログにそういったことをまとめるつもりなので、記述を分散させたくないから。
相変わらずまともな資料がほとんどなくて大変だった。
Windowsに標準で入った機能なのに資料少なすぎるのなんとかならないものか。