-
-
[原创]破解Dr.eye的日语翻译限制
-
发表于:
2007-1-10 22:56
13586
-
【文章标题】: 破解Dr.eye的日语翻译限制
【文章作者】: kaien
【软件名称】: Dr.eye 译典通 2005
【下载地址】: 自己搜索下载
【加壳方式】: 无壳
【使用工具】: OD,Ultraedit
【操作平台】: winxp
【软件介绍】: 词典翻译软件
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【前面的话】
Dr.eye是一款翻译软件,本人感觉还是挺好用的。
她支持英汉日三语的单词互译和文本翻译功能,当然还有其它很多不错的功能。
然而,美中不足的是,这个软件的非正式用户不能支持日语的翻译功能。
事实上,除了“即时词典”功能支持日语单词翻译之外。其他的日语句子和日语文件的翻译功能都不可用。
虽然日本人可恶之极,但是软件本身没有错。三大功能缺少一项总是不够完美。所以本人就动手看看能否解决这个问题。
【详细过程】
先来看看运行日语翻译功能会发生什么?让我们来找找线索。
就以“全文翻译”这个功能为例。
写入一个句子“我是中国人”,然后 按“简日”
弹出对话框“Are you register?”,看来这就是我们的线索和切入点了
打开OD,通过附加选单可以看到这个程序的文件地址。
我的电脑里面是这样的信息:
未命名的窗口, 条目 31
进程=0000082C
名称=tranedit
窗口=全文翻译 - [原文∏File1 译文∏]
路径=D:\PROGRAM FILES\INVENTEC\DREYE\DREYEMT\tranedit.exe
我们看到,“全文翻译”的启动程序是DREYEMT文件夹里面的tranedit.exe文件。
下面,我们先找到这个文件,然后就开始对这个文件下手了。
1、察壳
先用PEid查壳,有壳的话最好先脱壳。我们发现这个程序没有壳,Microsoft Visual C++ 6.0编写。
2、OD加载
先查找一下文本子串参考,看看是否有“Are you register?”字串。
很可惜!我们没有发现这个字串。
那么下面该怎么办呢?
根据前面的分析,在我看来,我们可以有两种方法设断点。
一、设按钮的消息断点。在程序弹出错误对话框上的“确定”按键设置WM_LBUTTONUP消息断点。
二、设置内存断点。在内存中查找“Are you register?”字串,找到的话就可以设置内存访问断点。
我使用了内存断点。消息断点也很简单,篇幅所限,本文暂且不提。
下面的问题就是如何设内存断点呢?
3、内存断点
先F9运行,输入"我是中国人"。按“简日”
程序弹出错误对话框“Are you register?”
先不要关闭这个对话框。Alt+M察看内存。搜索ASCII字串 “Are you Register”
我们会发现两处。
第一处:
023D0204 41 72 65 20 79 6F 75 20 52 65 67 69 73 74 65 72 Are you Register
023D0214 3F 00 00 00 55 73 65 72 44 69 63 74 43 45 2E 69 ?...UserDictCE.i
023D0224 64 74 00 00 55 73 65 72 44 69 63 74 45 43 2E 69 dt..UserDictEC.i
第二处:
0258C32C 41 72 65 20 79 6F 75 20 52 65 67 69 73 74 65 72 Are you Register
0258C33C 3F 00 00 00 A1 A2 00 00 D7 DC 00 00 B8 B1 00 00 ?...、..总..副..
0258C34C D5 FD 00 00 C5 AE 00 00 C4 D0 00 00 2D 2C 3A 2E 正..女..男..-,:.
我们应该在第二处下内存断点。
4、跟踪破解
再次输入“我是中国人”,按“简日”
程序被断下来了。位置是USER32.dll的领空
77D2204F 8A08 mov cl,byte ptr ds:[eax] <-我们断在这个位置。
77D22051 40 inc eax
77D22052 84C9 test cl,cl
77D22054 ^ 75 F9 jnz short USER32.77D2204F
77D22056 2BC2 sub eax,edx
寄存器里会看到
EAX和EDX都是 ASCII "Are you Register?"
我们F8一步步运行,我们很快就会来到这里
77D66052 FF75 F8 push dword ptr ss:[ebp-8]
77D66055 FF75 FC push dword ptr ss:[ebp-4]
77D66058 FF75 08 push dword ptr ss:[ebp+8]
77D6605B E8 E1FEFFFF call USER32.MessageBoxTimeoutW <-运行这句指令就是MessagBox了。
77D66060 FF75 FC push dword ptr ss:[ebp-4]
上面那句MessageBoxTimeoutW不能执行。执行了就是消息框了。
我们暂时采取一些“非常措施”,跳过这句指令。
让我们直接到这句指令的下面一句,即77D66060处。
我的方法是把这句nop掉。
我们来到这里
77D66060 FF75 FC push dword ptr ss:[ebp-4]
注意,这时我们仍然在USER32.dll的领空,我们需要回到程序领空,或者至少要回到和程序有关的模块的领空。
继续F8,很快就会跳出USER32.dll领空,进入MFC42.dll领空。
继续F8,很快就会到达一个崭新的领空 TransC_1程序来到这里
02351E9D 85C0 test eax,eax
02351E9F 74 42 je short TransC_1.02351EE3
02351EA1 53 push ebx
02351EA2 53 push ebx
02351EA3 68 2CC33802 push TransC_1.0238C32C ; ASCII "Are you Register?"
02351EA8 891D E41A3A02 mov dword ptr ds:[23A1AE4],ebx
02351EAE E8 CF750300 call <jmp.&MFC42.#1200_AfxMessageBox>
02351EB3 8D4C24 04 lea ecx,dword ptr ss:[esp+4] <-停在这个位置
02351EB7 885C24 14 mov byte ptr ss:[esp+14],bl
向上看一下,我们看到上面就是调用错误对话框的代码了。
我们注意到,程序在运行到 02351E9D 处会做比较。如果eax=0就会跳过错误对话框调用。
我们直接把je short TransC_1.02351EE3 改为 jmp short TransC_1.02351EE3
然后重新运行看看效果。
太好了,日语翻译的限制解除了。
我们得到了翻译结果 “私は中国人だ ”
5、修改文件
下面要做什么呢?当然是把修改的地方保存起来了。
直接用OD把修改的地方保存可以吗?
答案是不可以。
因为直接保存的后果就是死机。
那该怎么办呢?当然是手动修改了。
先记住一段代码
02351E9D 85C0 test eax,eax
02351E9F 74 42 je short TransC_1.02351EE3
02351EA1 53 push ebx
02351EA2 53 push ebx
16进制编码为 85C074425353 记下来。这段代码要选的尽量长一些,以减少重复的可能性。
然后下一步就是修改文件内容了。
下面,问题来了。要改哪个文件呢?
当然是TransC_1了。那么TransC_1又是什么文件?
Alt+E察看可执行模块。列表中查找模块名称TransC_1,我们找到模块信息如下:
Executable modules, 条目 7
基址=02350000
大小=00337000 (3371008.)
入口=023898C9 TransC_1.<模块入口点>
名称=TransC_1
文件版本=1, 0, 0, 1
路径=D:\Program Files\Inventec\Dreye\DreyeMT\sdk\bin\TransCOM.dll
看到了吗?这个模块的相对路径是DreyeMT\sdk\bin\TransCOM.dll
也就是说我们需要修改的地方并不在我们调试的启动文件tranedit.exe中,而是在TransCOM.dll模块里。
下面的步骤简单了,Ultraedit打开文件TransCOM.dll模块,搜索85C074425353,然后把74改称EB,即把je指令改为jmp指令。
保存文件,测试运行,一切正常。^_^
再测试一下其他关于日语翻译的功能,全部运行正常。
看来这个TransCOM.dll模块是关键中的关键。所有的日语支持功能全都需要调用这个模块。
好了,就到这里了。
破解完毕,收工休息。^_^
希望我讲解的足够清晰、详实,也希望大家能够喜欢。
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!
2007年01月10日 15:36:20
[招生]系统0day安全班,企业级设备固件漏洞挖掘,Linux平台漏洞挖掘!