[原创]记对VC驿站加密视频完全破解过程
一、起因:无意中百度到了VC驿站的免费加密视频。下载下来全是EXE文件,打开需要输入密码才能正常观看。如图:

输错三次就退出进程。教程视频已经给出了免费的密码,可以观看。嘿嘿,但是我就是好奇它是怎么加密的,手痒痒了就开始来剖析它了!
二、经过:
先用PEID对此视频文件进行扫描,看来是C++写的。

OD加载,查找字串引用,很快就定位到了出错的地方:

在OD中沿着提示出错的位置向上找,上面有一堆call调用,找最近的一个下手,下断后跟进,发现真的就是视频密码的计算函数!

进入此函数:

发现是根据用户输入的密码串来进行校验和的计算。用IDA加载,然后定位到此函数后,F5,直接看到了计算源代码:

然后直接将计算出来的值与“预设”的值进行比较:

三、深入
本来到此为止已经破解出来了密码的加密算法,但是却发现不完善啊,有两个问题比较困扰:1、那个833B到底是什么时候计算出来的?2、知道校验和为833B但是却很难根据这个值反推出所需要的密码是什么。有什么办法呢?还不清楚此视频的加密流程,看来还得继续研究。
然后开始分析:
这个校验值的存在肯定只有两种可能:a、经过计算生成的。(废话,肯定要计算了!)那么在弹出输入密码框之前,肯定会有一个计算校验和的过程。b、直接存在的,即在弹出密码框之前密码就已经存在了。(那么这个值在作者加密视频时就存在了。)
对于情况a,如果是之前就存在的话,势必就存在冗余的加密计算过程,而且有可能直接就暴露了原密码的地址。思考后,感觉情况b的可能性更大!!!
如果是此校验码本来就存在,那它会存在何处?嘿嘿,肯定只有这个文件本身了!下面就开始验证:
OD重新加载,下断CreateFileW,F9运行,查看此EXE文件是否会读取自身,很快就得到了答案:

ALT+F9返回用户空间:

结合IDA查看函数名,继续向下走,很快就返回到了调用处:

嘿嘿,看看它会读取什么内容:

第一次从文件末尾读取了44H字节,紧接着又定位到末尾读取了2CH字节:

有两次读取动作,都是针对文件的末尾部分的。用winhex打开此文件,833B,原来你在这里。看来它就是预设的校验和了:

继续进行验证,在OD里往下调试:

在004070A7处F8时,直接跑飞,输入密码框就显示出来了,看来【ebx+334】、【ESI+2E4】这两处肯定就是最终的校验和保存位置了。
重新运行到显示密码框之前,对两处地址均下硬件访问断点后运行。随便输入密码,果然断下来了:


四、结论
看来进行加密的不一定是作者本身,因为其密码是xxx网址免费看(xxx网址并不是vc驿站的网址)。消除其密码就很简单了。直接用winHex将833B改为0000,保存后再运行,密码输入框消失了,视频照样看!还可以根据算法自己修改密码,将校验和修改一下就行了!!!
附加上的密码计算源码(未用IDA的F5之前反汇编出来的,后来一看跟IDA的代码基本一致):

