📄 main.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 + -