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