老文章档案 · 2003 年

让HEXEDIT2.54显示汉字

破解教程 · 破解杂谈 · 2003-09-19 · 作者:wuhuashang 人气: · 出处:赢政天下整理收藏)

主页:http://personal.dfminfo.com.cn/~kuangren/index.htm

某些西文软件存在不能输入汉字或显示汉字的问题,可能原因是编写软件的作者没有考虑周全,我在此介绍一种调试修改的方法,以供大家参考.

准备工作:工具:SOFTICE,HACKVIEW,HEXEDIT2.54.用写字板写几个字如"THISISDEMO我在演示",保存后注销或启动计算机.

1.载入SOFTICE,用HEXEDIT打开刚才写的文件,您发现在窗口右栏仅显示THISISDEMO,汉字全部为'.',现在的任务是要显示正确的汉字.CTRL+D切入SOFTICE ,下断点BPX TEXTOUT,退出后更改字母T为M,立即被SOFTICE拦截,

2.BC * ,按若干次F12回到HEXEDIT的领空,

S DS:0 L FFFFFFFF "MHISISDEM",大搜捕后共有好几个地址,真正的地址是DS:00XXXXXX,而非DS:CXXXXXXX, 也就是小的地址为HEXEDIT实际存取的地址.

3.BPM DS:00XXXXXX W (不是R/RW,否则一直被SOFTICE拦截无法返回).

退出SOFTICE,再将M改为T,好!SOFTICE成功拦截,可以猜想,程序下一步便要读该地址的内容,然后判别其中的 字符串是否在20H-7FH之间,决定是否正常显示.

BPE 0 修改断点为BPM DS:00XXXXXX R,退出SOFTICE,立即又被SOFTICE拦截,原来是用MOVSB把DS:00XXXXXX中 的字符串复制到DS:00YYYYYY,

4.BD *

BPM DS:00YYYYYY R 退出SOFTICE,立即被拦截返回SOFTICE中,好漂亮!停止在CS:412616

004125F2: C745FC00000000 mov d,[ebp][-0004],000000000 ;"

.004125F9: E903000000 jmp .000412601

.004125FE: FF45FC inc d,[ebp][-0004]

.00412601: 8B4510 mov eax,[ebp][00010]

.00412604: 3945FC cmp [ebp][-0004],eax

.00412607: 0F8D20000000 jge .00041262D

.0041260D: 8B45FC mov eax,[ebp][-0004]

.00412610: 8B4D08 mov ecx,[ebp][00008]

.00412613: 8A0408 mov al,[eax][ecx]

说明:D DS:EAX+ECX ---文章中的字符串!

.00412616: 50 push eax

.00412617: E894FFFFFF call .0004125B0 -------- (1)

.0041261C: 83C404 add esp,004 ;" "

.0041261F: 8B4DFC mov ecx,[ebp][-0004]

.00412622: 8B550C mov edx,[ebp][0000C]

.00412625: 880411 mov [ecx][edx],al

说明:AL=?,若AL为可以显示的字符,则经过(1)CALL处理后还是原来的AL

若AL为不可显示(如汉字)字符,则经过(1)CALL处理后AL=2E('.'),原来汉字变成一个'.',此CALL有问题!

.00412628: E9D1FFFFFF jmp .0004125FE

.0041262D: E900000000 jmp .000412632

.00412632: 5F pop edi

.00412633: 5E pop esi

.00412634: 5B pop ebx

.00412635: C9 leave

.00412636: C3 retn

看CALL中的代码:

.004125B0: 55 push ebp

.004125B1: 8BEC mov ebp,esp

.004125B3: 53 push ebx

.004125B4: 56 push esi

.004125B5: 57 push edi

.004125B6: 0FBE4508 movsx eax,b,[ebp][00008]

.004125BA: 83F820 cmp eax,020 ;" "

.004125BD: 0F8C1A000000 jl .0004125DD -------- (1)

比20H小,AL=2E ,也就是一个'.'

.004125C3: 0FBE4508 movsx eax,b,[ebp][00008]

.004125C7: 83F87E cmp eax,07E ;"~"

.004125CA: 0F8F0D000000 jg .0004125DD -------- (2)

比7EH大,AL=2E ,也就是一个'.'

.004125D0: 8A4508 mov al,[ebp][00008]

.004125D3: E90C000000 jmp .0004125E4

.004125D8: E907000000 jmp .0004125E4

.004125DD: B02E mov al,02E ;"."

你在此处想改头换面?

.004125DF: E900000000 jmp .0004125E4

.004125E4: 5F pop edi

.004125E5: 5E pop esi

.004125E6: 5B pop ebx

.004125E7: C9 leave

.004125E8: C3 retn

.004125E9: 55 push ebp

.004125EA: 8BEC mov ebp,esp

在HACKVIEW中改CS:4125BA之间的代码为

CMP EAX,00

JL 4125DF

或用HEXEDIT修改0F8C1A000000为0F8C1C000000

保存退出.正是:汉字西文均显示,古怪字符变成'.'

版权所有,请不要修改原内容 (出处:赢政天下整理收藏)

相关文章:

相关软件:

→ 特别推荐

→ 热点TOP10

我为人人《《==》》人人为我

关于我们 |

帮助(?)

| 广告服务 |

版权声明 |

商业合作 |

发展历程 |

加盟我们 |

联系我们

Copyright © 1999-2003

winzheng.com All Rights Reserved.

繁体版:由华琦数码技术提供

Powered

by:MeSky.Net

2003-2004 年,宽带刚刚普及,下载站的文章区是许多人学电脑的第一课堂。
🕰 → 🤖 从那时到现在

当年一篇教程能让一台电脑焕然一新;今天的效率工具换成了 AI。 想知道当下最可靠的 AI 模型怎么选?看 赢政指数——我们用了 28 年的选软件严谨,现在用来评测大模型。

档案性质声明:本页为赢政天下(1998-2011)老文章的历史档案复原, 内容反映当年发表时的原貌——包括当年的技术表述、软件版本与观点,部分方法在今天已不适用或不合规,仅作互联网历史记录与研究用途, 不提供任何形式的下载。原始数据经由公共网络存档(Internet Archive)复原。发现问题请联系我们
← 返回老文章档案 · 软件史档案馆 · 赢政天下站史