チート対策その2

ちょっと本気出してみた。

継続的しないといけない手法は一般ユーザーには損しかないので禁止するとして、一回で済む方法をざっと思いついただけやってみた。
結果は上々、自分だったら出来なくはないけどやりたくはないレベルになったと思う。

具体的に書くとデバッガの感知・一部処理の隠蔽・改造されない限り実行されない仕組みのコードをいくつか仕込んでみた。
前回の記事に書いた分も含めて全て自プロセス内で完結する機能なので、こっちに干渉してこない限り一切影響を与えない良心設計。
その分防御力は低めだけど、それはしょうがない。

一つ目:デバッガの上で動いているときは即座に終了するだけ。
二つ目:デバッガなどからいくつかの処理を見つけにくくしただけ。
三つ目:ウイルス的な動作をする罠というわけではなく、想定外の状態を検地して復帰する類の機能。
ま、たぶん失敗して例外はいて落ちることになるとは思うけどね。

前回の記事も含めて、概要だけとはいえ公開しちゃまずいんだが、
それでも内容を公開しているのは「必要な機能であろうと裏で好き勝手されるのが嫌い」という理由からくる「処理内容は最低限度は公開する」という自分ルールから。
本当ならソース公開もしたいところだけど、そうするとチートに流用されるというジレンマ。

ちなみに、この修正で一番被害を受けるのは自分。
なぜなら、開発中のデバグ作業まで上記対策の影響を受けるから。
一発でチート対策機能をON/OFF出来るようコードとmakefile書き直せばいいんだけど、きっとやらない。
万が一OFFのままリリースしたら目も当てられないしねー

チート対策

またまたth105_aiの話

作者は非常に小心者なので、ネット対戦の差込マクロという話題を見た瞬間悪用されているのでは?と不安に襲われ
自力で改造試みたら割と簡単に出来てしまったので、最低限度だけでも対策をすることに。

内容は簡単、LoadLibraryExWとDbgBreakPointつぶしだけ。
実際これだけでは何の対策にもなってないのだが、やらないよりはマシの精神ということで。

ちなみに、上記の対策は
実行中に外部からDllを突っ込めない、外部からDllの読み込みを伴う機能の実行を指示できない、外部からプロセスにアタッチする機能の一部が使用できないという効果があります。

本当なら、コードセクションのハッシュなり例外処理によるデバッガー介入の検地など色々やっておきたいけれど
そこまでいくとパフォーマンスに影響が出るので自重。
本気で対策するならもっと画期的な何かを考えないとなー