//比较幸运的是,本次比较顺利,应该说是比较简单的一次破解。
//下面我大概说一下破解的准备。
1.首先是工具:
工具的话我用的是 Ollydbg,相信这个反汇编的工具大家都很熟悉。如果不熟悉od的操作,下面我也会说清楚一点。
2.然后是相关知识:
> Cd认证不管复杂简单,最重要的一个函数,一般都是GetDriveType(),这个api,可以通过百度进行了解,很简单就是返回磁盘类型,5是光驱,而我们的本地磁盘的返回值是3。
> 有了这些,我们就开始进行破解【修改】。
1.打开od,加载Natsu.exe,由于我是64位,需要先进行32位的准备工作【猜测】,所以我们需要先f9一次,才能进入程序内。
2.然后我们按下ctrl+n 找到 GetDriveTypeA(),在参考下设置断点。
双击,定位到 0x406561 处,可以看到
00406561 . FF15 B8104300 CALL DWORD PTR DS:[<&KERNEL32.GetDriveTy>; \GetDriveTypeA
00406567 83F8 05 CMP EAX,5
0040656A 75 43 JNZ SHORT Natsu.004065AF
这里的cmp eax,5 然后jnz,就是判断是否是光驱,不是就跳转,明显我们这里可以改为
Cmp eax,3或者 JNZ SHORT Natsu.004065AF [右键,选汇编,或者按空格可以进行修改]。
改好之后就算不是光驱也能进行接下来的判断操作了。
我们按下f9 ,程序就运行了,停在了 0x406561处,按下f8继续进行,我们发现下面还有一个api,GetVolumnInformationA(),这是获取磁盘信息的,我们暂时不管,f8继续。到了这里停住:
004065A3 . 51 PUSH ECX ; /String2
004065A4 . 52 PUSH EDX ; |String1
004065A5 . FF15 3C114300 CALL DWORD PTR DS:[<&KERNEL32.lstrcmpA>] ; \lstrcmpA
在0x004065A5c处有一个判断,很可疑,我们看下堆栈,便发现
004065AB . 85C0 TEST EAX,EAX
004065AD 74 34 JE SHORT Natsu.004065E3
如果字符串【卷标】相同,就可以接下来的处理,于是我们可以将 JE改成了 JNE,然后按下f9看看能不能运行,结果游戏成功运行了。
这tm真是太简单的认证了吧!!
好了,改完之后我们,右键 -> 复制到可执行文件爱你 -> 全部修改,取名为 Natsu_NoCD.exe就ok啦,本次破解就结束。确实很简单,高手们轻喷啊。我只是个渣渣。
咨询 ->贴吧链接
奇迹风祝汉化组
2015年8月4日