pop↑ push↓

☆ (ゝω・)v

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

CK2パッチの技術情報です。

前回

popush.hatenablog.com

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

EU4でいうと下記です。今回は0x2000とりました。 popush.hatenablog.com

ヒープ拡張

EU4でいうと下記です。ランチャーのヒープは見つかりました。0x2684で、オフセットは0x8Cでした。サイズは0x400でEU4と同じでした。ヒープサイズは0x42684にしました。 popush.hatenablog.com

ヒープサイズの見つけ方についてメモしておきます。[edx+ecx*4+8Ch]というコードが配列にデータを入れているということがわかったら、edxが関数にどのように渡されているかを調べます。今回はecx→edi→[ebp+var_1C](ローカル変数)→edxでした。ということで、ecx渡しされていることがわかります。そうしたら、呼び出し元の関数までいき、また同じことを繰り返します。しばらく繰り返すと、今度はそのアドレスに対して、heepAllocしている関数がでてくるはずなので、探します。heepAllocを見つけたらその前でpushされている値があるのでそれがヒープサイズです。

フォント

フォントの定義はスプレッドシートにまとめてあります。基本的には遊書体とSource Hanを使っています。一部例外としてメイリオを定義しています。 フォントの作り方に注意があります。EU4と同じ方法でつくると読み込みません。下記に注意します。

  • 1行目のunicode=1 は削る
  • 1行目のoutline=0は削る
  • 1行目のpacked=0以降は削る
  • 2行目のpage id=0は削る
  • chars count=xxxxは削る
  • charの行にある chnl=xxは削る

このフォントとヒープサイズの修正で、日本語フォントを読み込んでもランチャーが強制終了すること無く起動するようになります。