首页
社区
课程
招聘
[求助]微狗(UMI/PC3)监视狗工具及模拟
发表于: 2007-8-22 16:32 8744

[求助]微狗(UMI/PC3)监视狗工具及模拟

2007-8-22 16:32
8744
请高手提供监视狗的工具及模拟狗的工具及方法!谢谢!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 53
活跃值: (91)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
顶下,我手上就有个 PC3 的狗狗!
2007-9-19 16:27
0
雪    币: 283
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
保存成.dpr可以直接用delphi编译
{
  Do not modify / remove this copyright notice

  Copyright(C) 2004 by parker

  Description: Sense KeyPro DLL Emulator

  Version: 1.10

  Last Update: 2004-2-22

}

library KeyProEmu;

uses
  Windows;

const

//功能码
  KeyAPIReadMemory   = $00;  //读狗数据
  KeyAPIWriteMemory  = $01;  //写狗数据
  KeyAPISetPassword  = $02;  //设置密码
  KeyAPIRemoveDriver = $03;  //卸载驱动

//返回值
  APISuccess         = $00;  //调用成功
  APIAddressOverflow = $01;  //软件狗数据地址越界
  APIInvalidFunction = $02;  //调用功能码非法
  APINoKeyPro        = $03;  //软件狗未找到或密码不对
  APINoKeyDriver     = $0F;  //软件狗驱动未安装

//一些常量
  KeyMemFile = '.\KeyData.dat';  //记录软件狗数据的文件,128字节
  MemSize    = $40;              //文件长度单位是Word
  KeyMemSize = $3C;              //狗数据长度单位是Word
  Pass0      = $3C;              //密码0在文件中的位置
  Pass1      = $3D;              //密码1在文件中的位置
  Ext0       = $3E;              //扩展数据0文件中的位置
  Ext1       = $3F;              //扩展数据1文件中的位置
  
type
  pKeyproData=^KEYPRODATA;             //指向KEYPRODATA结构体的指针
  KEYPRODATA=record                    //结构体变量
    ReturnFlag: Word;                  //返回值
    FunctionCode: Word;                //功能码
    MemAddress: Word;                  //数据地址
    Password0: Word;                   //密码0
    Password1: Word;                   //密码1
    MemContent: Word;                  //读出的数据或者要写入数据
    Lock0: Word;                       //修改密码时填写,新密码0
    Lock1: Word;                       //修改密码时填写,新密码1
    Reserved: array[$0..$1F] of Word;  //保留
  end;

var
  TKeyMem: array [$0..MemSize - 1] of Word;  //存放软件狗数据的数组

{载入DLL时做的初始化动作,读取记录软件狗数据的文件,放入数组KeyMem中}
procedure DLLEnter;
var
  hFile,Count: Cardinal;
begin
  hFile:=CreateFile(KeyMemFile,GENERIC_READ,FILE_SHARE_READ,nil,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
  ReadFile(hFile, TKeyMem, SizeOf(TKeyMem), Count,nil);
  CloseHandle(hFile);
end;

{卸载DLL时做的收尾动作,把数组KeyMem中的内容,保存到记录软件狗数据的文件}
procedure DLLExit(const Reason:Integer);
var
  hFile,Count:Cardinal;
begin
  if Reason=DLL_PROCESS_DETACH then  //在卸载DLL时才进行保存动作
    begin
      hFile:=CreateFile(KeyMemFile,GENERIC_WRITE,FILE_SHARE_READ,nil,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
      WriteFile(hFile, TKeyMem, SizeOf(TKeyMem), Count,nil);
      CloseHandle(hFile);
    end;
end;

{模拟读取软件狗数据的功能}
procedure ReadMemory(const Stru:pKeyproData);
begin
  if Stru.MemAddress<KeyMemSize then  //判断要读取的狗数据的地址是否越界
  begin
    Stru.MemContent:=TKeyMem[Stru.MemAddress];
    Stru.ReturnFlag:=APISuccess;
  end
  else begin
    Stru.ReturnFlag:=APIAddressOverflow;  //地址越界
  end;
end;

{模拟写入软件狗数据的功能}
procedure WriteMemory(const Stru:pKeyproData);
begin
  if Stru.MemAddress<KeyMemSize then  //判断要写入的狗数据的地址是否越界
  begin
    TKeyMem[Stru.MemAddress]:=Stru.MemContent;
    Stru.ReturnFlag:=APISuccess;
  end
  else begin
    Stru.ReturnFlag:=APIAddressOverflow;  //地址越界
  end;
end;

{模拟设置软件狗密码的功能}
procedure SetPassword(const Stru:pKeyproData);
begin
  TKeyMem[Pass0]:=Stru.Lock0;
  TKeyMem[Pass1]:=Stru.Lock1;
  Stru.ReturnFlag:=APISuccess;
end;

{模拟卸载软件狗驱动的功能}
procedure RemoveDriver(const Stru:pKeyproData);
begin
  Stru.ReturnFlag:=APISuccess;
end;

{设置KeyproData结构体的元素的数据,主要供FoxPro使用}
procedure PutData(const Data:Word;const Stru:Integer;const Pos:Integer);stdcall;export;
var
  StruData:^Word;
begin
  StruData:=Pointer(Stru+Pos);
  StruData^:=Data;
end;

{读取KeyproData结构体的元素的数据,主要供FoxPro使用}
function GetData(const Stru:Integer;const Pos:Integer):Integer;stdcall;export;
var
  StruData:^Word;
begin
  StruData:=Pointer(Stru+Pos);
  Result:=StruData^;
end;

{模拟对软件狗的所有操作}
procedure KEYPRO(const Stru:pKeyproData);stdcall;export;
begin

  if TKeyMem[Ext0]=0 then  //设置是否模拟软件狗的比较密码功能
  begin                   //扩展数据为0时比较密码,为非0时不比较
    if (Stru.Password0<>TKeyMem[Pass0]) or (Stru.Password1<>TKeyMem[Pass1]) then
    begin
      Stru.ReturnFlag:=APINoKeyPro;  //密码错误
      Exit;
    end;
  end;

  case Stru.FunctionCode of  //根据功能码选择模拟的功能
    KeyAPIReadMemory:   ReadMemory(Stru);
    KeyAPIWriteMemory:  WriteMemory(Stru);
    KeyAPISetPassword:  SetPassword(Stru);
    KeyAPIRemoveDriver: RemoveDriver(Stru);
  else
    begin
      Stru.ReturnFlag:=APIInvalidFunction;  //功能码错误
    end;
  end;

end;

exports
  PutData,
  GetData,
  KEYPRO;
begin
  DLLProc:=@DLLExit;
  DLLEnter;
end.
2007-9-21 12:40
0
雪    币: 283
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
编译成DLL文件的,请上传.
2007-9-21 12:42
0
雪    币: 413
活跃值: (752)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
5
上面的代码和PC3的狗没有任何关系的, 那段代码是为了Key Pro加密锁模拟用的.
2007-9-22 07:09
0
雪    币: 205
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
模拟狗不是这么简单就做出来的
2007-9-22 10:43
0
雪    币: 300
活跃值: (39)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
的确有些简单撒
2007-9-30 14:41
0
游客
登录 | 注册 方可回帖
返回
//