藏经阁保护方式研究

藏经阁是比较著名的盗版系列,它对盗版光盘采取了保护措施。如果你将里面的安装程序拷贝到硬盘直接安装的话,会出现如下的提示:
你买的不是gamez88的盘,请去退盘

显然猫腻在光盘上。如果你用UltraISO打开光盘,可以看到隐藏的9999目录,里面有一个300000000字节的8888.dat文件(注:每期盘的隐藏文件都不尽相同)
我们用ProcMon跟踪一下就会发现,安装程序会尝试打开隐藏文件。根据ProcMon提供的文件名和call stack对程序进行分析的话,可以发现,程序会获取隐藏文件的大小,然后进行检查。如果文件不存在或者大小不符,就会弹出错误对话框。

以第十期的dk4.exe(大航海时代4)为例,检测代码在安装时生成的临时文件~GLC0000.tmp中:
loc_100050E7:
xor     ebx, ebx
lea     eax, [ebp+sz]
push    ebx
push    ebx
push    eax
call    sub_10011D6A ;open file
mov     edi, eax
add     esp, 0Ch
cmp     edi, 0FFFFFFFFh
jz      loc_10005278
push    2
push    ebx
push    edi
call    sub_10011E33 ;seek to end
add     esp, 0Ch
mov     ebx, eax
push    edi
call    ds:CloseHandle
loc_1000511A:
push    ebx
push    offset aLd
push    esi
call    ds:wsprintfA ;print file length into buffer
add     esp, 0Ch

为此,只需要用windbg attach到dk4.exe,执行
bp 100050E7;g
选择安装路径后点Next触发断点,然后再执行
r ebx=11E1A300;r eip=1000511A;g
即可。

当然,如果你不想用调试器那么麻烦,可以直接挂载光盘或者将光盘上的隐藏文件拷到硬盘,这样也是可以绕过保护的。

你可能感兴趣的:(File)