采用软件狗加密的流程是:①检查狗是否存在,采用DOGFIND函数,需要带一个指定参数,例如软件狗的特定序列号等;②打开狗Dogfind()函数,需要用四个参数,分别是客户号、组号、序列号等等;③读狗函数Dogreadbuffer或写狗函数Dogwritebuffer,需要指定的参数是开始位置和长度及内容,不同的软件狗提供的存储空间不一样,用户可存放自己感兴趣的内容;④关闭狗函数Dogclose,结束读写狗操作。⑤如果用户插的狗数量不止一个,还可以提供Dogopennext函数,打开另一软件狗。同样进行读写操作。
(3)编程代码
以上函数,软件狗开发商一般都会提供相应的DLL动态联接库给用户,在运行时必须保证该DLL文件在系统目录下或与EXE文件在同一目录下。用户只需在程序中进行声明,在自己的代码中额外添加语句,打开相应DLL,并调用相应函数即可。这样这个DLL文件就可以给解密创造可乘之机了,笔者采用Delphi开发了如下代码,编译成DLL文件后,替代相应DLL,即可解此软件狗之密。同时要说明的是,读写软件狗函数,本文改名为Dog.dat的文件保存,仿真软件狗操作,但如果之前软件狗中已保存有资料,相应地还要事先读出,写入到Dog.dat文件中。以下是采用DelPhi编写的相应函数:
function dogfind(dogid:longint):longint; //找狗函数 dogid为狗的系列号,本函数中不需理会它
begin
dogfind:= 1;//返回加密狗数,本文约写为1,相信多狗的情况极少 无论调用参数为什么,都返回1,代表有狗存在
end;
|