プログラムを解析する(6)
前回
- テキストの読み込みを特定した
今回
- 読み込まれたテキストを追跡する
ないよー
前回と同じところからスタートです。
バッファの先頭バイトを選択した状態で、ブレークポイントボタンを押します。
すると、その場所を読み書きもしくは実行したときのブレークポイントを設定できます。4バイトにして有効にします。
プロセスを進めると早速引っかかりました。BOMのチェックをしているようです。
更に進めるとメモリの転送をしている箇所にあたりました。xmmに一度退避して、edi先にコピーしているようです。
転送先にもブレークポイントを置きます。転送元のブレークポイントは用済みなのでDeleteしました。
転送先の読み出しに引っかかりました。ここでもBOMチェックをしています。
そのちょっと先です。文字列から改行(0x0a)を探しているようです。
怪しげなところにぶつかりました。
ステップ実行していくと、0xD800や10FFFFがあり、UTF-8へのあからさまな意図を感じ取れます。
あややや、やはり。UTF-8からUCS2への変換を自前でやっているようです。
追加した日本語はどうでしょうか。
- に → 0x306B
- ほ → 0x307B
- ん → 0x3093
- ご → 0x3054
大丈夫でした。
次回(7)へ続く