huyutian

他强由他强,清风拂山岗;他横由他横,明月照大江。他自狠来他自恶,我自一口真气足

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  20 随笔 :: 47 文章 :: 22 评论 :: 0 Trackbacks
很简单的一款儿童学习数学的软件,长期使用时需要注册码,下面简单分析一下注册算法。
注册码必须是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文件中。
posted on 2011-06-26 11:18 胡雨田 阅读(549) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理