ゲームのアップデートでオフセットが変わる時の対処法

アップデートに強いスクリプトを作る方法です。


Cheat Engine 7.5

Tutorial-x86_64.exe (Step 2)


[ENABLE]

aobscanmodule(INJECT,Tutorial-x86_64.exe,29 83 ?? ?? ?? ?? 48 ?? ?? ?? E8 ?? ?? ?? ?? 8B ?? ?? ?? ?? ?? 41)
alloc(newmem,$1000,INJECT)

label(code)
label(return)

alloc(originalbytes,6) // オリジナルのバイトを保存する用のメモリ

originalbytes:
  readmem(INJECT,6) // 確保したメモリにオリジナルのバイトを6バイト読み込む

newmem:

code:
  push rax // raxレジスタの値をスタックに退避
  xor rax,rax // raxレジスタの値をクリア(0にする)
  mov ax,word ptr [originalbytes+2] // raxレジスタ(ax)に2バイト(オフセット)をコピー
  mov [rbx+rax],#100 // raxレジスタを使用してHelathに100をコピー
  // sub [rbx+000007F8],eax ← コメントアウトしてオリジナルの命令を消去
  pop rax // 退避した値を戻す
  jmp return

INJECT:
  jmp newmem
  nop
return:
registersymbol(INJECT originalbytes) // originalbytesをシンボルに登録していないとDISABLEセクションでエラーが発生する

[DISABLE]

INJECT:
  readmem(originalbytes,6) // ここでoriginalbytesを使うためシンボルに登録しておく必要がある

unregistersymbol(INJECT originalbytes) // シンボルを解除
dealloc(newmem originalbytes)          // メモリを解放


アップデートされたと想定するため、逆アセンブラウインドウでオフセットの7f8を800に変更してみます。変更後もスクリプトを有効/無効にできるのを確認できました。


レジスタが変わった場合はaobscanに失敗するため、スクリプトを有効にできません。バイトでいうと83の部分です。少し改良すればレジスタの変更にも対応できると思います。


参考リンク
https://forum.cheatengine.org/viewtopic.php?p=5777881&sid=a0711dd66db54a800d2453de2dfbff59


追記:

Cheat Engine 7.1、7.5の両方でスクリプトの動作を確認できました。Tutorial-x86_64のStep 2でオフセットが以下のように変化しています。

7.1 -> 7f0
     ↓
7.5 -> 7f8


その他の方法

code:
  db C7 83
  readmem(INJECT+2,4)
  db 64 00 00 00
  jmp return

dbとreadmemで命令を作る方法です。上記の場合
mov [rbx+offset],00000064
というコードを生成しています。


また、reassembleというAuto Assemblerコマンドもあります。
https://wiki.cheatengine.org/index.php?title=Auto_Assembler:reassemble

チート専用の掲示板つくりました。

チートエンジン掲示板

https://plumsnake6.sakura.ne.jp/bbs/


・チートをリクエスト
・値の見つけ方
・スクリプトなど


チートエンジンのCTが使えない!有効にできないスクリプトの直し方

本来テンプレートを使用してスクリプトを作成した場合、オリジナルコードのコピー(Snippet)が自動で挿入されます。しかしながら、ネット上からダウンロードしたCTはSnippetを削除していることが多く、AOBを修復するのが困難です。この記事ではそんな時に役立つワンポイントアドバイスをご紹介します。


使用するゲームは「英雄伝説 閃の軌跡IV」です。
CTのダウンロードはこちらから



チート名はAlways See Treasure Chests On Map (Portion of Moon Lens Effect)で、
修復するAOBは画像赤枠の「84 C0 44 0F B6 E3 44 0F 45 E6 48 81 C1 68 4D 00 00」です。



まず↑画像のようにAuto Assemblerスクリプトを用意してください。

メインウインドウに戻りスクリプトを有効にした後、Memory Viewer画面に移り、
Ctrl + GでaobTestMemに飛びます。



右クリックからAssembleを選択後、
db 84 C0 44 0F B6 E3 44 0F 45 E6 48 81 C1 68 4D 00 00
と入力します。左端のdbはdeclare bytesの略で「今からバイトを書き込みますよ」という意味です。



これでAOBをアセンブリ言語に変換することができました。
ゲームのアップデートでどのバイトが変わったかを見極めるわけですが、1番怪しいのは684D0000の部分です。ここを?? ?? ?? ??を置き換えてユニークなAOBであることを確かめれば完成です。


84 C0 44 0F B6 E3 44 0F 45 E6 48 81 C1 68 4D 00 00

                      ↓

84 C0 44 0F B6 E3 44 0F 45 E6 48 81 C1 ?? ?? ?? ??



赤枠が目的の命令です。黒字の006A0000はこの記事の最初に作成したAAスクリプトのメモリなので無視してください。スクリプトをオフにすればメモリが解放されて見えなくなります。


AOBの検索方法はこちらの記事をご参照ください。



↑画像のようにAOBを入れ替えましょう。


通常のマップ
通常のマップ
チート実行後のマップ
チート実行後のマップ

チートを有効にできるようになり、マップ上にお宝の位置が表示されるようになりました!


補足説明

AOBを修復し検索したときに、アドレスが複数ヒットした場合はブレークポイントを設定し、ブレークしたのが目的の命令です。


例えば、お金を拾うと所持金が9999になるチートがあるとします。
AOBは「7F 11 BA 29 00 00 00 48 8B CE E8 30」で「7F 11 BA 29 00 00 00 48 8B CE E8 ??」に変更すると2つアドレスがヒットしました。ここから両方のアドレスにブレークポイントを設定し、お金を拾った時にブレークしたのが目的の命令です。

FearLess Cheat Engineの使い方。1分で見つかるCTファイルの探し方&ダウンロード方法

FearLess Cheat EngineとはCheat EngineのCTファイルをダウンロードできるサイトです。


・大量のCTがアップロードされている
・このサイトで探せばほとんど見つかる
・無料でダウンロードできる
・ダウンロードするだけなら、会員登録もする必要なし
・リクエストしたら誰かがチートしてくれるかも?
・Cheat Engineに関するチュートリアルもある


サイトURL
https://fearlessrevolution.com/


フォーラムとトピックについて

フォーラムは5chでいう板。
トピックは5chでいうスレッド。



サイトトップ画面を見てみると、「Tables」というフォーラムに8564のトピックが立っています。その各トピックに対しての返信が合計で174765件です。


CTファイルの検索方法

始めに、Googleで英語のゲームタイトルを調べます。
エルデンリング → Elden Ring


Googleで検索してもわからない場合はSteamで検索してみてください。




「英雄伝説 閃の軌跡IV」の場合、The Legend of Heroes: Trails of Cold Steel IV でした。



英語タイトルがわかったらFearlessRevolutionに移り、
サイト右上にあるSearchから、まずは何も入力せずに検索ボタンをクリックしてください。



ゲームタイトルを英語で入力し、検索ボタンをクリック。



↑画像のようにElden Ringの場合だと3つのトピックがあるので、3つのCTがあるということです。どれを使うかはあなた次第です。全部使ってみるのもありです。②のオレンジで囲っているところは全て同じトピックで、ページが違うだけです。



トピックを開き、下に少しスクロールするとCTがアップロードされています。1番上が最新のCTです。赤矢印のところをクリックするとダウンロードできます。


超便利なサイト内検索


site:fearlessrevolution.com "elden ring"

WEBブラウザの検索窓に入力して検索


site:ドメイン名 検索用語

とすることで目的の検索用語を含んだページを見つけることが出来ます。出てきたページのCTを片っ端からダウンロードしていくと効率が良いです。検索用語にスペースがある場合は""で囲みます。2つ以上の検索用語を同時に検索したい場合は | で区切ります。


site:fearlessrevolution.com eldenring | "elden ring"


トピックを並び替え & 別のフォーラムに移動


各フォーラムを開いた後、ページ下部にスクロールすると↑画像のようにトピックをソートすることができます。ソートとは並び替えのことです。



また、ページ下部にある Jump to をクリックすると別のフォーラムに移動することができます。


トピック内に張り付けてあるコードについて


<?xmlから始まっているコードはCheat EngineのCTファイルです。SELECT ALLを選択後、Ctrl + Cでコピーし、Cheat Engineのウインドウに貼り付けると使用できようになります。






[ENABLE]から始まっているのはAuto Assemblerコードです。

Cheat EngineメインウインドウのMemory View -> Ctrl + A -> 貼り付け

File -> Assign to current cheat table で実行できるようになります。


会員登録すると何ができる?

・アバターの設定
・プライベートメッセージの送信
・ユーザーにEメールを送れる
・ユーザーグループ - サプスクリプション
・その他↓の制限を解除できる


会員登録をしていないと以下のように出来ることが制限されています。


FORUM PERMISSIONS(フォーラムの権限)

You cannot post new topics in this forum
このフォーラムで新しいトピックを投稿できない
You cannot reply to topics in this forum
このフォーラムのトピック内で返信できない
You cannot edit your posts in this forum
このフォーラムで投稿を編集できない
You cannot delete your posts in this forum
このフォーラムで投稿を削除できない
You cannot post attachments in this forum
このフォーラムで添付ファイル(CTやzipファイルなど)を投稿できない



会員登録のやり方

まず、FearlessRevolutionのYoutubeチャンネルの概要からInvitation Codeをコピーします。
https://www.youtube.com/channel/UCkzXwI44jMiLdjgPtOLXGsg/about



サイト画面右上にあるRegisterをクリック。



I agree to these termsをクリック。もちろん無料です。



入力項目は以下の通りです。


ユーザーネーム(3文字以上、20文字以内)

Eメールアドレス

パスワード(6文字以上)

タイムゾーンは

    UTC+ 9:00

    Asia/Tokyo を選択

招待コード(Invitation Code)


下にあるSubmitを押せば、会員登録は完了です!


トピックを立ててチートをリクエストしてみる

会員登録するとトピックを立てれるようになり、自分のCTをアップロードしたり、チートをリクエストできるようになります。


リクエストするにはサイトトップ画面にある  Single Player Cheat Requestsフォーラムに入り、 New Topicをクリック後、以下の手順に従い項目を入力します。


1.トピックタイトル(Subject:)にゲーム名を入れる

例:  [REQ]  Elden Ring


これは他の人が検索したときに引っ掛かりやすくするためです。


2.リクエストする際は以下のようなテンプレートを使う

[b]Game Name:[/b]
[b]Game Engine:[/b]
[b]Game Version:[/b]
[b]Options Required:[/b]
[b]Steam Website:[/b]
[b]Other Info:[/b]


参考リンク


3.自分の文章を入力する

2のテンプレートに加えて、英語で「チートしてくれませんか?」などの文章を追加します。これに関してはGoogle翻訳を使うか、他の方のリクエストを参考にすればできると思います。


4.作成してもらった場合はお礼を忘れずに


手順3と4は必須ではありません。


記入例:


CTが見つからない場合

可能性としては低いですが、以下のサイトを探せばあるかもしれません。