見出し画像

[統合版] LocalPlayerのオフセットの取り方

統合版クライアントを作るチュートリアル第一弾はLocalPlayerの探し方です
これができるとLocalPlayerのSDKを作ることができます

使うもの

  • Cheat Engine (バージョンはなんでもいいです)

  • IDA Pro (今回は使いません)

バージョン

  • Minecraft 1.20.31

座標を探す

まずチートエンジンを起動してMinecraft.Windows.exeを選択します

画像
左上のコンピューターマークから選択

そうしたらワールド(ローカル推奨)に入って自分のY座標を検索にかけます

画像
画像
赤線部分のところを一緒にしてください

そうしたらFirst Scanを押しましょう
すると大量に結果が出るので

画像

マイクラ側で移動をしてY座標を変えてNext Scanをしてください

画像
画像
赤線部分のところを一緒にしてください

そうしたらNext Scanを押してください
するとだいぶ結果が減ると思うので

画像

アドレスが書いてあるこのリストをCtrl + Aしてすべて選択し、
左下の矢印を押します

画像

そうしたらこのよう画面になるはずです

画像

そうしたら下のリストにある値を半分選択して適当に値をいじってみましょう
(Ctrl + Shift + クリックで複数選択 & クリックで編集)

CheatEngine側で編集したときにマイクラの自分の位置が変わったら
その選択したリストの中に座標のアドレスがあります。
そうでなければもう半分を編集してみてください。

そうしたら、それを繰り返して最後の一個までになるまで繰り返してください。

画像
最後の一個まで絞れたやつ

そうしたらこのアドレスを右クリックして「Browse this memory region」
をクリックしてください

画像


これでプレイヤーのY座標を見つけることができました
そうするとこのよう画面が出てくるので下のほうのところを右クリックして
Display Type -> Floatを選択してください

画像

そうしたら少し上にスクロールするとこのようにxyzの値が並んでいるのを確認できます。

画像

これを全部追加しましょう (右クリックしてAdd this address to the list)


画像
すべて追加し終わったあとの画面

これで無事にLocalPlayerの座標を見つけることができました!

インスタンスを探す

それではLocalPlayerのインスタンスを見つけていきましょう。
というのも、今見つけた座標はあくまでも座標なので、
実際にLocalPlayerのインスタンスを見つけておいたほうが後々楽です。

今の座標はLocalPlayerの中のStateVectorComponentという
LocalPlayerの要素です。

画像

今からStateVectorComponentを使ってLocalPlayerのアドレスを見つける方法を紹介します。

まずX座標(重要)のアドレスをダブルクリックしてアドレスをコピーします。

画像

これをCheat Engineで8バイトで検索をかけます


画像

すると一つだけ結果が出るのでそれをアドレスリストに入れます。
そうしたら追加したアドレスを右クリックして
「Find out what accesses this address」を押します。
なにか聞かれたらyesを押しといてください

画像

するとこのように
mov ..,[… + 00000…] のような命令がたくさん出てくると思います

画像

その中のどれかをダブルクリックして
The value of the pointer needed to find this address is probaly ~
の近くで右クリックをしてアドレスをコピーします

画像

私は今回25ABBC39450になりました。
これでLocalPlayerのアドレスを見つけることができました!

右の「Add Address Manually」をクリックしてコピーしたアドレスをいれ
LocalPlayerのアドレスを保存しておきましょう。

Vtableのアドレス

LocalPlayerのインスタンスを見つけることができたのでそのままVtableを取っておきましょう。
Vtableというのは一言でいうと関数リストです。

画像

これをDllInjectionで呼び出して使うことができるのでとても便利です。

まずLocalPlayerのアドレスを右クリックして


画像

「Browse this memory region」をクリックします
すると画面が出るのでDisplayTypeを8 byte (hex)にしてください

画像

そうすると最初の8バイトが7FF~から始まるアドレスであることがわかります。
これがVtableのアドレスです。
Vtableは基本インスタンスの最初の8バイトにあるのでそれで取ることができます。
これの7FF~から始まるアドレスをコピーして手動でアドレスリストに入れてください

画像

これでLocalPlayerのVtableのアドレスを見つけることができましたが、
これでは、起動するごとにVtableのアドレスが変わって都合が悪いので
オフセットを取得します。

画像

Vtableのオフセットというのはベースアドレス(起動時に各プロセスに割り当てられるアドレス)からの距離のことを言います。

Vtableのアドレスをダブルクリックして
「- Minecraft.Windows.exe」を入力します

画像

OKをおすと


画像

このようにアドレスが小さくなるはずです。
今回は「5059DC0」がLocalPlayerのVtableへのオフセットでした。

これでLocalPlayerの座標、インスタンス、Vtableを見つけることができました!
次回はこのVtableをもとにSDKを作る方法を解説します。

いいなと思ったら応援しよう!

コメント

ログイン または 会員登録 するとコメントできます。
[統合版] LocalPlayerのオフセットの取り方|かみすきっだー
word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word

mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1