AIDA64 (原EVEREST)是一款综合性的系统软硬件检测工具,最权威的电脑硬件监测、监控与测试软件,硬件检测大师,也是每位高手玩家、菜鸟用户必备的硬件检测利器!AIDA64不仅提供诸如协助超频,硬件侦错,压力测试和传感器监测等多种功能,而且还可对处理器,系统内存和磁盘驱动器性能进行全面评估。
下载地址:https://www.aida64.com/
本次分析的是Extreme最新版本5.99.4900
是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工程中也测试下判断抠出的算法是不是正确。
接着(返回值 % 0x9987 )的余数传入第二个计算函数calc2。第二个函数中返回值是字符串长度3。
动态跟踪后发现 此函数就是通过计算后的三组索引值去索引出数组的值然后合并成字符串返回。
然后取出返回值中第2位值和key的最后一位判断是否相等。相等进入下一级检测
下面进入了黑名单检测 会循环与黑名单中的KEY比较相同就返回0 ,同时设置标志位。黑名单两组一共4602个
黑名单全部复制出来保存到文件留着备用。
我们自己写个从文件读取来检测黑名单函数
再往下进入Key的精确计算区。把剩余的24个分成9组分别进行计算
0,1 | 2,3 | 4,5 | 6,7 | 8,9,10,11 | 12,13,14,15 | 16,17,18 | 19,20,21 | 22 ,23 | 24
Calc3的算法逻辑 输入进来的分段key ,去数组arry中寻找到,返回索引值。然后求 返回的值再乘以索引值。然后累加上一次的结果。后返回。通过此函数可以知道,所有的key都是此数组中的值。
还原C++代码
最后对结果进行一些列判断后 调用delphi 的时间封装函数
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课