45fan.com - 路饭网

搜索: 您的位置主页 > 电脑频道 > 电脑教程 > 阅读资讯:LeapFTP注册算法的详细介绍

LeapFTP注册算法的详细介绍

2016-08-29 08:58:25 来源:www.45fan.com 【

LeapFTP注册算法的详细介绍

很久没玩OD,正好机器上试用版的LeapFTP过期了,于是心血来潮准备写个注册机,LeapFTP版本v2.76

记得以前跟过LeapFTP,注册码分为两段,是明文存放在内存中,但是没有去细看算法,今天决定把算法搞定以后升级也方便^_^.

用OD,载入,下注册表断点(为什么下注册表断点?因为我跟过^_^),关键部分0x00484d89处停下,程序去读取"Software/LeapWare/Registry/"下有没有UserName和UserKey两个东西,往下看,这两个东西都必须有否则就直接跳走了.这个版本的Leap似乎有点改进,记得以前好像是无论成功失败都会去写注册表,现在是只有注册成功了里面才有东西,不管那么多,先手工添加方便分析-_-#.

走啊走啊走啊走,走到了一个地方

 

LeapFTP注册算法的详细介绍00484FB2|.E8B1FDFFFFcall00484D68
LeapFTP注册算法的详细介绍00484FB7|
>807E3500cmpbyteptr[esi+35],0
LeapFTP注册算法的详细介绍00484FBB|.7533jnzshort00484FF0
LeapFTP注册算法的详细介绍00484FBD|
.807E3600cmpbyteptr[esi+36],0
LeapFTP注册算法的详细介绍00484FC1|.7413jeshort00484FD6
LeapFTP注册算法的详细介绍00484FC3|
.A194C14B00moveax,dwordptr[4BC194]
LeapFTP注册算法的详细介绍00484FC8|
.8B00moveax,dwordptr[eax]
LeapFTP注册算法的详细介绍00484FCA|
.8B5628movedx,dwordptr[esi+28]
LeapFTP注册算法的详细介绍00484FCD|
.E822F8FFFFcall004847F4;这个CALL比较长度是否合格
LeapFTP注册算法的详细介绍00484FD2|
.84C0testal,al
LeapFTP注册算法的详细介绍00484FD4
751Ajnzshort00484FF0
LeapFTP注册算法的详细介绍00484FD6|
>8B462Cmoveax,dwordptr[esi+2C]
LeapFTP注册算法的详细介绍00484FD9|
.50pusheax
LeapFTP注册算法的详细介绍00484FDA|
.A194C14B00moveax,dwordptr[4BC194]
LeapFTP注册算法的详细介绍00484FDF|
.8B00moveax,dwordptr[eax]
LeapFTP注册算法的详细介绍00484FE1|
.8B4E28movecx,dwordptr[esi+28]
LeapFTP注册算法的详细介绍00484FE4|
.8B5624movedx,dwordptr[esi+24]
LeapFTP注册算法的详细介绍00484FE7|
.E860F6FFFFcall0048464C;比较
LeapFTP注册算法的详细介绍00484FEC|
.84C0testal,al;不能跳
LeapFTP注册算法的详细介绍00484FEE|
.7404jeshort00484FF4
LeapFTP注册算法的详细介绍00484FF0|
>B301movbl,1;标志位
LeapFTP注册算法的详细介绍00484FF2|
.EB0Fjmpshort00485003
LeapFTP注册算法的详细介绍
LeapFTP注册算法的详细介绍

大致流程就全在这了,先看第一个CALL,484FCD,F7跟入,里面似乎没什么特别的,只是有个比较注册码长度是不是0x13的情况,不是直接就回来了,是的话要经过一定算法的变形,大概就是比较某些位上是不是指定的值,继续往下看

关键CALL 484FE7,F7跟进去看看

 

LeapFTP注册算法的详细介绍0048469A|.8BD0movedx,eax
LeapFTP注册算法的详细介绍0048469C|.85D2testedx
,edx
LeapFTP注册算法的详细介绍0048469E|.7E
33jleshort004846D3
LeapFTP注册算法的详细介绍004846A0|.B8
01000000moveax,1
LeapFTP注册算法的详细介绍004846A5|>8B4DFC/movecx,dwordptr[ebp-4]
LeapFTP注册算法的详细介绍004846A8|.0FB64C01FF|movzxecx,byteptr[ecx+eax-1]
LeapFTP注册算法的详细介绍004846AD|.0FAFC8|imulecx,eax
LeapFTP注册算法的详细介绍004846B0|.8BD9|movebx
,ecx
LeapFTP注册算法的详细介绍004846B2|.C1E1
04|shlecx,4
LeapFTP注册算法的详细介绍004846B5|.2BCB|subecx,ebx
LeapFTP注册算法的详细介绍004846B7|.894DE8|movdwordptr
[ebp-18],ecx
LeapFTP注册算法的详细介绍004846BA|.DB45E8|filddwordptr
[ebp-18]
LeapFTP注册算法的详细介绍004846BD|.DC45F0|faddqwordptr[ebp-10]
LeapFTP注册算法的详细介绍004846C0|.8D0C80|leaecx,dwordptr[eax+eax*4]
LeapFTP注册算法的详细介绍004846C3|.894DE4|movdwordptr[ebp-1C],ecx
LeapFTP注册算法的详细介绍004846C6|.DB45E4|filddwordptr
[ebp-1C]
LeapFTP注册算法的详细介绍004846C9|.DEC1|faddpst(1),st
LeapFTP注册算法的详细介绍004846CB|.DD5DF0|fstpqwordptr
[ebp-10]
LeapFTP注册算法的详细介绍004846CE|.9B|wait
LeapFTP注册算法的详细介绍004846CF|.
40|inceax
LeapFTP注册算法的详细介绍004846D0|.4A|decedx
LeapFTP注册算法的详细介绍004846D1|.^
75D2jnzshort004846A5
LeapFTP注册算法的详细介绍004846D3|>8B45
08moveax,dwordptr[ebp+8]
LeapFTP注册算法的详细介绍004846D6|.E83945F8FFcall00408C14;还不知道
LeapFTP注册算法的详细介绍004846DB|.8945E8movdwordptr[ebp-18],eax
LeapFTP注册算法的详细介绍004846DE|.DB45E8filddwordptr
[ebp-18]
LeapFTP注册算法的详细介绍004846E1|.DD45F0fldqwordptr[ebp-10]
LeapFTP注册算法的详细介绍004846E4|.DC4DF0fmulqwordptr[ebp-10]
LeapFTP注册算法的详细介绍004846E7|.DEC1faddpst(1),st
LeapFTP注册算法的详细介绍
004846E9|.DD5DF0fstpqwordptr[ebp-10]
LeapFTP注册算法的详细介绍
LeapFTP注册算法的详细介绍

前面这一段是根据输入的用户名来算注册码的核心部分,先比较用户名的长度如果不为0的话,就循环取用户名的char值,乘上序号,乘上个0x10,再减去个char值乘序号,加上序号乘个5,这部分的循环最后就简化为:

(User[i] * (i+1)) * 9 + 5* (i+1)

最后循环得到的值来个平方,再加上一个常数214065,就算完了,接下来看程序用这个得到的数字做什么样的比较规则:

后面比较简单就不在贴代码,只是判断前面6位是不是常数214065,第7位是不是-,后面一堆是不是算到的数,最后用自己的KeyGenMaker写了个注册机,代码如下:

LeapFTP注册算法的详细介绍longresult=0;
LeapFTP注册算法的详细介绍
for(inti=0;i<para1.Length;i++)
LeapFTP注册算法的详细介绍LeapFTP注册算法的详细介绍
{
LeapFTP注册算法的详细介绍result
=result+para1[i]*(i+1)*15;
LeapFTP注册算法的详细介绍result
=result+5*(i+1);
LeapFTP注册算法的详细介绍}

LeapFTP注册算法的详细介绍result=result*result+214065;
LeapFTP注册算法的详细介绍
return"214065-"+result.ToString();

给出一组注册码 UserName: Red_angelX

UserKey: 214065-6827104690

 

本文地址:http://www.45fan.com/dnjc/69177.html
Tags: 算法 注册 LeapFTP
编辑:路饭网
关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部