说明

测试可以直接改跳转能显示出来成功的操作。但由于是收费软件,不排除会有暗桩或者功能不全的情况。
所以本文的操作方式以追踪算法并编写注册机为主。
第一步:得到种子值
首先通过字符串,定位到“感谢注册”汇编处,此处便是相关的核心算法校验函数。
在函数开始之后,位置004153F6处,定义了一个常量,常量地址为:0x41A030,直接跳转过去。
前四个字节为:BD C3 0C 00,倒序排列为:00 0C C3 BD
那么十六进制转十得结果为:836541。此处需要记住。
已知得到了他的种子值为:11165081。
我的软件中显示的机器码为:12001622,那么减去上面的常量:836541,12001622-836541=11165081
此时,11165081,便是种子值。
算法

算法通过rtcSin确定,在求正弦值,他的公式为:
而C1与C2的值,则在地址:0x41A034、0x41A044中。
0x41A034分析
二进制为:05 00 00 00 05 00 00 00 14 AE 47 E1 7A 14 F2 3F
分析为:05 00 为 Double 双精度浮点数00 00 05 00 00 00 为 填充废料14 AE 47 E1 7A 14 F2 3F 为数据,倒序排列为:3F F2 14 7A E1 47 AE 14,将转换之后的数据进行IEEE 754 浮点数解码得到值为:1.13
0x41A044分析

二进制为:03 00 00 00 05 00 00 00 D1 B1 09 0003 00 为 Long 长整数00 00 00 00 00 00 为填充废料D1 B1 09 00 为数据,倒序排列为:00 09 B1 D1,将00 09 B1 D1转换为十进制为635345。
至此,C1、C2的变量值已全部得到。
计算方式为:rawCalc = 1110581 * (Math.Sin(1110581) + 1.13) - 635345
得到结果为:2237014.9486671104,转换为整数为:2237014
然后将2237014+836541=3073555,结果:3073555,便是最终的注册码。
为什么要添加836541呢?
在开头时,他将用户输入的注册码相减了836541,并保存起来,为接下来的内部计算的hash做对比。
但算码的话,必然需要将他加过来,否则将无法匹配。
最后
在软件中,他还有一处的相同的注册方式,名称为:Reg.exe (普及版)
但他的C1与C2略有不同。
C1为:1.03
C2为:635125
算法,以及常量值,保持不变,即可出码。
本站不提供此类成品软件,分析仅供学习交流使用。
测试截图
