很简单的一款儿童学习数学的软件,长期使用时需要注册码,下面简单分析一下注册算法。
注册码必须是25位,形如AAAAa-BBBBb-CCCCc-DDDDd-EEEEe.真正有用的只是AAAABBBBCCCCDDDD16位,其他位置可以随便填写。
004015B1 call ds:_mbscmp处是比较注册码是否正确。
正确的注册码需要用硬盘的id号计算,比如我的虚拟机8位硬盘id:18e9de99
1)先进行变形在2,4,6,8,10,12,14,16位分别插入1,2,3,4,5,6,7,8.多次变形后生成24位长字符串11128324e5369748d5e69798。
2)按照6个字符一段分成4组,按照3)4)5)计算生成4个4位共16位字符串
3)每一组的后三字符逐位与种子数组【0a,13,09,0c,0b,0a,08】相乘后求和,并转换为字符串。
4)计算3)中生成字符串的第3位与第4位差的绝对值,存入m。
5)对3)生成的字符串进行变形,先把第1位加上m;然后前4位每位各加上0x11,生成4位字符串
按照1)-5)步骤重复两次,第一次生成JBCJHBHCEGHJHCJE,第二次生成ICDJCDCCCHBBCIFF。
ICDJCDCCCHBBCIFF就是对应上面的AAAABBBBCCCCDDDD16位注册码了。
所以我的虚拟机的注册码就是ICDJ1-CDCC2-CHBB3-CIFF4-00000。注册成功后你的注册码保存在dat\diary.dat文件中。