精装友好联络算法实现借壳和RI

精装友好联络会 

注册算法分析:

1.  许可证由三部分组成。

2. 的登记号的第一部分是顺序编号0x6d模

3. 登记代码的第二部分:

  • 先将订单号与0XB25F1异或,将异或后的结果转换成十进制字符串后,在些字符串后面连接上两个字符。
    而这两个字符分别由字符串的第0位。第1位和第2位,第3位计算而来。记为szTemp.算法例如以下
	DWORD dwTemp2 = dwNum ^ 0xB25F1;
	TCHAR szTemp[20] = {0};
	_sntprintf(szTemp, 20, "%d", dwTemp2);
	DWORD dwKey2Len = strlen(szTemp);
	TCHAR szTemp1[20] = {0};
	TCHAR szTemp2[20] = {0};
	_snprintf(szTemp1, 20, "%c", (szTemp[0] + szTemp[1]) % 5 + 0x34);
	_snprintf(szTemp2, 20, "%c", (szTemp[2] + szTemp[3]) % 5 + 0x33);
	strcat(szTemp, szTemp1);
	strcat(szTemp, szTemp2);
  • 将上面的结果szTemp转换成十进制数字后,与0xDDFB7687进行异或。作为此步结果的一部分。然后依据异或后的结果算出4个不同的字符。然后将这四个字符插入到异或后的字符串中。结果记为szKey2.算法代码例如以下。

	DWORD dwTemp3 = 0;
	dwTemp3 = atoi(szTemp);
	TCHAR szKey2[20] = {0};
	_snprintf(szKey2, 20, "%u", dwTemp3 ^ 0xDDFB7687);
	TCHAR sz1[2] = {0};
	TCHAR sz2[2] = {0};
	TCHAR sz3[2] = {0};
	TCHAR sz4[2] = {0};
	_snprintf(sz1, 2, "%c", (szKey2[0] + szKey2[1]) % 5 + 0x66);
	_snprintf(sz2, 2, "%c", (szKey2[2] + szKey2[3]) % 5 + 0x75);
	_snprintf(sz3, 2, "%c", (szKey2[4] + szKey2[5]) % 5 + 0x7a);
	_snprintf(sz4, 2, "%c", (szKey2[6] + szKey2[7] + szKey2[8]) % 5 + 0x69);
	strinsert(szKey2, sz1[0], 7);
	strinsert(szKey2, sz4[0], 3);
	strinsert(szKey2, sz2[0], 5);
	strinsert(szKey2, sz3[0], 9);

4.  //生成注冊码。注冊码= 注冊码第一部分 + 注冊码第二部分 + “!”

	TCHAR szResult[30] = {0};
	memcpy(szResult, szKey1, strlen(szKey1));
	strcat(szResult, szKey2);
	strcat(szResult, _T("!"));


逆向过程 :逆向的过程中使用的定单号是123456



注冊机代码与分析过程与udd文件下载地址:http://download.csdn.net/detail/xiaocaiju/7522099

版权声明:本文博客原创文章,博客,未经同意,不得转载。

原文地址:https://www.cnblogs.com/gcczhongduan/p/4642269.html