变乱因由:
一(无)个(中)朋(生)友一直无法抱负使用汉化版OD的Trace实时写出功能.
以是我分析了一下这个bug的缘故原由。
1、BUG形式和重现
表现形式:OD使用实时Trace功能缺失执行指令。
bug重现:打开Trace跟踪>到Trace窗口右键记录到文件>跟踪步入/步过-关闭记录到文件;
2、BUG定位与修复
运行有bug的od,根据bug重现的方式开启Trace后,在WriteFile下断。
定位到以下代码(bug版本)
[Asm] 纯文本检察 复制代码00478B0B |. B1 00 mov cl,0x000478B0D |. 75 03 jnz short bug_Olly.00478B1200478B0F |. 83C1 20 add ecx,0x2000478B12 |> 33C0 xor eax,eax00478B14 |. 8AC1 mov al,cl00478B16 |. 50 push eax ; /Arg3 = 0067000000478B17 |. 68 83224C00 push bug_Olly.004C2283 ; |%c主00478B1C |. 57 push edi ; |Arg1 = 0018F26100478B1D |. E8 0AE10200 call bug_Olly.004A6C2C ; \bug_Olly.004A6C2C
有bug版本的代码截图
在分析英文版的时间发现这里是将字符串"%cain"中的%c转义成M如许就变成了Main。
但是汉化版中直接将00478B0B该处代码改成mov cl,0x0原版的是mov cl,0x4D。以是Trace记录中的执行代码才会被截断导致无法正常显示。
修改mov cl,0x0成mov cl,0x20(个人喜好)即可修复这个bug
解压密码:
52pojie@pcjy
修复后的效果:
Ollydbg.rar
来源:http://www.12558.net
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |