Skip to content

Instantly share code, notes, and snippets.

@kimoto
Created April 14, 2011 07:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kimoto/919038 to your computer and use it in GitHub Desktop.
Save kimoto/919038 to your computer and use it in GitHub Desktop.
GSDの仕組みについてレポート
Subject: GSDの仕組みについてレポート
Author: KIMOTO
※関連事項としてVACのチート検出についてもメモ
■GSDについて
DirectXのAPIフックをして、任意のピクセルを上書きすることが出来るライブラリ
DirectXのAPIをフックしてるため、対象となるアプリケーションがDirectXを使っていないと意味がない。
たとえばMinecraftなどOpenGLで映像を描画しているソフトでは使えない
GSDを利用したソフトウェアについて
GSD BBS Reader - http://mosax.sakura.ne.jp/fswiki.cgi?page=FrontPage
GSD Movie Player - http://mosax.sakura.ne.jp/fswiki.cgi?page=GSD+-+MoviePlayer
GSD FPS - http://www.geocities.jp/pokan_chan/
■ライセンスについて
GSDはソースをふくめ、gsd.dll, gsd.lib.vc, gsd.hが公開されてるので
これらを使用して自分のアプリケーションに組み込むことができる。
ライセンスはLGPLなのでDLLを外部からリンクする(使用する)だけなら
GPLのように利用側のソースを公開する義務はないので比較的気軽に利用できる
■GSD_Crosshair
GSDを利用した習作として、画面の中央にcrosshairを描画するソフトを作ってみた。
GSDによって描画する画像データが小さければそれほど処理は重くなさそうだ。
参考画像: http://gyazo.com/f228ab5feaa2620c5dad4e994328b22d.png
■GSD_Crosshairはチートかどうか
結論から言えば限りなくチートに近いがチートではない、存在だと思う
たとえば、字幕表示ソフトはやっていることがまったく同じだ。しかしBANされていない。
他にもSound Blaster社のCreative ALchemyの仕組みも手法は同じで
DirectSoundのDLLのAPIフックをしている。
DLLに存在する主要な関数(API)のアドレスを書き変えて自分のプログラムを経由させるようにしているのだ。
つまりこういった手法がチートであるとすれば、字幕ソフトもチートとして扱わなければならないはずだ。
もちろん人間的な意志が介在してGSDを利用したクロスヘア描画アプリだけチートとして扱う可能性はあるが
ValveのVAC BAN FAQを見るとこのような「人間的な意志は介在することはない」と書いてあるし
そして「絶対に誤検出しない」とも言っている。
Steam Forum VAC2 FAQ(和訳) - http://www.negitaku.org/news/4540/
>VAC BANは人間の判断が主観には決してなりません
■とはいえリスク管理の必要性
そうはいっても突然VACに「人間的な意志」が介在するようになるかもしれないし
すっかり安心してしまって多用するのは非常に危険だ。
BANの範囲はGame Engineごとらしいので、たとえばCSをメインでやるのであればHL1のエンジンのゲームでは
万が一のためにこういったソフトウェアは利用しないようにするのがベターなリスク管理方法だろうと思う。
L4DをメインでやりたいのであればSourceエンジンゲーム(CS:Sなど)。
当たり前だが過去にBANされた前例がないGSD方式の字幕ソフトを利用することは危険性は高くない。
その事実を知っていたとしても精神的に不安であればリスク管理として、
自分がこれからメインでやろうとしてるゲームと同じエンジンではこういったソフトは利用しないという
リスク管理をしたほうがいいんじゃないという話、俺はそんなことしないけどね
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment