急求:&&&&为微狗做一个DLL!用于软件加密!!!!来这有分!!!

zengxun 2003-08-07 11:09:50
要用微狗给软件加密,要写一个DLL出来用于需要的部分调用!函数说明如下:
1. HRESULT RCDog_Open(DWORD Password, BYTE Cascade)

输入参数:

DWORD Password:硬件狗的读、写密码

BYTE Cascade:级联码

功能:打开硬件狗。

说明:这个函数必须第一个执行。如果要打开另一只硬件狗,必须先执行后面的RCDog_Close()函数。目前还不支持同时对多个硬件狗进行操作。

2. void RCDog_Close()

功能:关闭硬件狗。

说明:释放相应的资源。如果现在已经打开过一只硬件狗,在打开新的硬件狗之前,必须先执行本函数。

3. BOOL RCDog_CheckModule(WORD ModuleNo)

输入参数:

WORD ModuleNo:模块号

返回值:TRUE 或 FALSE

功能:检查某个模块是否有效。

说明:如果有效,返回TRUE;如果无效或发生错误,返回FALSE(特殊情况:如果这个模块有效且模块使用计数允许递减,但当前计数为零时也返回FALSE)。

4. HRESULT RCDog_GetModule(WORD ModuleNo, WORD *ret)

输入参数:

WORD ModuleNo:要读取的模块号

返回值:

WORD *ret:模块的当前次数

功能:读取某个模块的当前次数。

说明:设置模块当前次数的操作只能由开发商工具DogEedt进行。

注:本函数要求相应模块的有效性约束字为1,否则返回相应错误码。

5. HRESULT RCDog_DecModule(WORD ModuleNo)

输入参数:

WORD ModuleNo:为要减1的模块号。

功能:使某个模块的当前次数减1。

说明:如果当前次数已经为零,返回相应的错误码。

注:本函数要求相应模块的递减约束字和有效性约束字为1,否则返回相应的错误码

6. HRESULT RCDog_GetSecureWord(DWORD WordNo, WORD *ret);

输入参数:

DWORD WordNo:约束字号

WordNum = 1 有效性约束字

WordNum = 2 递减约束字

返回值:

WORD *ret:对应约束字的值

功能:读取某个约束字的值。

7. HRESULT RCDog_AuthDog(DWORD AriNo, BYTE * Random, DWORD RanLen, BYTE * ret)

输入参数:

DWORD AriNo:使用的认证算法。目前只支持128位RC6 算法,这种情况下AriNo必须为1。

BYTE * Random:输入随机数。

DWORD RanLen:输入随机数的长度对AriNo为1的情况,RanLen = 16。

返回值:

BYTE * ret:使用狗认证密钥对随机数的加密结果。

功能:认证狗认证密钥。

说明:狗认证密钥是一个由开发商定义的任意长度的字符串,它的值可以在开发商工具DogEdit中进行设置。在存入硬件狗中前,首先使用MD5算法将它转换为16个字节的HASH值。本函数认证这个狗认证密钥。为了保证动态库的安全性,建议开发商在对动态库作其它操作前,首先进行狗认证密钥的认证操作。

8. DWORD RCDog_GetLastDogError()

功能:这个函数用于获得发生错误后硬件狗返回的5位十进制错误码。

说明:由于采用了便于升级的HRESULT结构,原来的硬件狗错误码不再作为函数的返回结果,因此在调试时,如果希望得到硬件狗返回的错误码,可以再调用这个函数,得到上一次硬件狗返回的错误码。


ULONG RCDog_AuthDog(int isel,PUCHAR pRandom,int Len,PUCHAR pReturnRandom,UCHAR Cascade,ULONG Password)
函数描述:
此函数实现动态库认证功能,防止动态库被恶意替换
参数说明:
int isel: 算法选择,目前只支持rc6 ,只能设为1
PUCHAR *pRandom: 输入的16字节随即数指针
int Len: 数据长度
PUCHAR * pReturnRandom: 返回加密数据指针
UCHAR Cascade 级联码
ULONG Password 狗密码

unsigned long RC_UMHDog(MH_DLL_PARA *)
函数描述:
此函数实现对狗操作功能,包括读、写、查狗、取流水号、禁止共享、变换功能功能。
返回值是命令执行的结果。0表示成功,其他值是错误码。
参数说明:
typedef struct _MH_DLL_PARA
{
BYTE Command; //命令码
BYTE Cascade; //级联顺序号
WORD DogAddr; //首地址
WORD DogBytes; //操作字节数
DWORD DogPassword; //读写密码
DWORD DogResult; //变换结果
BYTE DogData[200]; //输入输出数据
} MH_DLL_PARA;

结构成员Command是命令码,定义如下
DogCheck 1 查狗
ReadDog 2 读狗
WriteDog 3 写狗
DogConvert 4 变换
GetCurrentNo 5 取流水号
DisableShare 6 停止共享

看那为大虾能给出原码!!分不够在加!!!!
...全文
60 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yinzhaohui 2003-09-07
  • 打赏
  • 举报
回复
我的邮箱是:yinzhaohue@163.net
chrisez 2003-09-07
  • 打赏
  • 举报
回复
up
zhang_zhibin 2003-08-10
  • 打赏
  • 举报
回复
帮你UP
zengxun 2003-08-07
  • 打赏
  • 举报
回复
我的邮箱:zengxun_abc@163.com
可以把原代码发到我的邮箱!!

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧