今週のアセット
スクリプト
$32.40 => $22.68 30%OFF 【開催期間】2017年8月14日22:00
悪意のあるプレイヤーから、メモリやセーブデータを不正に改造してゲームを破綻させないように防止&検出するスクリプトです。
不正対策は万全ですか?
チーターがアプリ内課金アイテムやレアアイテムを大量獲得したり、
コリジョン判定を無視して「すり抜けキャラ」が登場する不正行為。見かけますよね。
マルチプレイやスコアを競うようなゲームに導入すべきアセットです。
メモリ操作でパラメータを不正改ざんを防ぐ
ACTk Tutorials: Obscured types - YouTube(2:41)
とあるハックツールで5の値を検索して、ヒットしたらパラメータを999など値を変更する。
その結果、ゲームの値も999に書き変わったらビンゴ!そうやってゲームのパラメータを書き変えてハックされています。
それを防止する機能がコチラ
ソースコードを以下に変更するだけで、ハックツールでかなり発見し辛くなります。
using CodeStage.AntiCheat.ObscuredTypes; // 宣言 ----- public int lives = 5; // この値はハックツールで改ざんされる // ↓intの型を、ObscuredIntに置き換えるだけで完了。 public ObscuredInt lives = 5; // 対策済み
検索範囲を最大まで広げれば見つかる
ツールの検索範囲を最大まで広げて頑張ればいつかは辿り付いてしまう。
その場合、不正に書き変えられた時の「検出」を組み込んで阻止しよう。
(「不正な操作が行われました」のダイアログを出すなど)
using CodeStage.AntiCheat.ObscuredTypes; using CodeStage.AntiCheat.Detectirs; -----
public ObscuredInt lives = 5; // この変数が発見され改ざんされると検出発動 private bool cheaterDetected = false; void Start() { // チート検出時に呼び出すメソッドを登録 ObscuredCheatingDetector.StartDetection(OnCheaterDetected); } // フラグを立てる。もしくはここにダイレクトで書く private void OnCheaterDetected() { cheaterDetected = true; // Update()を止めるフラグ } void Update() { if(cheaterDetected) { // チート発生検出した。 // ダイアログを表示させてタイトルに戻すなり対処。 } }
超簡単なソースです。動画より簡略化しました。
PlayerPrefsのセーブデータを暗号化&チート検出
ACTk Tutorials: ObscuredPrefs - YouTube(2:20)
PlayerPrefsを暗号化して保存し、チート行為の改ざんがあったら検出もできるスクリプトです。
既存のスクリプトに「一括置き換え」で簡単に実装できます。
最小限のコード
using CodeStage.AntiCheat.ObscuredTypes; // 宣言
// セーブ
ObscuredPrefs.SetInt("キー名",値); // 頭にObscuredPrefs.を追加するだけ
// ロード
num = ObscuredPrefs.LoadInt("キー名");
不正を検出する場合
(動画に近い感じで、コピペして使えるコードにした)
using CodeStage.AntiCheat.ObscuredTypes; // 宣言 ---- private bool cheated = false; // チートフラグ void Start() {
// チート検出 ObscuredPrefs.onAlterationDetected = OnCheatingDetected; }
// チートフラグを立てる privare void OnCheatingDetected() { cheated = true; }
// チート検出後にセーブデータをロードする private void DataLoad() { if ( cheated ) { // チートが発生したらここを通る。 } // ロード int num = ObscuredPrefs.LoadInt("キー名"); }
ゲームスピードのハック検出
ACTk Tutorials: SpeedHackDetector - YouTube(2:33)
ハックツールでゲームスピードをコントロールして、超ゆっくりにすればTASクラスの反則行為ができてしまいます。
スピードハックも簡単なセットアップで検出できます。
不正が起きたら強制的にタイトル画面に戻すなど鉄槌を下しましょう。
- PlayMakerで動作します(PMアクションによる)
- 偽陽性を回避するための機能を持っている
- 時間の変化とアプリケーションの "しゃっくり"を尊重する
- すべてのプラットフォーム(PC、Mac、iOS、
Android、Windows Phone、Windowsストア)
壁をすり抜けて自由に動く不正検出
ACTk Tutorials: WallHackDetector (shoot or walk through walls) - YouTube(3:11)
白猫プロジェクトでやってた人を見たことあるけど、これを使って自由に移動してた説が浮上してきた。マルチプレイでこれに当たると萎えるので対策しておくべき。
検出のみなので、不正がおきたらスタートポイントに戻すか対策しよう。
WallHackDetectorのハイライト
- ネイティブを検出する
- ネイティブを検出する
- 未知のパッチを検出するために汎用サンドボックスを使用する
- PlayMakerとBehaviorDesignerで動作します
- すべてのプラットフォームで動作します
アセンブリインジェクション
ACTk Tutorials: InjectionDetector - YouTube(1:10)
詳しくはよく分からないけど、
上記全ての検出をスルーさせる特別なユーザー向けのホワイトリストを作るスクリプト。
エディタからユーザーが追加出来る様になっていました。
InjectionDetectorのハイライト
- アセンブリ(DLL)注入を検出する
- すべてのシステムアセンブリにデフォルトのホワイトリストがあります
- ダイナミックアセンブリ用に編集可能なユーザーホワイトリストがあります
- PCとAndroidで動作する
インジェクション検出器によって信頼されるアセンブリのユーザ定義ホワイトリスト
ファイル、フォルダ、直指定から出来ます。
特定のユーザーに対してホワイトリスト定義が行えます。
インポートしてサンプルシーンを実行してみた
v1.5.6.1の最新バージョンです。
TestSceneを使います。
実行すると、「3つのタブ」から色々試せるようになっています。
「変数の保護、検出」、「セーブデータ拡張」、「各種不正行為検出」
今回はセーブエディタについて知りたかったので、
適当に保存してくれるセーブを行ってエディタを詳しく紹介します。
PlayerPrefsの保存できる型が増えてる!
ACTkには、PlayerPrefs:ObscuredPrefsのセキュアなレイヤがあります。 ビューからデータを保護し、不正な試みを検出し、オプションで現在のデバイスにデータをロックし、追加のデータをサポートします
データ型。
小さくて見づらいですが、セーブとロード、削除が行えます。適当にセーブしてデータを作りました。
int float string以外もサポート
画面右下に注目すると、保存できる形式一覧が載っていた。
long、Vector3、Rectなど多くの型も保存できます。
ただしこれらの型は、スクリプトから保存する必要があることと、
Prefsエディタからキー名は目視できるけど、パラメータは暗号化かかって見えない状態になります。
どうやら独自の変換方法で実現してるみたい。これは使えるぞ!
セーブデータの閲覧&編集エディタ
PlayerPrefsでセーブしたデータをリスト化するエディタ
機能まとめ
・直接パラメータの追加(データ形式:Int Float String)
・既存パラメータの編集(暗号化(黄緑色)が掛かってなければ編集できる
・リストのソート、検索
・データのセーブ、削除
・暗号化 / 解除の切り替え
・画面右上の「Crypto kev」で暗号化キーを自由に置き換え可能。・X:削除 S:セーブ E:暗号化 D:復号化 ・・・:クリップボードへコピー
エディタに直接キーデータを追加するときは、左上の「+」をクリックして、
AssetSoreMatomeのStringを「On Sale This Week」で保存したところ、すんなりリストに追加されました。これは便利♪
黄緑色の所は、Int Float String型以外(もしくは暗号化状態)は、閲覧できません。
セーブデータの「エクスポート&インポート」が入ってない
それができる便利なアセット「Advanced PlayerPrefs Window」(記事はこちら)
このアセットで開くと暗号化の掛かったところは文字化けしちゃいますが、そのままエクスポート&インポートしても全然問題無し!双方運用できて超便利です。
TabとUtility
Prefsのエディタには2つの開き方が存在します。
先ほどまで開いていたのは、Unityお馴染みの「タブ」で、ドッグに接続することができる。
一方、Utilityで開くと、ヘッダ外観が新しいMacOS独特の「赤灰色緑」アイコンに切り替わり、常に最前面で表示していてくれます。
Macではタブの最前面が出来ないから便利!このアセットに限らず広まって欲しい。
設定画面
とりあえずキャプチャのみ
海賊版対策
作ったゲームを不正に改造されて、某国のゲーム改造サイトで勝手にローカライズされて海賊版になったのを見つけたことがあります。
その時に迷わず買ったアセットです。
Anti-Cheat Toolkitは海賊版を防ぐ為のアセットではありませんが、
海賊版でパクられた後に対策済みのデータをアップデートしても既に丸裸にされてしまっているので、時既に遅し。悪意のあるユーザーのやりたい放題になってしまいました。
卍ユーザーを垢BANさせるか、アップデートのバージョンデータを見て対策する方法もありますが、アップデートしないユーザーが遊べなくなってしまうのでユーザー離れにもつながります。
海賊版対策として、オススメなのがソースコードを難読化するオブファスケーター
「Obfuscator」が足止めとして有効です。
それプラス、今回のアセット「Anti-Cheat Toolkit」で防御力が高くしよう。
不正してたユーザーがぱったり消えてスッキリします。
ただ、広告収益型のアプリであれば、海外版になったときに広告を外さずに移植してくれれば逆に売り上げが増加したりするケースも・・・
不幸中の幸いパターンもありますが、広告主のIDを改造されればお終いなので先手を打っておきたいですね。
On Sale This Weekについて
現在、アセットストアからデイリーセールは無くなり、
1週間分のウィークリーセールをやっています。「On Sale This Week」
このサイトでは、週間セールの扱いをどうするべきか模索中。
とりあえず安定するまでこの流れで配信してます。
- 月曜夜:7アセット概要カタログ記事を配信(多少情報が得られます)
- 火曜〜月曜22:00:不定期でバラバラと紹介
- 日曜深夜に、「そろそろ終了のお知らせ」まとめ記事を配信
特別企画まだ?
色々あって「まだ」です。
現在、このブログは以下のように動いてます。
- パブリッシャーセール(サマーセール真っ最中なので優先)
- On Sale This Week 週間セール(人気アセット優先)
-
『Dungeon Architect』 のモンスターAI、応用編について
- 『PuppetMaster』vs『Final IK』vs『ユニティちゃん』IK編ですが、検索するとザクザク情報出てくるし二番煎じになってしまうので捻ったネタを投稿予定
- 『Behavior Designer』隠れ企画ですが忘れてません。絶対にやります。
- 2Dの何かTileMapEditorも気になる(アセットが大量にあるから使わねば)
- とっておきの記事(まだコマが揃ってないので内緒)
今回、かなり長めな記事になってしまいましたが、
最後まで読んで下さりありがとうございました。
簡単でしっかりゲームを守れるオススメアセットです。
22.68ドルの計算結果 (1ドル 109.3060 円)
22.68ドル は、 2,479円
定価32.40ドルなら、3,541円