-
-
[原创]RadAsm 3.x支持中文注释
-
2016-5-25 20:16
8759
-
原版下载地址:
https://fbedit.svn.sourceforge.net/svnroot/fbedit/RadASM30/Release/RadASM.zip
RadAsm是大家熟悉的一款汇编编译器,笔者最近下载了貌似是最新版的,在使用后发现不支持中文注释,如图1

图1 中文注释乱码
尽管网上有下载别人共享的中文版本,笔者还是想亲自探个究竟,看下到底是什么原因不支持中文注释,所以,在此记录下修改的过程。
用OD载入RadAsm.exe,F9 先让程序运行起来,然后下断bp CreateFontA,点击工具栏的快捷按钮新建文档(图2)。断下来后,返回程序领空。

图2 新建文档
来到这里。
0046644E E8 6FF70000 call <jmp.&gdi32.GetTextMetricsA>
00466453 0FB645 CF movzx eax,byte ptr ss:[ebp-0x31]
00466457 8983 AC010000 mov dword ptr ds:[ebx+0x1AC],eax
0046645D C783 B0010000 0>mov dword ptr ds:[ebx+0x1B0],0x0
00466467 3D 86000000 cmp eax,0x86
0046646C 74 15 je short RadASM.00466483
0046646E 3D 88000000 cmp eax,0x88
00466473 74 0E je short RadASM.00466483
00466475 3D 80000000 cmp eax,0x80
0046647A 74 07 je short RadASM.00466483
0046647C 3D 81000000 cmp eax,0x81
00466481 75 06 jnz short RadASM.00466489
00466483 8983 B0010000 mov dword ptr ds:[ebx+0x1B0],eax
00466489 FFB3 A4010000 push dword ptr ds:[ebx+0x1A4]
0046648F FF75 FC push dword ptr ss:[ebp-0x4]
00466492 E8 DFEAFBFF call <jmp.&gdi32.SelectObject>
看上面的00466467处以下,看到很明显的cmp eax,0x86,这里的86就是中国的区号了,那么来个简单粗爆,并且行之有效的修改吧!
0046644E E8 6FF70000 call <jmp.&gdi32.GetTextMetricsA>
00466453 0FB645 CF movzx eax,byte ptr ss:[ebp-0x31]
00466457 8983 AC010000 mov dword ptr ds:[ebx+0x1AC],eax
0046645D C783 B0010000 0>mov dword ptr ds:[ebx+0x1B0],0x0
将上面这段代码的后三行NOP掉,改为
[COLOR="Red"]mov eax,0x86[/COLOR]
保存并运行,如图3

图3 支持中文注释
附上修改好的主程序RadAsm.exe:
RadASM_gb2312.rar
【看雪培训】《Adroid高级研修班》2022年夏季班招生中!