软件保护技术----即将被遗忘的CD-Check

本文的例子选自与加密解密第3版:链接:https://pan.baidu.com/s/1w8sKIa15tHjBYo5KBZWtfw 密码:2hmn

有一些软件为了防止用户在获得正版软件后,将正版软件拷贝在多台主机上,采用了CD-Check技术,只有将商家配套的光盘插在光驱中,才能正常运行软件

Windows下有一些函数用来帮助实现CD-Check这一技术:

1、先用GetLogicalDriveStrings函数找出所有根驱动器路径

2、再用GetDriveType函数检测要验证的文件是否在光驱里

3、最后用CreateFileA函数打开检测文件

基本就是这么个流程

我们的思路是,我们没有光盘里的检测文件,我们的CreateFileA肯定是失败的,试试看能不能强制跳过

用OD打开例子CD_Check.exe

找上文说的三个函数,找到了后两个,跳转过去

软件保护技术----即将被遗忘的CD-Check_第1张图片

可以看到文件在光驱里压入了,但我们没插光盘,使用CreateFileA函数后,文件应该是打不开的才对

软件保护技术----即将被遗忘的CD-Check_第2张图片

我蛮看下去,看到一个跳转语句,底下还有“Error”,"NO CD"等字符串,怀疑这里跳转语句是转到成功打开文件后的地址处

我们验证一下是不是,我们跳转到401485查看一下

软件保护技术----即将被遗忘的CD-Check_第3张图片

没问题,验证了我们的猜想

那我们就把之前的跳转语句从判断跳转改为强制跳转:jmp 401485  

改完之后就OK了,CD-Check技术简单科普一下

你可能感兴趣的:(逆向工程基础)