1. 什么是CD-Check
有一些软件为了防止用户在获得正版软件后,将正版软件拷贝在多台主机上,采用了CD-Check技术,只有将商家配套的光盘插在光驱中,才能正常运行软件。
Windows下有一些函数用来帮助实现CD-Check这一技术:
1、先用GetLogincalDriveStrings
函数找出所有根驱动器路径;
2、再用GetDriveType
函数检测要验证的文件是否在光驱里;
3、最后用CreateFileA
函数打开检测文件
2. Crack详解
我们的思路是,我们没有光盘里的检测文件,我们的CreateFileA
肯定是失败的,那么我们来试试看,能否强制跳过。
首先,我们先运行下我们的crackme看看长什么样
一个小方框,点击check
就会弹出一个Error
弹框
那么我们的目标就显而易见了,让我们的check
校验成功即可
查壳检测,很友好,什么也没有,VC写的MFC程序
直接放OD里去,定位到我们的这两个API
函数处
此处的函数定位有两种方法,一种是借助API断点,另外一种是直接搜索ASCII,然后借助ASCII直接定位到此处。
定位到这里后,我们F8单步运行往下走
可以看到文件在光驱里压入了,但我们没插光盘,使用CreateFileA
函数后,文件应该是打不开才对
继续往下看,看到了一个跳转。底下还有Error
NO CD
等字符串,猜测这里就是跳转语句。
同时,我们跟踪这条跳转往下还可以看到成功的语句。
接下来,我们让这条跳转指令执行,然后运行
提示成功,那么我们只需要将je CD_Check.00401485
改为jmp CD_Check.00401485
即可完成破解。
发布时间: 2022-01-23
最后更新: 2023-07-21
本文标题: CD-Check
本文链接: https://foxcookie.github.io/2022/01/23/CD-Check/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!