豪杰超级DVD播放器Ⅲ破解之菜鸟了解PE文件
【文章作者】:YangCoCol
【作者QQ】:1174968967(解密小生)
豪杰超级DVD播放器Ⅲ已经是个很老的播放器了,而且网上破解版的多的是,此次破解的目的并不是为了破解而破解,只是为了学习和分享,通过分析软件注册保护机制总结几种破解对策,可以说这篇破文是个纯菜鸟级的破文,大鸟请飞过!!希望对初入破解之门的朋友们有一点点的帮助,本破文将以图文并貌的方式来讲解破解的过程,废话少说!开始吧,Let’s Go~~~~~
首先,我们安装《豪杰超级DVD播放器Ⅲ》软件,安装好后用PEid查壳,没有加壳,Microsoft Visual C++ 4.x写的(看来真的是挺老啊!!!),运行程序,此时提示还有29天试用期,如下图所示:

通过跟踪分析,点击“注册”按钮会运行软件根目录中的

运行OD,设置“调试选项”中事件暂停在“主模块入口点”,装载程序,此时出现如下图的现象:

在上面的调试过程中,我们是把事件暂停设置在“主模块入口点”处的,但是在还没有中断在程序入口处就弹出对话框提示了,在这里我做了一个猜测,这个对话框是由某个DLL弹出。
说到这里,我们再来看看DLL模块的入口函数,为了方便分析我用MASM写个DLL源码做实例,如下图所示:

有了以上的分析,下面我们开始找到究竟是哪个DLL模块弹出的对话框,再次运行OD,这回我们把 事件暂停设置在“系统断点”处,再次加载待破解程序,下DialogBoxParamA访问断点,F9运行,程序断下,如下图所示:

剩下的工作就是分析那个DLL文件了,可以在目标DLL的代码段设置硬件执行断点跟踪分析。我通过用DiE分析主程序发现,在主程序的导入表中并没有对runexec.dll模块的引用说明,用OD调试时发现它的加载是被另一个DLL hook了主程序IAT中某个函数地址而加载的,具体hook的API我并没有深入分析,如果只是出于破解目的,就没有什么必要了,若是学习的话就要一查到底了~~~~(又开始废话了…嘿嘿!)。
其实,我们到这里破解已经不是我们的目的了,目的是方法的总结、思路的拓展、理论的学习,更何况这个也没有什么破解难度。
下面我准被用IDA来分析那个DLL文件,IDA是个公认的静态反汇编的专业工具,现在好多招聘逆向的工程师都要求会OD和IDA工具,在这里我就当是练习练习使用IDA吧~~
用默认设置加载目标DLL,定位到入口函数处,其实对于IDA来说定位是很简单的,入口函数反汇编部分代码如下图所示:


我又对这个DLL文件做了详细的分析,确定它没有导出函数被主程序调用,它是个独立的模块,哎()!话说到这份了~~~你一定明白了吧!!!
偶的搞它方法:
1.nop掉“jz”的关键判断语句。
2.自己写个直接返回成功的DLL文件,并覆盖掉原DLL。
2.在主程序中把存在hook的DLL文件的导入信息抹掉。
结束语:夯实基础,总结经验,温故而知新。