这套《十万个为什么》的光盘里装的是一套《十万个为什么》电子版的数据。由于光盘年久失修,并为了保护光驱,于是本人对该光盘进行了拯救行动。

第一回合:直接复制。由于光盘损坏较严重,又或者光盘本身有防复制措施,这个步骤失败。

第二回合:CloneCD法。CloneCD是一款工作在RAW模式的光盘复制工具。通过它,抢下了不少数据。只是每次都要加载光盘,很麻烦。

第三回合:免CD制作。这里是本文的重点。

这个免CD算是我第一个成功完成的逆向工程吧。首先想想有没有简单的方法,比如修改光盘定位文件。还就真找到一个:100kWhy.ini。文件内容:

[Path]
Application Content Directory=G:\\

试着把 G:\\ 改成 . ,修改以后发现:缺文件的提示没有了,但可恶的是,在软件刚打开时的弹窗还在。

如何解决弹窗呢?只有逆向工程了。先看看这个软件是用什么做的。。。怎么是Macromedia Projector!毕竟是当年的老软件。Macromedia似乎是开发Flash那个公司,现在Flash卖给Adobe了。历史如此沧桑。。。好像扯远了。回来接着看。载入OD,bp MessageBoxA,运行,断下了。翻了一下,把几个跳转nop了,重新载入,依旧被断下。怎么会这样?

一下子陷入了中断,又研究了好一会,才发现地址上有名堂。原来是程序的一个dll调用的MessageBoxA。。。在OD里面找到了该程序释放的库文件,找到那个MessageBoxA的调用者,一通nop,保存。

然后问题又来了,这个DLL怎么加载呢?我又想到了过去lpk.dll提权与虚假ws2_32.dll禁止网络访问的技巧。似乎直接把这个DLL丢到根目录里可以使软件优先加载。抱着试一试的心态,我成功了。

试了一下,发现还是有个缺点,就是在软件真正需要报错的地方,软件不报错了。。。原来那个地方是程序所有弹窗的必经之路。。。不过这个影响不大,就这样将就了。。。