SimpleROHook jRO 2015.02.03のパッチについて

SimpleROHook jRO 2015.02.03のパッチについて少し書いておきます。技術的な事なので読みたい方だけどうぞ

jROでの確認をしていませんがbROのほうにも同様の変化があったのを確認しました。

対処方法ですが避難所に少々書き込みがあるようですが概ね正解です。正解として出すとするなら USE_GAMEOBJ_COUNTER というプリプロセッサを定義して以下のようにするべきかと思います。

動作としては CGameObject のコンストラクタが呼び出されると QWORD の一意のカウンターがインクリメントされていき各オブジェクトへ埋め込まれていきます。

バイト長が8ですがコンパイル時にアラインメント(境界整列)されて以下のようになります。12バイトのデータが追加されたように見えるのはこのためです。

管理人的にはデバッグカウンターの消し忘れかなと邪推しております。

例外的な物は恐らく上記の物だけですので、残りの不整合は各自の努力に委ねます。pull request してくれればマージします。

今後のために記事としてまとめておくべき事が一つ出来てしまいましたが、年始から体調不良が続いて、季節も病にやさしくない時期に突入してしまったため落ち着いてからという事で何卒。

さらにもっと詳しく解説

bROの例でアレですが、見るべきところとしては CGameObject のクラス関数のテーブルです。

各関数の実装と前後関係、テーブル長から判断が付くかと思います。

テーブルのアドレスが発見できれば、それを元に検索してコンストラクタが発見できます。

 

コメントを残す