pop↑ push↓

☆ (ゝω・)v

プログラムを変更する(4)

ck2のパッチ情報です。

前回

popush.hatenablog.com

今回

パッチを作っている最中にバージョンが2.8.0から2.8.1に上がりました。しかたないね。最初からやり直します。訳文テキストのアップデートは待ってください。

改造用にコードセグメントを追加

0x2000ほど用意しました。

popush.hatenablog.com

デバッガ用の修正を追加

これは今回初登場です。このあたりを見てよしなにします。最終的には取り除きます。

steam_api.h (Steamworks Documentation)

stackoverflow.com

ヒープ拡張

.fntで文字列検索します。いました。

f:id:saito-matanki:20171209003942p:plain

使っている場所を見ます。怪しい箇所にブレークポイントを置いておきます。

f:id:saito-matanki:20171209004120p:plain

実行したらスタックトレースを見ます。スタックトレースには呼び出し元がリスト化されています。実は最近までこの機能を知りませんでした。勉強不足ですね。

後は怪しい箇所を見つけます。下記のcall dword ptr [eax+8]は怪しいです。見分けがつくまで慣れが必要です。

f:id:saito-matanki:20171209004540p:plain

ブレークポイントを置いて、中の関数をステップ実行します。ヒープサイズの指定(push 2684h)がありました。

f:id:saito-matanki:20171209005032p:plain

ランチャーのフォントヒープサイズ指定を見つけられたので、同じ方法で本体のフォントヒープサイズ指定(push 2690h)も見つけられます。

f:id:saito-matanki:20171209005317p:plain

後はそれぞれを検索して適当に直せば完了です。

f:id:saito-matanki:20171209005734p:plain

ヒープ確保(追記)

Heap確保した領域を0クリアしておきます。下記を参考にdwFlagsを変更します。

HeapAlloc function (Windows)

f:id:saito-matanki:20171210162416p:plain

プログラムを変更する(5)へ続く