UE4/UE5でEasy Anti-Cheat(EAC)を実験的に自作ゲーに導入する

## 開発者登録を事前にしてください

https://dev.epicgames.com/portal/ja/

:::note warn
Easy Anti-Cheat(以下EACと呼びます)で保護状態の取得にはEOSSDKを内部的に組み込む必要があります。
今回は導入の仕方の説明です(直接exeを起動できるので意味が無いです)
:::

プロジェクトのC++化を行ってください。からのC++クラスを追加で大丈夫です(ディレクトリの構造が変わるため)

### ①SDKをポータルからダウンロードします

![Desktop Screenshot 2023.12.22 - 00.51.59.86.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953041/2901d8c9-5c38-5bd7-785a-c895a46cc03a.png)

### ②ファイルを取り出し、展開します

例えば

EOS-SDK-30020700-v1.16.1-new\SDK\Tools\EOS_AntiCheatTools-win32-x64-2.0.3.zip

みたいな感じでzipがあると思うので取り出し解凍します。

### ③ファイルをゲームファイルにコピーする

EOS_AntiCheatTools-win32-x64-2.0.3\dist\EasyAntiCheat

このEasyAntiCheatのファイル自体をパッケージ化したゲームのルートディレクトリに置きます

![Desktop Screenshot 2023.12.22 - 01.10.06.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953041/1cd58b30-9a8a-3e94-aedf-c813b074a448.png)

### ④インストール、アンインストール用のbatファイルの作成

テキストファイルInstallEAC.txtとUninstallEAC.txt(名前は何でもいい)を作り以下のように記述します

```InstallEAC.txt
@echo off
cd %~dp0
EasyAntiCheat\EasyAntiCheat_EOS_Setup.exe install <Your ProductId>
```

```UninstallEAC.txt
@echo off
cd %~dp0
EasyAntiCheat\EasyAntiCheat_EOS_Setup.exe uninstall <Your ProductId>
```

その後拡張子を.batに変更します。
ProductIdはデベロッパーポータルの製品設定から取得できます。

![Desktop Screenshot 2023.12.22 - 01.23.14.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953041/e57a639f-e116-abb5-7634-92615824def6.png)

### ⑤Jsonファイルの設定

gameroot\EasyAntiCheat\Settings.json を編集します。

executableに実際のexeのルートファイルからのパスを書きます。又 " \ "を" \\\ "に書き換えます
例えば　EACTest\\Binaries\\Win64\\EACTest.exe のようになります。

![Desktop Screenshot 2023.12.22 - 01.37.09.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953041/d59c0893-6bea-4694-51cf-1751808ec9ac.png)

後のIDはデベロッパーポータルの製品設定から取得してください。

### ⑥"ひとまず"起動

EOS_AntiCheatTools-win32-x64-2.0.3\dist\start_protected_game.exeをゲームのルートディレクトリに配置します。

![Desktop Screenshot 2023.12.22 - 01.53.13.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953041/272ba2ce-25f3-0f31-0067-fb792cdb7e7c.png)

start_protected_game.exeをダブルクリックするとEAC保護状態でゲームが起動されます。

この時あなたのPCでEACがインストールされていない場合起動時エラーが出ます。

![Desktop Screenshot 2023.12.22 - 01.52.23.72.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953041/b6ce2079-d521-2b67-c1f7-c3ebb2bd3234.png)

この場合先ほど作ったInstallEAC.batを実行してください。
あなたがAPEX、Fortnite、THE FINALS(フレンド募集中)といったEACを使用しているゲームを遊んだことがあるが、この環境を再現したい場合EasyAntiCheat_EOS_Setup.exeがあるディレクトリでcmdで

```
EasyAntiCheat_EOS_Setup.exe qa-factory-reset
```

を実行するとアンインストールされます。

### ⑦整合性ツールの使用

ベロッパーポータルのアンチチートからアンチチートを有効にし、整合性キーのダウンロードを行います。
その後 EOS_AntiCheatTools-win32-x64-2.0.3\devtools ファイルにダウンロードした
base_private.keyとbase_public.cerを配置します。

![Desktop Screenshot 2023.12.22 - 02.20.37.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953041/43f3e616-6971-5b4b-9eb9-38c16b347aef.png)

その後そのディレクトリをcmdで開き
```
anticheat_integritytool.exe -productid <Your ProductId> -target_game_dir "<ゲームのルートディレクトリのフルパス>"
```

を実行します。ディレクトリは C:\Users\aoharu\Desktop\WindowsNoEditor のようになります。
すると

[Info] [Success] EAC Hash Catalogue created: C:\Users\aoharu\Desktop\WindowsNoEditor\EasyAntiCheat\Certificates\base.bin
[Info] [Success] Certificate copied: C:\Users\aoharu\Desktop\WindowsNoEditor\EasyAntiCheat\Certificates\base.cer

のような表示が出れば成功です。ゲームのファイルにEasyAntiCheat\Certificatesというファイルができているはずです。
anticheat_integritytool.cfgで詳細設定は変えられます。
ハッシュ値の取得や最大ウィンド起動数制限などを行っているようです。

![Desktop Screenshot 2023.12.22 - 02.31.27.70.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953041/76431c5c-e0be-cfae-cbc5-5c8f59d300ae.png)