[統合版] 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を作る方法を解説します。


コメント