09/06/27 12:32:24
VB製の文字化け回避方法
00 00 00 64 00 44 42 01 00 06 54 61 68 6F 6D 61|.....DB...Tahoma
上のようなフォント指定があった場合の内容は以下の通り
00: Font charset
00: ?????????????
00: Strikethrough*8+Underline*4+Italic*2
Strikethrough = 0 'Falsetrue=1000=08h
Underline = 0 'Falsetrue=0100=04h
Italic = 0 'Falsetrue=0010=02h
64 00: Weight = 100
44 42 01 00: Size = 8.3 (00014244h=82500)
06: lenght of the フォント名
54 61 68 6F 6D 61:"Tahoma"
なので、文字化けを回避したい場合はFont charsetの場所を
80に書き換えればOK
それでも文字化けする場合は
「非日本語対応 Windows アプリケーションで日本語を表示させるための一般的手法」
URLリンク(www.tt.rim.or.jp)
を参照すればOK(なはず。<弱気)
5:デフォルトの名無しさん
09/06/27 12:33:06
文字化け回避の汎用をば
MOV BYTE PTR SS:[EAX+17],80
CALL DWORD PTR DS:[********]
JMP ********
PixelsPerInch 96→80
50 69 78 65 6C 73 50 65 72 49 6E 63 68 02 60
50 69 78 65 6C 73 50 65 72 49 6E 63 68 02 50
JMPで"CALL <JMP.&gdi32.CreateFontIndirectA> ; \CreateFontIndirectA"
をOllyで書き換えてやればたぶんOK
そのあとにDelphi(製だったかな?)はフォントサイズでPixelsPerInchを書き換えれば文字切れ回避はたぶんOK
(細かい修正箇所があるかもしれないが、FontIndirectAを使ってるアプリならたぶん大丈夫)
○文字化け修正方その3
リソースにRC Dataがある場合は、
「Font.Charset = DEFAULT_CHARSET」や「Font.Charset = ANSI_CHARSET」などを
「Font.Charset = SHIFTJIS_CHARSET」にしたり、
「Font.Name = 'MS Shell Dlg'」や「Font.Name = 'MS Sans Serif'」などを
「Font.Name = 'MS UI Gothic'」や「Font.Name = 'MS Pゴシック'」にするといいかもしれません。