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

📄 ryvc32.h

📁 此为本书的配套光盘.本书不但由浅入深地讲解了软件保护技术
💻 H
字号:
// 高级命令字
#define  RY_FIND                        1		//找锁
#define  RY_FIND_NEXT			2		//找下一锁
#define  RY_OPEN                        3		//打开锁
#define  RY_CLOSE                       4		//关闭锁
#define  RY_READ                        5		//读锁
#define  RY_WRITE                       6		//写锁
#define  RY_RANDOM                      7		//产生随机数
#define  RY_SEED                        8		//产生种子码
#define  RY_WRITE_USERID		9		//写用户 ID
#define  RY_READ_USERID			10		//读用户 ID
#define  RY_SET_MOUDLE			11		//设置模块字
#define  RY_CHECK_MOUDLE		12		//检查模块状态
#define  RY_WRITE_ARITHMETIC            13		//写算法
#define  RY_CALCULATE1			14		//计算 1
#define  RY_CALCULATE2			15		//计算 2
#define  RY_CALCULATE3			16		//计算 3
#define  RY_DECREASE			17		//递减模块单元

// 错误码
#define  ERR_SUCCESS			0		//没有错误
#define  ERR_NO_PARALLEL_PORT		1		//此机没有并口
#define  ERR_NO_DRIVER			2		//没安装驱动程序
#define  ERR_NO_ROCKEY		3		//并口上没有 Rockey 锁
#define  ERR_INVALID_PASSWORD		4		//并口上有 Rockey 锁, 但基本密码(pass1, pass2)错
#define  ERR_INVALID_PASSWORD_OR_ID 	5		//错误的密码或硬件 ID
#define  ERR_SETID			6               //设置硬件 ID 错
#define  ERR_INVALID_ADDR_OR_SIZE	7		//读写地址或长度有误
#define  ERR_UNKNOWN_COMMAND        	8		//没有此命令
#define  ERR_NOTBELEVEL3		9		//内部错误
#define  ERR_READ			10		//读数据错
#define  ERR_WRITE                  	11		//写数据错
#define  ERR_RANDOM                 	12		//随机数错
#define  ERR_SEED                   	13		//种子码错
#define  ERR_CALCULATE              	14		//计算错
#define  ERR_NO_OPEN			15		//在操作前没有打开锁
#define  ERR_OPEN_OVERFLOW          	16		//打开的锁太多(>16)
#define  ERR_NOMORE			17		//找不到更多的锁
#define  ERR_NEED_FIND			18		//没有 Find 直接用了 FindNext
#define  ERR_DECREASE			19		//递减错

#define  ERR_AR_BADCOMMAND		20		//算法指令错
#define  ERR_AR_UNKNOWN_OPCODE		21		//算法运算符错
#define  ERR_AR_WRONGBEGIN		22		//算法第一条指令含有常数
#define  ERR_AR_WRONG_END		23		//算法最后一条指令含有常数
#define  ERR_AR_VALUEOVERFLOW		24		//算法中常数值 > 63
#define  ERR_UNKNOWN			0xffff		//未知错误

#define  ERR_RECEIVE_NULL		0x100		//接收不到
#define  ERR_PRNPORT_BUSY		0x101		//打印口忙


/* 基本格式:
(1) 查找锁
    输入参数:
    function = 0
    *p1 = pass1
    *p2 = pass2
    *p3 = pass3
    *p4 = pass4
    返回:
    *lp1 为锁的硬件 ID
    返回为 0 表示成功, 其它为错误码

(2) 查找下一锁
    输入参数:
    function = 1
    *p1 = pass1
    *p2 = pass2
    *p3 = pass3
    *p4 = pass4
    返回:
    *lp1 为锁的硬件 ID
    返回为 0 表示成功, 其它为错误码

(3) 打开锁
    输入参数:
    function = 2
    *p1 = pass1
    *p2 = pass2
    *p3 = pass3
    *p4 = pass4
    *lp1 = 硬件 ID
    返回:
    *handle 为锁的句柄
    返回为 0 表示成功, 其它为错误码

(4) 关闭锁
    输入参数:
    function = 3
    *handle = 锁的句柄
    返回:
    返回为 0 表示成功, 其它为错误码

(5) 读锁
    输入参数:
    function = 4
    *handle = 锁的句柄
    *p1 = pos
    *p2 = length
    buffer = 缓冲区的指针
    返回:
    buffer 中添入读入的内容
    返回为 0 表示成功, 其它为错误码

(6) 写锁
    function = 5
    *handle = 锁的句柄
    *p1 = pos
    *p2 = length
    buffer = 缓冲区的指针
    返回:
    返回为 0 表示成功, 其它为错误码

(7) 随机数
    function = 6
    *handle = 锁的句柄
    返回:
    *p1 = 随机数
    返回为 0 表示成功, 其它为错误码
    
(8) 种子码
    function = 7
    *handle = 锁的句柄
    *lp2 = 种子码
    返回:
    *p1 = 返回码1
    *p2 = 返回码2
    *p3 = 返回码3
    *p4 = 返回码4
    返回为 0 表示成功, 其它为错误码

(9) 写用户 ID [*]
    function = 8
    *handle = 锁的句柄
    *lp1 = 用户 ID
    返回:
    返回为 0 表示成功, 其它为错误码

(10) 读用户 ID
     function = 9
     *handle = 锁的句柄
     返回:
     *lp1 = 用户 ID
     返回为 0 表示成功, 其它为错误码

(11) 设置模块 [*]
     function = 10
     *handle = 锁的句柄
     *p1 = 模块号
     *p2 = 用户模块密码
     *p3 = 是否允许递减 (1 = 允许, 0 = 不允许)
     返回:
     返回为 0 表示成功, 其它为错误码

(12) 检查模块是否有效
     function = 11
     *handle = 锁的句柄
     *p1 = 模块号
     返回:
     *p2 = 1 表示此模块有效
     *p3 = 1 表示此模块可以递减
     返回为 0 表示成功, 其它为错误码

(13) 写算法 [*]
     function = 12
     *handle = 锁的句柄
     *p1 = pos
     buffer = 算法指令串
     返回:
     返回为 0 表示成功, 其它为错误码
     
(14) 计算1 (模块字, ID 高位, ID 低位, 随机数)
     function = 13
     *handle = 锁的句柄
     *lp1 = 计算起始点
     *lp2 = 模块号
     *p1 = 输入值1
     *p2 = 输入值2
     *p3 = 输入值3
     *p4 = 输入值4
     返回:
     *p1 = 返回值1
     *p2 = 返回值2
     *p3 = 返回值3
     *p4 = 返回值4
     返回为 0 表示成功, 其它为错误码

(15) 计算2
     function = 14
     *handle = 锁的句柄
     *lp1 = 计算起始点
     *lp2 = 种子码
     *p1 = 输入值1
     *p2 = 输入值2
     *p3 = 输入值3
     *p4 = 输入值4
     返回:
     *p1 = 返回值1
     *p2 = 返回值2
     *p3 = 返回值3
     *p4 = 返回值4
     返回为 0 表示成功, 其它为错误码

(16) 计算3
     function = 15
     *handle = 锁的句柄
     *lp1 = 计算起始点
     *lp2 = 密码起始地址
     *p1 = 输入值1
     *p2 = 输入值2
     *p3 = 输入值3
     *p4 = 输入值4
     返回:
     *p1 = 返回值1
     *p2 = 返回值2
     *p3 = 返回值3
     *p4 = 返回值4
     返回为 0 表示成功, 其它为错误码

(17) 递减
     function = 16
     *handle = 锁的句柄
     *p1 = 模块号
     返回为 0 表示成功, 其它为错误码
*/
#ifdef __cplusplus
extern "C"
{
#endif

WORD Rockey(WORD function, WORD* handle, DWORD* lp1,  DWORD* lp2, WORD* p1, WORD* p2, WORD* p3, WORD* p4, BYTE* buffer);

#ifdef __cplusplus
}
#endif

⌨️ 快捷键说明

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