欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

[原创]AIDA64硬件检测工具注册算法分析+注册机

[原创]AIDA64硬件检测工具注册算法分析+注册机

AIDA64 (原EVEREST)是一款综合性的系统软硬件检测工具,最权威的电脑硬件监测、监控与测试软件,硬件检测大师,也是每位高手玩家、菜鸟用户必备的硬件检测利器!AIDA64不仅提供诸如协助超频,硬件侦错,压力测试和传感器监测等多种功能,而且还可对处理器,系统内存和磁盘驱动器性能进行全面评估。

下载地址:https://www.aida64.com/


本次分析的是Extreme最新版本5.99.4900


1 注册算法分析


是UPX的压缩壳,为了静态分析方便先脱了壳。脱壳后显示是Delphi的程序。


打开程序随意输入字符串和key,发现字符串


但是程序中并没有搜索到中文。但是能显示中文应该用了翻译文本。到程序目录下发现了lanugae文件夹,在此文件夹下找到了cn.txt


打开文件搜索上边的错误文本。可以定位到对应的英文字符串。


在IDA中定位到字符串,查看引用只有一处


直接来到关键代码处。定位到函数开头处

在X32dbg中设置断点。此软件在网上有流传出的可用Key。格式如

U3FI1-Y3ED6-FNDAK-3DM54-ULYKW  一个共5段每段5个字符。

IDA大致看下注册流程,载入代码签名后看可以轻松不少。前面一堆不知道在干什么,

但是发现了获取输入key的函数,然后去除空格,转换成大写,去除字符串中的’-’


为了验证分析对不对,在软件中输入key,然后程序断下.F8走完上述代码。可以看到key已经被去除了“-“


接着又获取了key的长度,判断是不是等于25,然后调用了一个函数看名就知道是解析key的


以下的代码都是根据此函数的参数返回值做判断,显示错误信息。

最后到达成功


接下来主任务就是分析TAIDA64_ParseProductKey这个函数了

进入函数发现与上一层许多相同的代码。真正校验Key是从calc1开始


第一个计算函数不是很复杂,对key前24位求了一个哈希值。算法直接抠出到VS工程。我们先正向还原注册流程后,再分析流程上的关系写注册机。X32dbg也走到此取得返回值。VS工程中也测试下判断抠出的算法是不是正确。

//前24位取校验值

int calc1(char*str)

{

	//只取前24个

	DWORD len = 24;

	int v1 = 0;

	if (len>0)

	{

		int i= 0;

		do

		{

			v1 ^=str[i] << 8;

			int v4 = 8;

			do

			{

				if ((v1 & 0x8000) == 0)

					v1 *= 2;

				else

					v1 = 2 * v1 ^ 0x8201;

				--v4;

			} while (v4);

			v1 = v1&0xffff;

			++i;

			--len;

		} while (len);

	}

	return v1;

}

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功