• 标 题:注册码算法入门!----菜鸟篇
  • 作 者:龙哥
  • 时 间:2004-2-22 周日, 上午12:43
  • 链 接:http://bbs.pediy.com

  各位看官大家好,俗话说的好,近朱者赤,近墨者黑。本人3天前在看雪论坛注册ID,当时对破解,crack,IAT,等等连个概念都没有,在论坛里泡了3天,看了很多各方面的贴子,感觉到收入良多,今日正好看见了一个软件的破解过程,按作者的方法,成功找到注册码,破解了软件,心中一阵窃喜,因为这是本人第一次破解软件,当然高兴啦!后来觉得闲来无事,干脆就研究一下注册码的算法,结果还让我看出点儿门道,为了让和我一样的菜菜们能学点儿新东西,特别将过程发出来,也算是为本论坛出一份薄力吧。因为本人就是菜鸟一个,所以写出来的东东,各位菜友应该能看懂的!
  好了,进入正题!
SuperCleaner 2.61*注:此文给新手看,高手不要浪费时间 
软件大小:386KB 
软件语言:英文 
软件类别:国外软件/免费版/卸载工具 
运行环境:Win9x/Me/NT/2000/XP 
下载地址:http://www.onlinedown.net/soft/6433.htm 
软件介绍:是帮助用户清洗他们的计算机硬盘内不必要的文件的程序。它能扫描你的系统让你选择不再需要的文件进行删除。并能备份文件已避免你误删除有用的文件,此备份功能将不必要的文件扔进再循环箱,这样可以让你再必要的时候恢复信息。
  软件的破解内容请参见论坛里的另外一贴。
  这里我主要想和大家研究一下注册码的算法。该软件的注册方式为“用户名+注册码”方式,注册码分为4段即“XXXX-XXXX-XXXX-XXXX”形式。首先要找到注册码的算法代码,在上面的贴子里有,这里就不多说了。下面就是注册码各部分算法的代码。

注册码第一部分算法:

00419841   |> /0FBE1C38     /movsx ebx,byte ptr ds:[eax+edi]        "ds:[edi]中存放的为用户名"
00419845   |. |03DA       |add ebx,edx                  "edx中存放一常数38"
00419847   |. |03CB       |add ecx,ebx
00419849   |. |40        |inc eax                    "指向用户名中下一个字母"
0041984A   |. |3BC6       |cmp eax,esi                  "比较用户名是否结束,esi中存放用户名长度"
0041984C   |.^7C F3       jl short SuperCle.00419841           "循环取数计算"

注册码第二部分算法:

00419873   |> /0FBE2C38     /movsx ebp,byte ptr ds:[eax+edi]
00419877   |. |0FAFEA      |imul ebp,edx                  "edx中存放一常数52"
0041987A   |. |03CD       |add ecx,ebp
0041987C   |. |40        |inc eax
0041987D   |. |3BC6       |cmp eax,esi
0041987F   |.^7C F2       jl short SuperCle.00419873

注册码第三部分算法:

004198AF   |> /0FBE2C38     /movsx ebp,byte ptr ds:[eax+edi]
004198B3   |. |03EA       |add ebp,edx                  "edx中存放一常数12"
004198B5   |. |03CD       |add ecx,ebp
004198B7   |. |40        |inc eax
004198B8   |. |3BC6       |cmp eax,esi
004198BA   |.^7C F3       jl short SuperCle.004198AF

注册码第四部分算法:

004198EA   |> /0FBE2C38     /movsx ebp,byte ptr ds:[eax+edi]
004198EE   |. |0FAFEA      |imul ebp,edx                 "edx中存放一常数14"
004198F1   |. |03CD       |add ecx,ebp
004198F3   |. |40        |inc eax
004198F4   |. |3BC6       |cmp eax,esi
004198F6   |.^7C F2       jl short SuperCle.004198EA

  相信看完上面的注册码算法,大家也差不多都能写出具体的算法了吧,不过像和我一样的菜菜们,可能还是有些不太明白的地方,没关系下面就是根据的算法,得到的注册码计算公式。
  第一部分注册码算法:(用户名中的每一个字母的ASCII码+38)的累计数。
  第二部分注册码算法:(用户名中的每一个字母的ASCII码*52)的累计数。
  第三部分注册码算法:(用户名中的每一个字母的ASCII码+12)的累计数。
  第四部分注册码算法:(用户名中的每一个字母的ASCII码*14)的累计数。
  这下应该比较直观了,要是还不明白,还是没关系,因为最后还有举例说明,俺想的周到吧!
  举例:用户名:123456,注册码计算流程如下:
  123456的ASCII码分别为十进制的49,50,51,52,53,54。
  第一部分注册码:(49+38)+(50+38)+(51+38)+(52+38)+(53+38)+(54+38)=537;
  第二部分注册码:(49*52)+(50*52)+(51*52)+(52*52)+(53*52)+(54*52)=16068;
  第三部分注册码:(49+12)+(50+12)+(51+12)+(52+12)+(53+12)+(54+12)=381;
  第四部分注册码:(49*14)+(50*14)+(51*14)+(52*14)+(53*14)+(54*14)=4326;
  注册码:537-16068-381-4326
  以上就是偶花了2小时的劳动成果(1小时解算法,1小时发贴子),还请大家多多捧场,有意见和看法欢迎提出来,因为这是偶第一篇带点儿技术性的贴子,所以可能写的不是很好,以后我会努力的! :D