欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

注册HyperSnap-DX ver. 3.63.01算法 (10千字)

注册HyperSnap-DX ver. 3.63.01算法 (10千字)

注册HyperSnap-DX ver. 3.63.01算法
软件名称:HyperSnap-DX ver. 3.63.01
软件主页:http://www.hyperionics.com
主要功能:好像是抓图用的
主要目的:寻找自己的注册码
破解难度:中等难度(算码部分稍微复杂了一点)
    不说废话了,直接进入正题。输入大名zombieys和注册码1212-1212-1212-1212-1212-1212(为什么不填78?我的内存里到处都是78,找不到啦,所以换换),下s 30:0 l ffffffff '1212',bpm搜到的地址。点注册,按几次f12和f10来到这里:

算NAME的CALL
:004096DB 55                      push ebp
:004096DC 8BEC                    mov ebp, esp
:004096DE 81EC04010000            sub esp, 00000104
:004096E4 8B4D08                  mov ecx, dword ptr [ebp+08]
:004096E7 33D2                    xor edx, edx
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00409705(U)
|
:004096E9 8A01                    mov al, byte ptr [ecx]                //读取输入的注册码
:004096EB 84C0                    test al, al                            //在A-Z之间才要
:004096ED 7418                    je 00409707
:004096EF 3C41                    cmp al, 41                            //过滤掉-(2dhex)
:004096F1 7C0F                    jl 00409702
:004096F3 8A01                    mov al, byte ptr [ecx]
:004096F5 3C5A                    cmp al, 5A
:004096F7 7F09                    jg 00409702
:004096F9 888415FCFEFFFF          mov byte ptr [ebp+edx-00000104], al    //将过滤后掉-后的24个注册码->[ebp+edx-00000104]
:00409700 EB01                    jmp 00409703
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:004096F1(C), :004096F7(C)
|
:00409702 4A                      dec edx
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00409700(U)
|
:00409703 41                      inc ecx
:00409704 42                      inc edx
:00409705 EBE2                    jmp 004096E9
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004096ED(C)
|
:00409707 80A415FCFEFFFF00        and byte ptr [ebp+edx-00000104], 00
:0040970F 53                      push ebx
:00409710 56                      push esi
:00409711 8D85FCFEFFFF            lea eax, dword ptr [ebp+FFFFFEFC]
:00409717 57                      push edi
:00409718 50                      push eax
:00409719 E812A20200              call 00433930
:0040971E 8BD0                    mov edx, eax
:00409720 59                      pop ecx
:00409721 81FA80000000            cmp edx, 00000080
:00409727 8955FC                  mov dword ptr [ebp-04], edx
:0040972A 0F8DC5000000            jnl 004097F5
:00409730 A170504800              mov eax, dword ptr [00485070]
:00409735 3BD0                    cmp edx, eax
:00409737 0F8EB8000000            jle 004097F5
:0040973D 0FBEB405FBFEFFFF        movsx esi, byte ptr [ebp+eax-00000105]  //取注册码第5位
:00409745 83EE41                  sub esi, 00000041                      //让后-A(41HEX)->ESI
:00409748 33FF                    xor edi, edi
:0040974A 33C9                    xor ecx, ecx
:0040974C 893578304900            mov dword ptr [00493078], esi
:00409752 85D2                    test edx, edx
:00409754 894D08                  mov dword ptr [ebp+08], ecx
:00409757 7E5D                    jle 004097B6
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004097B4(C)
|
:00409759 80BC0DFCFEFFFF41        cmp byte ptr [ebp+ecx-00000104], 41    //注册码要在A-Z之间
:00409761 8D9C0DFCFEFFFF          lea ebx, dword ptr [ebp+ecx-00000104]
:00409768 0F8C87000000            jl 004097F5
:0040976E 80BC3DFCFEFFFF5A        cmp byte ptr [ebp+edi-00000104], 5A
:00409776 7F7D                    jg 004097F5
:00409778 8D50FF                  lea edx, dword ptr [eax-01]
:0040977B 3BCA                    cmp ecx, edx                            //是第5位的话不计算
:0040977D 7503                    jne 00409782
:0040977F 4F                      dec edi
:00409780 EB2A                    jmp 004097AC
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040977D(C)
|
:00409782 0FBE03                  movsx eax, byte ptr [ebx]              //取注册码
:00409785 50                      push eax
:00409786 E8C5000000              call 00409850                          //根据密码表算位数
:0040978B 2BC6                    sub eax, esi                            //减去上个字母ASCII值与41的差->EAX
:0040978D 59                      pop ecx
:0040978E 0FBE33                  movsx esi, byte ptr [ebx]              //当前字母ASCII值->ESI
:00409791 48                      dec eax
:00409792 83EE41                  sub esi, 00000041
:00409795 85C0                    test eax, eax                          //小于0的话+1A
:00409797 7D03                    jge 0040979C
:00409799 83C01A                  add eax, 0000001A
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00409797(C)
|
:0040979C 8B4D08                  mov ecx, dword ptr [ebp+08]
:0040979F 0441                    add al, 41                              //AL+41->AL
:004097A1 88877C304900            mov byte ptr [edi+0049307C], al        //把结果->[EDI+49307C]
:004097A7 A170504800              mov eax, dword ptr [00485070]
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00409780(U)
|
:004097AC 47                      inc edi
:004097AD 41                      inc ecx
:004097AE 3B4DFC                  cmp ecx, dword ptr [ebp-04]
:004097B1 894D08                  mov dword ptr [ebp+08], ecx
:004097B4 7CA3                    jl 00409759                            //接着计算
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00409757(C)
|
:004097B6 0FBEB77B304900          movsx esi, byte ptr [edi+0049307B]
:004097BD 83057830490041          add dword ptr [00493078], 00000041
:004097C4 80A77B30490000          and byte ptr [edi+0049307B], 00
:004097CB 8D877B304900            lea eax, dword ptr [edi+0049307B]      //算得结果的最后一位->EAX
:004097D1 BF7C304900              mov edi, 0049307C
:004097D6 57                      push edi
:004097D7 83EE41                  sub esi, 00000041                      //算得结果的最后一位ASCII值-41->ESI
:004097DA E81D000000              call 004097FC
:004097DF 3BF0                    cmp esi, eax                            //算完后要和EAX值相同
:004097E1 59                      pop ecx
:004097E2 7511                    jne 004097F5                            //不同就死了
:004097E4 0FBE057C304900          movsx eax, byte ptr [0049307C]
:004097EB 310578304900            xor dword ptr [00493078], eax
:004097F1 8BC7                    mov eax, edi
:004097F3 EB02                    jmp 004097F7
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0040972A(C), :00409737(C), :00409768(C), :00409776(C), :004097E2(C)
|
:004097F5 33C0                    xor eax, eax
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004097F3(U)
|
:004097F7 5F                      pop edi
:004097F8 5E                      pop esi
:004097F9 5B                      pop ebx
:004097FA C9                      leave
:004097FB C3                      ret
.
.
.
:004348F0 8B542404                mov edx, dword ptr [esp+04]          //用你的名字算的数的地址->EDX
:004348F4 8B4C2408                mov ecx, dword ptr [esp+08]          //用注册码算的名字的地址->ECX
:004348F8 F7C203000000            test edx, 00000003
:004348FE 753C                    jne 0043493C
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0043492C(C), :00434956(C), :00434972(U)
|
:00434900 8B02                    mov eax, dword ptr [edx]              //以下是计算相不相同
:00434902 3A01                    cmp al, byte ptr [ecx]
:00434904 752E                    jne 00434934
:00434906 0AC0                    or al, al
:00434908 7426                    je 00434930
:0043490A 3A6101                  cmp ah, byte ptr [ecx+01]
:0043490D 7525                    jne 00434934
:0043490F 0AE4                    or ah, ah
:00434911 741D                    je 00434930
:00434913 C1E810                  shr eax, 10
:00434916 3A4102                  cmp al, byte ptr [ecx+02]
:00434919 7519                    jne 00434934
:0043491B 0AC0                    or al, al
:0043491D 7411                    je 00434930
:0043491F 3A6103                  cmp ah, byte ptr [ecx+03]
:00434922 7510                    jne 00434934
:00434924 83C104                  add ecx, 00000004
:00434927 83C204                  add edx, 00000004
:0043492A 0AE4                    or ah, ah
:0043492C 75D2                    jne 00434900
:0043492E 8BFF                    mov edi, edi                        //要都相同才行
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00434908(C), :00434911(C), :0043491D(C), :0043494E(C), :00434964(C)
|:0043496D(C)
|
:00434930 33C0                    xor eax, eax
:00434932 C3                      ret

计算方法:
第几位:1 2 3 4 5 6 7 8 9 A B C D E F 10 11 12 13 14 15 16 17 18 19 1A
密码表:X C F N A K S H I P Z U J L D O  R  G  V  Q  T  E  W  Y  B  M
ASCII :514B4650574C444E465659484A494346 54 53 54 46 5A 42 54 45
与41差:10A 5 F 16B 3 D 5 15187 9 8 2 F  13 12 13 5  19 1  13
注册码:Q K F P W L D N F V Y H J I C F  T  S  T  F  Z  B  T  E
生成码:W O R D  X C Z O M B I E Y S Z  O  M  B  I  E  Y  S  B
        |___________|
              |
    无限制的世界范围授权    //前6位跟授权方式有关,也可能只有第5位有关是W才行
你的名字的生成码:    Z O M B I E Y S Z  O  M  B  I  E  Y  S  B

计算公式:(注册码在密码表中的位置-1)-(上一位注册码ASCII值-41)-1+41=生成码
注:当生成码小于41时要+1A
当你输入NAME后你可以得到生成码的第7-22位,因为是无限制的世界范围授权所以前6位固定,而最后一位可以由从4097B6的计算确定所以很容易等到生成码,然后反推注册码。
这个玩艺确实不太好表达,自己跟踪一下就知道了。我的表达能力差,还可能有笔误,原谅我 哈哈.......
完活:)

这是我算的注册码:
名称:zombieys
授权类型:无限制的世界范围授权
代码:QKFP-WLDN-FVYH-JICF-TSTF-ZBTE


———————————————————————————————>
                .-"      "-.      Cracked by zombieys      >
                /      \      My oicq is 1789655        >
              |              |    My hp is zombieys.yeah.net>
              |,  .-.  .-.  ,|    My hp is zombieys.126.com >
                |)(__/  \__)(|                                >
                |/    /\    \|      Thanks for your supports  >
      (@_@)    (_    ^^    _)                                >
    _  )\_______\__|IIIIII|__/_____                          >
_)@8@8{}<________|-\IIIIII/-|____zombieys_____________________>

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功