LeapFTP注册算法分析

LeapFTP注册算法分析nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 很久没玩 OD 正好机器上试用版的 LeapFTP 过期了 于是心血来潮准备写个注册机 LeapFTP 版本 v2 76 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 记得以前跟过 LeapFTP 注册码分为两段 是明文存放在内存中 但是没有去细看算法 今天决定把算法搞定以后升级也方便 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 用 OD 载入 下注册表断点 为什么下注册表断点 因为我跟过 关键部分 0x00484d89 处停下

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

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

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

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

        

LeapFTP注册算法分析 00484FB2  | .   E8 B1FDFFFF    call     00484D68
LeapFTP注册算法分析00484FB7  |
>   807E  35   00     cmp     byte ptr [esi + 35 ] ,   0
LeapFTP注册算法分析00484FBB  |
.    75   33          jnz     short 00484FF0
LeapFTP注册算法分析00484FBD  |
.   807E  36   00     cmp     byte ptr [esi + 36 ] ,   0
LeapFTP注册算法分析00484FC1  |
.    74   13          je      short 00484FD6
LeapFTP注册算法分析00484FC3  |
.   A1 94C14B00   mov     eax ,  dword ptr [4BC194]
LeapFTP注册算法分析00484FC8  |
.   8B00          mov     eax ,  dword ptr [eax]
LeapFTP注册算法分析00484FCA  |
.   8B56  28        mov     edx ,  dword ptr [esi + 28 ]
LeapFTP注册算法分析00484FCD  |
.   E8 22F8FFFF    call     004847F4                          ;   这个CALL比较长度是否合格
LeapFTP注册算法分析00484FD2  |
.   84C0          test    al ,  al
LeapFTP注册算法分析00484FD4      
75  1A         jnz     short 00484FF0
LeapFTP注册算法分析00484FD6  |
>   8B46 2C       mov     eax ,  dword ptr [esi + 2C]
LeapFTP注册算法分析00484FD9  |
.    50             push    eax
LeapFTP注册算法分析00484FDA  |
.   A1 94C14B00   mov     eax ,  dword ptr [4BC194]
LeapFTP注册算法分析00484FDF  |
.   8B00          mov     eax ,  dword ptr [eax]
LeapFTP注册算法分析00484FE1  |
.   8B4E  28        mov     ecx ,  dword ptr [esi + 28 ]
LeapFTP注册算法分析00484FE4  |
.   8B56  24        mov     edx ,  dword ptr [esi + 24 ]
LeapFTP注册算法分析00484FE7  |
.   E8 60F6FFFF    call     0048464C                          ;   比较
LeapFTP注册算法分析00484FEC  |
.   84C0          test    al ,  al                            ;   不能跳
LeapFTP注册算法分析00484FEE  |
.    74   04          je      short 00484FF4
LeapFTP注册算法分析00484FF0  |
>   B3  01          mov     bl ,   1                              ;   标志位
LeapFTP注册算法分析00484FF2  |
.   EB 0F         jmp     short  00485003
LeapFTP注册算法分析
LeapFTP注册算法分析

 

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

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

             

LeapFTP注册算法分析 0048469A  |.  8BD0          mov     edx ,  eax
LeapFTP注册算法分析0048469C  |.  85D2          test    edx
,  edx
LeapFTP注册算法分析0048469E  |.  7E 
33          jle     short 004846D3
LeapFTP注册算法分析004846A0  |.  B8 
01000000    mov     eax ,   1
LeapFTP注册算法分析004846A5  |>  8B4D FC       /mov     ecx
,  dword ptr  [ ebp-4 ]
LeapFTP注册算法分析004846A8  |.  0FB64C01 FF   |movzx   ecx
,  byte ptr  [ ecx+eax-1 ]
LeapFTP注册算法分析004846AD  |.  0FAFC8        |imul    ecx
,  eax
LeapFTP注册算法分析004846B0  |.  8BD9          |mov     ebx
,  ecx
LeapFTP注册算法分析004846B2  |.  C1E1 
04        |shl     ecx ,   4
LeapFTP注册算法分析004846B5  |.  2BCB          |sub     ecx
,  ebx
LeapFTP注册算法分析004846B7  |.  894D E8       |mov     dword ptr 
[ ebp-18 ] ,  ecx
LeapFTP注册算法分析004846BA  |.  DB45 E8       |fild    dword ptr 
[ ebp-18 ]
LeapFTP注册算法分析004846BD  |.  DC45 F0       |fadd    qword ptr 
[ ebp-10 ]
LeapFTP注册算法分析004846C0  |.  8D0C80        |lea     ecx
,  dword ptr  [ eax+eax*4 ]
LeapFTP注册算法分析004846C3  |.  894D E4       |mov     dword ptr 
[ ebp-1C ] ,  ecx
LeapFTP注册算法分析004846C6  |.  DB45 E4       |fild    dword ptr 
[ ebp-1C ]
LeapFTP注册算法分析004846C9  |.  DEC1          |faddp   st(
1 ) ,  st
LeapFTP注册算法分析004846CB  |.  DD5D F0       |fstp    qword ptr 
[ ebp-10 ]
LeapFTP注册算法分析004846CE  |.  9B            |wait
LeapFTP注册算法分析004846CF  |.  

40             |inc     eax
LeapFTP注册算法分析004846D0  |.  4A            |dec     edx
LeapFTP注册算法分析004846D1  |.^ 

75  D2         jnz     short 004846A5
LeapFTP注册算法分析004846D3  |>  8B45 
08        mov     eax ,  dword ptr  [ ebp+8 ]
LeapFTP注册算法分析004846D6  |.  E8 3945F8FF   call    00408C14                         
;   还不知道
LeapFTP注册算法分析
004846DB  |.   8945  E8       mov     dword ptr  [ ebp-18 ] ,  eax
LeapFTP注册算法分析004846DE  |.  DB45 E8       fild    dword ptr 
[ ebp-18 ]
LeapFTP注册算法分析
004846E1   |.  DD45 F0       fld     qword ptr  [ ebp-10 ]
LeapFTP注册算法分析
004846E4   |.  DC4D F0       fmul    qword ptr  [ ebp-10 ]
LeapFTP注册算法分析
004846E7   |.  DEC1          faddp   st( 1 ) ,  st
LeapFTP注册算法分析
004846E9   |.  DD5D F0       fstp    qword ptr  [ ebp-10 ]
LeapFTP注册算法分析
LeapFTP注册算法分析

 

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

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

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

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

             

LeapFTP注册算法分析 long  result  =   0 ;
LeapFTP注册算法分析
for ( int  i = 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: –

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/223651.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午1:43
下一篇 2026年3月17日 下午1:43


相关推荐

  • hibernate 检索方式[通俗易懂]

    hibernate 检索方式

    2022年1月29日
    60
  • 关于docker中执行docker命令的实践

    关于docker中执行docker命令的实践最近在制作给kubernetesjenkinsplugin调用的jenkinsslave(默认情况下,kubernetesjenkins插件使用的是jenkinsci/jnlp-slave)容器镜像,以供自动创建的pod使用。对这个镜像的需求是:希望在pod运行的容器内,执行docker命令,完成dockerbuild,push等一些操作,即dockerindocker。首先,需要在

    2022年5月13日
    45
  • 模块 BAPI

    模块 BAPIMM模块1、BAPI_MATERIAL_SAVEDATA创建物料主数据注意参数EXTENSIONIN的使用,可以创建自定义字段例如WA_BAPI_TE_MARA-MATERIAL=ITAB_UP-MATNR.T_EXTENSIONIN-STRUCTURE=’BAPI_TE_MARA’.T_EXTENSIONIN-VALUEPART1=WA_BAPI_TE_MARA.APPENDT…

    2022年7月24日
    9
  • java 对象转JSON字符串 $ref 错误「建议收藏」

    java 对象转JSON字符串 $ref 错误「建议收藏」顾名思义,这个是对象转Json时,发生的引用错误。比较简单的方法是:使用帮助方法https://blog.csdn.net/hanjun0612/article/details/77891569ConverHelper.getListCopy(entity2) …

    2026年2月7日
    6
  • Android常用加密方式

    Android常用加密方式加密解密简介加密技术是最常用的安全保密手段,利用技术手段把重要的数据变为乱码(加密)传送,到达目的地后再用相同或不同的手段还原(解密)。加密技术包括两个元素:算法和密钥。算法是将普通的信息或者可以理解的信息与一串数字(密钥)结合,产生不可理解的密文的步骤,密钥是用来对数据进行编码和解密的一种算法。在安全保密中,可通过适当的钥加密技术和管理机制来保证网络的信息通信安全。加迷解密分类分为不可逆和…

    2022年5月17日
    41
  • 反内卷神器!DeepSeek+即梦AI让设计师6点准时下班

    反内卷神器!DeepSeek+即梦AI让设计师6点准时下班

    2026年3月13日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号