| 
				   Dogreadbuffer:=0; //读出成功 
//  Dogreadbuffer:=length(s); //读出成功 
end; 
如果软件狗中事先已保存有一些有用的信息,仿真软件狗前,则要插上狗,应调用相应函数,读出软件狗中信息,保存到dog.dat中。这时要分两步进行:首先,可以采用笔者以下专门编写的Dogopen()函数,加入上面仿真的DLL中,运行待破解程序,从待破解程序中截取并保存读狗参数。第二步,编程,运行truedogopen()函数。在truedogopen()中,利用截取的读狗参数,调用原配的真正的DLL文件,调用以下函数:Dogopen()、Dogreadbuffer( )、Dogclose( ),读出相应信息,再保存信息到dog.dat中。 
function dogopen(nagent:longint; nclient: longint; ngroup: longint; nserial: longint):longint;//截取打开软件狗参数并保存 
var 
      F:   TextFile; 
      S:   string; 
begin 
  AssignFile(F,'opendog.txt'   );   //打开文件 
  reset(f); 
  writeln(f,inttostr(nagent),inttostr(nclient),inttostr(ngroup), inttostr(nserial));  //保存相关参数,为真正的读狗做准备 
//  readln(   f,s   );//读取一行 
  CloseFile(F);//关闭文件 
  dogopen:= 0; //正确打开 
end; 
  
//以下程序,请插上真正的软件狗,并且要附上真正的操作狗DLL文件,读取软件狗中的事先保存的信息,保存到dog.dat中。 
procedure truedogopen();//截取打开软件狗参数并保存 
var 
      F:   TextFile; 
nagent, nclient, ngroup, nserial:longint; 
a,b,c,d: string; 
s,ss: String; 
  i:Integer; 
  List: TStringList; 
begin 
  AssignFile(F,'opendog.txt'   );   //打开文件 
  reset(f); 
  readln (f,a,b,c, d); //读取一行,为读狗参数 
nagent:=strtoint(a); 
 nclient:=strtoint(b); 			
				 |