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

📄 tcsylist.h

📁 这个是集合几种关于硬盘的序列号的获取方式的DLL
💻 H
📖 第 1 页 / 共 2 页
字号:
/////////////////////////////////////////////////////////////////////////////
// TcsyList.h 扇区内注册管理双向链表类声明及实现,标准C++版本
// CopyRight(C) 1996,2008   TCSY 公司
// Pentium Working Room   ShanChengKun   2004.05.27   更新
/////////////////////////////////////////////////////////////////////////////

#ifndef TCSY_LIST_H
#define TCSY_LIST_H

/////////////////////////////////////////////////////////////////////////////

// 自定义二进制流匹配算法类(改进Boyer-Moore-Horspool算法)
class CSearchBin
{
	long  m_BinEntry[256];							// 256级计数入口
	const BYTE *m_byPattern;						// 模板区域指针
	long  m_nLenPatt;								// 模板的长度
	long  m_nSearchStyle;							// 查找的方式

public:
	CSearchBin();									// 默认构造函数
	CSearchBin(const BYTE *byPattern, long nLenPatt, long nStyle);
	void SetBinEntry(const BYTE *byPattern, long nLenPatt, long nStyle);

	long FindBin(const BYTE *byStream, long nLength);
	long FindBinEx(const BYTE *byStream, long nLength, BYTE byToken = '?');

	static BYTE ToUpper(BYTE byData)				// 小写转成大写
	{
		return ((byData >= 'a' && byData <= 'z') ? (byData - 32) : byData);
	}

	static void ReviseTokenPatt(BYTE *&pDes, long &nDesLen,
		long nStyle, BYTE byToken = '?');			// 修正通配符串

	static BYTE *SearchEmptyArea(BYTE bySrc[], long nSrcLen,
		long nEmptyLen, BYTE byEmpty = 0x00);		// 搜索连续空域
};

/////////////////////////////////////////////////////////////////////////////

#include "MemMapFile.h"								// 映象文件

#define USE_WHICH_DISK		1						// 逻辑物理

#if USE_WHICH_DISK == 0
#define USE_DISK_NUM		2						// 用逻辑C:
#else
#define USE_DISK_NUM		0						// 用物理0:
#endif

#ifndef DISK_SECTOR_SIZE
#define DISK_SECTOR_SIZE	512L					// 扇区大小
#endif

#define READ_SECT			0						// 读取扇区
#define WRITE_SECT			1						// 写入扇区
#define MIN_SECT_NUM		2L						// 开始扇区
#define MAX_SECT_NUM		62L						// 结束扇区

#define DEL_SUCCESS			0						// 成功删除
#define DEL_EMPTYLIST		1						// 已经删空
#define DEL_FAILURE			2						// 删除失败

#define ALL_ACCESS			0x00					// 扇区文件
#define NO_ENOUGH			0x01					// 非管理员
#define SCSI_DISK			0x02					// SCSI磁盘

#define SCK_REG_HEAD_FLAG	"TcsyRegistHeader"		// 注册标头
#define SCK_REG_ITEM_FLAG	"TcsyItem"				// 单元标识

#define BYTE_EMPTY			0x00					// 字节空闲
#define BYTE_FILLIN			0x48					// 字节填充

#define OFFSET(c, m) ((LONG)( (BYTE *)(&c.m) - (BYTE *)(&c) ))
#define EXTEND_BYTES		5						// 延05字节
#define NEW_RECSIZE (sizeof(BYTE) + sizeof(WORD))	// 区标大小

#define ZNN_FILE_SIZE (DISK_SECTOR_SIZE * (MAX_SECT_NUM + 1L))
#define ZNN_REG_HEAD_FLAG	"FileRegistHeader"		// 文件标头

#define REG_LIMIT_DAYS		7300L					// 限制天数
#define NONEED_REGIST		0x00L					// 无须注册
#define ADDNEW_REGIST		0x01L					// 新增注册
#define UPDATE_REGIST		0x02L					// 更新注册

//-------------------------------------------------------------------------//

// 明文(字符串):"C:\RECYCLER\"=一般加密			// WinNT用户
static const BYTE PATH_BASE_NT[] =
{
	0xE6, 0x9F, 0xF9, 0xF7, 0xE0, 0xE6, 0xFC,
	0xE6, 0xE9, 0xE0, 0xF7, 0xF9, 0xA5
};

// 明文(字符串):"C:\RECYCLED\"=一般加密			// Win9X用户
static const BYTE PATH_BASE_9X[] =
{
	0xE6, 0x9F, 0xF9, 0xF7, 0xE0, 0xE6, 0xFC,
	0xE6, 0xE9, 0xE0, 0xE1, 0xF9, 0xA5
};

// 明文(字符串):"System32.Znn"=一般加密			// 文件名称
static const BYTE ZNN_FILE_NAME[] =
{
	0xF6, 0xDC, 0xD6, 0xD1, 0xC0, 0xC8, 0x96,
	0x97, 0x8B, 0xFF, 0xCB, 0xCB, 0xA5
};

// 明文(字符串):"...超过了使用期限..."=一般加密	// 时限提示
static const BYTE LIMIT_TIME_PROMPT[] =
{
	0x12, 0x62, 0x16, 0x06, 0x1D, 0x75, 0x75, 0x1E, 0x61, 0x5F,
	0x6F, 0x1C, 0x76, 0x66, 0x69, 0x49, 0x16, 0x6A, 0x6F, 0x07,
	0x77, 0x10, 0x10, 0x61, 0x73, 0x1D, 0x6B, 0x63, 0x6D, 0x48,
	0x19, 0x5B, 0x17, 0x5F, 0x63, 0x12, 0x06, 0x04, 0xA8, 0xA8,
	0x10, 0x0E, 0x77, 0x74, 0x1B, 0x08, 0x16, 0x09, 0x1C, 0x58,
	0x64, 0x6E, 0x6F, 0x1C, 0x76, 0x66, 0x63, 0x7F, 0x6A, 0x7B,
	0x06, 0x09, 0x6D, 0x42, 0x1C, 0x5E, 0x61, 0x5F, 0x1E, 0x1C,
	0x6A, 0x4E, 0x19, 0x69, 0x75, 0x5D, 0xA8, 0xA8, 0x70, 0x58,
	0x16, 0x06, 0x6F, 0x1C, 0x76, 0x66, 0x14, 0x1B, 0x17, 0x5F,
	0x63, 0x12, 0x06, 0x09, 0x62, 0x4E, 0x71, 0x7F, 0x74, 0x04,
	0x6D, 0x12, 0x13, 0x0D, 0x1F, 0x56, 0x18, 0x5D, 0x75, 0x75,
	0x72, 0x07, 0x17, 0x44, 0x06, 0x04, 0xA5
};

// 明文(字符串):"...管理员权限登录..."=一般加密	// 时限提示
static const BYTE NOT_ADMIN_PROMPT[] =
{
	0x1D, 0x75, 0x75, 0x1E, 0x61, 0x5F, 0x74, 0x04, 0x71, 0x54,
	0x69, 0x49, 0x16, 0x6A, 0x6F, 0x07, 0x77, 0x10, 0x10, 0x61,
	0x73, 0x1D, 0x6B, 0x63, 0x6D, 0x48, 0x19, 0x5B, 0x17, 0x5F,
	0x63, 0x12, 0x06, 0x04, 0x10, 0x0E, 0x73, 0x1E, 0x76, 0x75,
	0xA8, 0xA8, 0x72, 0x07, 0x17, 0x44, 0x1F, 0x56, 0x17, 0x60,
	0x61, 0x79, 0x70, 0x58, 0x16, 0x06, 0x6F, 0x1C, 0x76, 0x66,
	0x6E, 0x5C, 0x76, 0x75, 0x1C, 0x03, 0x61, 0x79, 0x04, 0x06,
	0x72, 0x07, 0x17, 0x44, 0x14, 0x1B, 0x6D, 0x48, 0x19, 0x5B,
	0x75, 0x4E, 0xA8, 0xA8, 0x76, 0x66, 0x1E, 0x02, 0x77, 0x71,
	0x1C, 0x79, 0x65, 0x48, 0x71, 0x14, 0x6D, 0x0D, 0x6A, 0x7B,
	0x10, 0x62, 0x67, 0x19, 0x6A, 0x10, 0x68, 0x16, 0x06, 0x09,
	0x62, 0x4E, 0x61, 0x5F, 0x72, 0x07, 0x6A, 0x5F, 0x1F, 0x56,
	0x73, 0x7D, 0x75, 0x67, 0xA8, 0xA8, 0x10, 0x62, 0x67, 0x19,
	0x06, 0x09, 0x1E, 0x57, 0x70, 0x7A, 0x76, 0x4E, 0x6A, 0x10,
	0x68, 0x16, 0x1C, 0x79, 0x65, 0x48, 0x71, 0x14, 0x64, 0x0F,
	0x6A, 0x10, 0x06, 0x04, 0xA5
};

// Znn008的出生日期,用于DIY唯一序列号的安装日期
static const BYTE ZNN008_BIRTH[8] =
{
	19, 81, 8, 7, 18, 18, 18, 18
};

/////////////////////////////////////////////////////////////////////////////

// 自定义用户注册数据的详细结构:可自定时限
struct STcsyRegistData
{
	BYTE  byProductNum[16];							// 产品标号
	DWORD dwLimitDays;								// 限制天数
	BYTE  byFirstSetup[8];							// 安装日期
	BYTE  byRecentRun[8];							// 最近运行
	BYTE  byUserName[16];							// 用户名称
	BYTE  byRegistCode[32];							// 注册码SN

	STcsyRegistData()								// 构造函数
	{
		memset(byProductNum, 0x00, sizeof(byProductNum));
		dwLimitDays = 0x00;
		memset(byFirstSetup, 0x00, sizeof(byFirstSetup));
		memset(byRecentRun, 0xFF, sizeof(byRecentRun));
		memset(byUserName, 0x00, sizeof(byUserName));
		memset(byRegistCode, 0x00, sizeof(byRegistCode));
	}												// 置默认值
};

//-------------------------------------------------------------------------//

// 自定义与注册对话框进行数据交换的结构
typedef struct _SckRegistExchange
{
	CHAR chProduct[16];								// 软件产品号IN
	CHAR chReturn[100];								// 生成返回码IN
	CHAR chNameID[16];								// 返回用户名OUT
	CHAR chRegist[33];								// 返回注册码OUT
}
SckRegistExchange, *PSckRegistExchange;

//-------------------------------------------------------------------------//

// 自定义TCSY_REGISTPRODUCT的入口命令参数
typedef struct _SckRegistOrder
{
	HWND  hWndParent;								// 父窗口的句柄
	BYTE  byProductNum[16];							// 产品序号指针
	DWORD dwLimitDays;								// 时间限制长度
	BOOL  bRegistResult;							// 返回结果标志
	CHAR  chHDiskSN[MAX_PATH];						// 自定义序列号
}
SckRegistOrder, *PSckRegistOrder;

//-------------------------------------------------------------------------//

// 模拟扇区映象的Znn格式文件的标头定义
struct SFileRegistHead

⌨️ 快捷键说明

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