pop↑ push↓

☆ (ゝω・)v

プログラムを解析する(6)

前回

popush.hatenablog.com

  • テキストの読み込みを特定した

今回

  • 読み込まれたテキストを追跡する

ないよー

前回と同じところからスタートです。

バッファの先頭バイトを選択した状態で、ブレークポイントボタンを押します。 f:id:saito-matanki:20170803002010p:plain

すると、その場所を読み書きもしくは実行したときのブレークポイントを設定できます。4バイトにして有効にします。 f:id:saito-matanki:20170803002239p:plain

プロセスを進めると早速引っかかりました。BOMのチェックをしているようです。 f:id:saito-matanki:20170803002534p:plain

更に進めるとメモリの転送をしている箇所にあたりました。xmmに一度退避して、edi先にコピーしているようです。 f:id:saito-matanki:20170803002819p:plain

転送先にもブレークポイントを置きます。転送元のブレークポイントは用済みなのでDeleteしました。 f:id:saito-matanki:20170803003313p:plain

転送先の読み出しに引っかかりました。ここでもBOMチェックをしています。 f:id:saito-matanki:20170803003550p:plain

そのちょっと先です。文字列から改行(0x0a)を探しているようです。 f:id:saito-matanki:20170803003916p:plain

怪しげなところにぶつかりました。 f:id:saito-matanki:20170803004119p:plain

ステップ実行していくと、0xD800や10FFFFがあり、UTF-8へのあからさまな意図を感じ取れます。 f:id:saito-matanki:20170803005118p:plain

あややや、やはり。UTF-8からUCS2への変換を自前でやっているようです。 f:id:saito-matanki:20170803005438p:plain

追加した日本語はどうでしょうか。 f:id:saito-matanki:20170803005852p:plain

  • に → 0x306B
  • ほ → 0x307B
  • ん → 0x3093
  • ご → 0x3054

大丈夫でした。

次回(7)へ続く