- 注册时间
- 2005-10-12
- 最后登录
- 2008-1-21
②入门
- 积分
- 18
|
楼主 |
发表于 2005-10-14 17:22:09
|
显示全部楼层
修改的方法:
1、列举系统中的字体要用到Windows的EnumFontFamiliesEx函数,设置其参数可以筛选支持特定字符集的字体。这个参数在原程序中为80(十六进制数),表示日文Shift_JIS字符集;修改为86(GB字符集)就可以列举中文字体了。实际情况原程序还对列举出的字体作了进一步的筛选,只有支持默认字符间距的字体才会被加入菜单的字体列表,而许多中文字体并不支持,所以这里也要改。而修改默认字体更简单,直接用十六进制编辑器在程序中搜索两个最常用日文字体名(明朝和MS Gothic,当然要用Shift-JIS编码的日文),替换掉就可以了。
2、全角字符判断:日文Shift-JIS编码的双字节字符,第一字节数值范围是81-9F和E0-FC,第二字节是40-7E和80-FC。程序一般只判断第一字节是否在81-9F和E0-FC这个范围内。这样,在反汇编程序之后,应当能够看到比较指令(CMP)中出现常数81,9F,E0,A0(但不一定是直接比较,待判断字符和E0按位与之后比较高位也有可能),在反汇编文本中仔细搜索,就可以找到这样的代码段。不过这只是比较简单的情况,如果软件作者刻意隐藏这样的细节,就只能老老实实动态跟踪程序了。
新版本应该可以用同样的方法修改吧。 |
|