⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.pas

📁 rockey2是一种应用比较广泛且使用简单的加密锁。本程序适用于极域电子教室加密锁数据读取并记录成模拟狗所需的形式。稍加修改就能模拟rockey2加密锁了。本程序仅供研究适用
💻 PAS
字号:

unit main;

interface

uses
    Windows, Messages, SysUtils,
    Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls ;

type
    TForm1 = class(TForm)
    List: TListBox;
    Button4: TButton;
    Button1: TButton;
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure FromClose(Sender: TObject; var Action: TCloseAction);
    procedure Button4Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    private
        { Private declarations }
    public
        { Public declarations }
    end;

var
    Form1: TForm1;
    hRY2: THandle;


implementation

uses head;     //包含接口和常量的定义

{$R *.dfm}


procedure TForm1.FormCreate(Sender: TObject);
var
str :string;
retcode :integer;
begin
    List.Items.Clear();
    hRY2:=Loadlibrary('Rockey2.dll');
    if hRY2 = 0 then
    begin
        List.Items.Add('访问狗驱动文件失败!');
        exit;
    end;

    RY2_Find := GetProcAddress(hRY2, 'RY2_Find');
    RY2_Open := GetProcAddress(hRY2, 'RY2_Open');
    RY2_Close := GetProcAddress(hRY2, 'RY2_Close');
    RY2_GenUID := GetProcAddress(hRY2,'RY2_GenUID');
    RY2_Write := GetProcAddress(hRY2,'RY2_Write');
    RY2_Read:= GetProcAddress(hRY2,'RY2_Read');


end;

procedure TForm1.FromClose(Sender: TObject; var Action: TCloseAction);
begin
     Freelibrary(hRY2);
end;


procedure TForm1.Button4Click(Sender: TObject);
var
retcode ,handle,block_index:integer;
uid,hid:cardinal;
buffer :array [0..512]of char;
str:string;
pchars :PChar;
   blocknum:integer;
   tempstr:integer;
   temp:integer;
   SysTime: TsystemTime;
   mytime: TDateTime;
begin
   list.Items.Clear ;
   list.Items.Add('极域电子教室软件加密狗数据读取工具 V1.0');
   list.Items.Add('制作:又见春风[359235708]');
   list.Items.Add('申明:本工具仅供私人学习使用,严禁非法散布和用于商业用途。');
   list.Items.Add('违者造成的所有责任作者概不负责,由散布者自行承担。');
   list.Items.Add('数据读取如下:');
   // 用指定的 UID 来读加密锁
   retcode := RY2_Find();
    if (retcode < 0) then
    begin
        FmtStr(str,'错误编号: %x;', [retcode]);
    	List.Items.Add(str);
    	exit;
    end;
    if (retcode = 0)     then
    begin
    	List.Items.Add('发生错误: 访问狗驱动文件失败!');
    	exit;
    end ;
    FmtStr(str,'找到: %x 只极域电子教室系列软件加密狗;', [retcode]);
    List.Items.Add(str);
   //str := Inputbox('Input','please input uid : ','2710158091');
   str := Inputbox('输入开发口令','请输入开发口令,不输入则使用默认值 : ','2224287277');
   //uid := (StrToInt(str));

   uid := strtoInt64(str);      //官方用的上面的代码,不能支持10位uid。

   retcode := RY2_Open(1, uid, hid);
   if  retcode < 0 then
   begin
      FmtStr(str, '错误编号: %x', [retcode]);
      List.Items.Add(str);
      exit;
   end ;
   handle := retcode;

   //str := Inputbox('Input','Please input write block index(0-4)','0');
   //block_index := StrToInt(str);
   for blocknum :=0 to 4  do
   begin
      block_index:=blocknum;
      retcode := RY2_Read(handle, block_index, buffer);
      if retcode < 0 then
      begin
         FmtStr(str, '错误编号: %x', [retcode]);
         List.Items.Add(str);
         exit;
      end ;
      pchars := buffer;
      str := inttostr(blocknum)+' 数据长度: '+inttostr(512);
      List.Items.Add(str);
      str := 'Readed data: ';
      //temp:= length(pchars) ;
      temp:=512;
      for tempstr := 1 to temp do
      begin
         str:=str+' '+inttohex(ord(buffer[tempstr-1]),2);
         //逐位获取读取到的数据的10进制值,然后逐位转化为16进制值
      end;     // strtoint(
      List.Items.Add(str);

   end;

   RY2_Close(handle);
   list.Items.Add('数据读取完毕!');
   GetSystemTime(SysTime);
   mytime:=Now;
   list.Items.Add('读取时间:'+inttostr(systime.wYear)+'年'+inttostr(systime.wMonth)+'月'+inttostr(systime.wDay)+'日 '+TimeToStr(mytime));

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   close;
end;

end.



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -