| 
注册时间2010-5-1
阅读权限95
最后登录1970-1-1UID66309 超级版主    
 
 TA的每日心情|  | 开心 2019-3-25 14:18
 | 
|---|
 签到天数: 881 天 [LV.10]以坛为家III | 
 
| 本帖最后由 GeekCat 于 2015-8-23 15:07 编辑 
 【文章标题】: BigJig v8.25 简单算法分析 + 注册机源代码
 【文章作者】: geekcat【作者邮箱】:
 【作者主页】: 【软件名称】: BigJig v8.25
 【软件大小】:  【加壳方式】: 无 【保护方式】: 注册码【编写语言】: Borland Delphi
 【使用工具】: OD、PEID
 【操作平台】: XP SP3
 【下载地址】:百度 【软件介绍】:  【破解声明】:技术交流、学习,请不要用于商业用途! -------------------------------------------------------------------------------------------------------------------------------- 切入方式: 1、工具按键事件; 2、F12暂停法 算法代码: 复制代码[/align][align=left]004D43A8  |.  8903          mov dword ptr ds:[ebx],eax
004D43AA  |.  8D45 D8       lea eax,dword ptr ss:[ebp-0x28]          ;  (ASCII "CatPYG")
004D43AD  |>  8A10          /mov dl,byte ptr ds:[eax]                ;  依次取注册名的每一位
004D43AF  |.  80FA 41       |cmp dl,0x41                             ;  AS值跟41(‘A’)比较
004D43B2  |.  72 05         |jb short bigjig.004D43B9
004D43B4  |.  80FA 5A       |cmp dl,0x5A                             ;  AS值跟5A(‘Z’)比较
004D43B7  |.  76 07         |jbe short bigjig.004D43C0
004D43B9  |>  B3 01         |mov bl,0x1
004D43BB  |.  E9 C7010000   |jmp bigjig.004D4587
004D43C0  |>  FF03          |inc dword ptr ds:[ebx]
004D43C2  |.  40            |inc eax
004D43C3  |.  833B 06       |cmp dword ptr ds:[ebx],0x6
004D43C6  |.^ 75 E5         \jnz short bigjig.004D43AD               ;  循环要求:用户名大写字母
004D43C8  |.  33C0          xor eax,eax
004D43CA  |.  8A45 D8       mov al,byte ptr ss:[ebp-0x28]            ;  用户名第一位
004D43CD  |.  33D2          xor edx,edx
004D43CF  |.  8A55 D9       mov dl,byte ptr ss:[ebp-0x27]            ;  用户名第二位
004D43D2  |.  03C2          add eax,edx                              ;  注册名前两位AS值累加
004D43D4  |.  33D2          xor edx,edx
004D43D6  |.  8A55 DA       mov dl,byte ptr ss:[ebp-0x26]            ;  用户名第三位
004D43D9  |.  03C2          add eax,edx                              ;  注册名前三位AS值累加
004D43DB  |.  33D2          xor edx,edx
004D43DD  |.  8A55 DB       mov dl,byte ptr ss:[ebp-0x25]            ;  用户名第四位
004D43E0  |.  03C2          add eax,edx                              ;  注册名前四位AS值累加
004D43E2  |.  33D2          xor edx,edx
004D43E4  |.  8A55 DC       mov dl,byte ptr ss:[ebp-0x24]            ;  用户名第五位
004D43E7  |.  03C2          add eax,edx                              ;  注册名前五位AS值累加=0x181
004D43E9  |.  B9 05000000   mov ecx,0x5
004D43EE  |.  33D2          xor edx,edx
004D43F0  |.  F7F1          div ecx                                  ;  注册名前五位AS值累加除0x5=0x4D
004D43F2  |.  33D2          xor edx,edx
004D43F4  |.  8A55 DD       mov dl,byte ptr ss:[ebp-0x23]            ;   47 ('G') 注册名最后一位
004D43F7  |.  3BC2          cmp eax,edx                              ;  商跟注册名最后一位AS值比较
004D43F9  |.  74 07         je short bigjig.004D4402
004D43FB  |.  B3 01         mov bl,0x1
004D43FD  |.  E9 85010000   jmp bigjig.004D4587
004D4402  |>  B2 01         mov dl,0x1
004D4404  |.  33C0          xor eax,eax
004D4406  |.  8903          mov dword ptr ds:[ebx],eax
004D4408  |.  8D45 D8       lea eax,dword ptr ss:[ebp-0x28]          ;  (ASCII "CATPYG")
004D440B  |>  8B0D 34C55200 /mov ecx,dword ptr ds:[0x52C534]         ;  ASCII 44,"IKYUN"
004D4411  |.  8B33          |mov esi,dword ptr ds:[ebx]
004D4413  |.  0FB60C31      |movzx ecx,byte ptr ds:[ecx+esi]         ;  取第一段字符串每一位
004D4417  |.  49            |dec ecx                                 ;  AS值减1
004D4418  |.  0FB630        |movzx esi,byte ptr ds:[eax]             ;  注册名每一位
004D441B  |.  3BCE          |cmp ecx,esi
004D441D  |.  74 04         |je short bigjig.004D4423
004D441F  |.  33D2          |xor edx,edx
004D4421  |.  EB 08         |jmp short bigjig.004D442B
004D4423  |>  FF03          |inc dword ptr ds:[ebx]
004D4425  |.  40            |inc eax
004D4426  |.  833B 06       |cmp dword ptr ds:[ebx],0x6
004D4429  |.^ 75 E0         \jnz short bigjig.004D440B
004D442B  |>  84D2          test dl,dl
004D442D  |.  74 07         je short bigjig.004D4436
004D442F  |.  B3 01         mov bl,0x1
004D4431  |.  E9 51010000   jmp bigjig.004D4587
004D4436  |>  B2 01         mov dl,0x1
004D4438  |.  33C0          xor eax,eax
004D443A  |.  8903          mov dword ptr ds:[ebx],eax
004D443C  |.  8D45 D8       lea eax,dword ptr ss:[ebp-0x28]          ;  (ASCII "CATPYG")
004D443F  |>  8B0D 38C55200 /mov ecx,dword ptr ds:[0x52C538]         ;  (ASCII "EZMJFL")第二段字符串
004D4445  |.  8B33          |mov esi,dword ptr ds:[ebx]
004D4447  |.  0FB60C31      |movzx ecx,byte ptr ds:[ecx+esi]         ;  取第二段字符串每一位
004D444B  |.  49            |dec ecx
004D444C  |.  0FB630        |movzx esi,byte ptr ds:[eax]
004D444F  |.  3BCE          |cmp ecx,esi
004D4451  |.  74 04         |je short bigjig.004D4457
004D4453  |.  33D2          |xor edx,edx
004D4455  |.  EB 08         |jmp short bigjig.004D445F
004D4457  |>  FF03          |inc dword ptr ds:[ebx]
004D4459  |.  40            |inc eax
004D445A  |.  833B 06       |cmp dword ptr ds:[ebx],0x6
004D445D  |.^ 75 E0         \jnz short bigjig.004D443F
004D445F  |>  84D2          test dl,dl
004D4461  |.  74 07         je short bigjig.004D446A
004D4463  |.  B3 01         mov bl,0x1
004D4465  |.  E9 1D010000   jmp bigjig.004D4587
004D446A  |>  B2 01         mov dl,0x1
004D446C  |.  33C0          xor eax,eax
004D446E  |.  8903          mov dword ptr ds:[ebx],eax
004D4470  |.  8D45 D8       lea eax,dword ptr ss:[ebp-0x28]          ;  (ASCII "CATPYG")
004D4473  |>  8B0D 3CC55200 /mov ecx,dword ptr ds:[0x52C53C]         ;  (ASCII "GMNWCL")第三段字符串
004D4479  |.  8B33          |mov esi,dword ptr ds:[ebx]
004D447B  |.  0FB60C31      |movzx ecx,byte ptr ds:[ecx+esi]         ;  取第三段字符串每一位
004D447F  |.  49            |dec ecx
004D4480  |.  0FB630        |movzx esi,byte ptr ds:[eax]
004D4483  |.  3BCE          |cmp ecx,esi
004D4485  |.  74 04         |je short bigjig.004D448B
004D4487  |.  33D2          |xor edx,edx
004D4489  |.  EB 08         |jmp short bigjig.004D4493
004D448B  |>  FF03          |inc dword ptr ds:[ebx]
004D448D  |.  40            |inc eax
004D448E  |.  833B 06       |cmp dword ptr ds:[ebx],0x6
004D4491  |.^ 75 E0         \jnz short bigjig.004D4473
004D4493  |>  84D2          test dl,dl
004D4495  |.  74 07         je short bigjig.004D449E
004D4497  |.  B3 01         mov bl,0x1
004D4499  |.  E9 E9000000   jmp bigjig.004D4587
004D449E  |>  8B45 F0       mov eax,dword ptr ss:[ebp-0x10]          ;  (ASCII "1234567890qwertyuiop")
004D44A1  |.  E8 4E0BF3FF   call bigjig.00404FF4                     ;  计算注册码长度
004D44A6  |.  83F8 0B       cmp eax,0xB                              ;  注册码要是11位
004D44A9  |.  74 07         je short bigjig.004D44B2
004D44AB  |.  B3 01         mov bl,0x1
004D44AD  |.  E9 D5000000   jmp bigjig.004D4587
004D44B2  |>  8D45 EC       lea eax,dword ptr ss:[ebp-0x14]
004D44B5  |.  50            push eax
004D44B6  |.  B9 04000000   mov ecx,0x4                              ;  取的长度为4位
004D44BB  |.  BA 01000000   mov edx,0x1                              ;  从第一位开始取
004D44C0  |.  8B45 F0       mov eax,dword ptr ss:[ebp-0x10]          ;  (ASCII "1234567890q")
004D44C3  |.  E8 8C0DF3FF   call bigjig.00405254                     ;  在注册码中取1-4位  ASCII "1234"
004D44C8  |.  BA BC454D00   mov edx,bigjig.004D45BC
004D44CD  |.  8B45 EC       mov eax,dword ptr ss:[ebp-0x14]          ;  (ASCII "1234")
004D44D0  |.  E8 6B52F3FF   call bigjig.00409740                     ;  注册码前4位为:“BJ4-”
004D44D5  |.  85C0          test eax,eax                             ;  eax=0才行
004D44D7  |.  74 07         je short bigjig.004D44E0
004D44D9  |.  B3 01         mov bl,0x1
004D44DB  |.  E9 A7000000   jmp bigjig.004D4587
004D44E0  |>  8D45 EC       lea eax,dword ptr ss:[ebp-0x14]
004D44E3  |.  50            push eax
004D44E4  |.  B9 01000000   mov ecx,0x1                              ;  取1位
004D44E9  |.  BA 08000000   mov edx,0x8                              ;  第8位
004D44EE  |.  8B45 F0       mov eax,dword ptr ss:[ebp-0x10]          ;  (ASCII "1234567890q")
004D44F1  |.  E8 5E0DF3FF   call bigjig.00405254                     ;  第8位要是"-"
004D44F6  |.  BA CC454D00   mov edx,bigjig.004D45CC                  ;  UNICODE "-"
004D44FB  |.  8B45 EC       mov eax,dword ptr ss:[ebp-0x14]
004D44FE  |.  E8 3D52F3FF   call bigjig.00409740                     ;  注册码第8位跟"-"比较,要求第8位为"-"
004D4503  |.  85C0          test eax,eax
004D4505  |.  74 04         je short bigjig.004D450B
004D4507  |.  B3 01         mov bl,0x1
004D4509  |.  EB 7C         jmp short bigjig.004D4587
004D450B  |>  8D45 EC       lea eax,dword ptr ss:[ebp-0x14]
004D450E  |.  50            push eax
004D450F  |.  B9 03000000   mov ecx,0x3
004D4514  |.  BA 05000000   mov edx,0x5
004D4519  |.  8B45 F0       mov eax,dword ptr ss:[ebp-0x10]          ;  (ASCII "1234567890q")
004D451C  |.  E8 330DF3FF   call bigjig.00405254                     ;  从注册码第5位开始取,取3位(ASCII "567")
004D4521  |.  8BD3          mov edx,ebx
004D4523  |.  8B45 EC       mov eax,dword ptr ss:[ebp-0x14]          ;  (ASCII "567")
004D4526  |.  E8 51F2F2FF   call bigjig.0040377C                     ;  取得的三位字符10进制转16进制 ,字母不参加运算
004D452B  |.  8BF0          mov esi,eax                              ;  注册eax值
004D452D  |.  8D45 EC       lea eax,dword ptr ss:[ebp-0x14]          ;  (ASCII "567")
004D4530  |.  50            push eax
004D4531  |.  B9 03000000   mov ecx,0x3
004D4536  |.  BA 09000000   mov edx,0x9
004D453B  |.  8B45 F0       mov eax,dword ptr ss:[ebp-0x10]          ;  (ASCII "1234567890q")
004D453E  |.  E8 110DF3FF   call bigjig.00405254                     ;  从注册码第9位开始取,取3位(ASCII "90q")
004D4543  |.  8BD3          mov edx,ebx
004D4545  |.  8B45 EC       mov eax,dword ptr ss:[ebp-0x14]          ;  (ASCII "90q")
004D4548  |.  E8 2FF2F2FF   call bigjig.0040377C                     ;  取得的三位字符10进制转16进制 ,字母不参加运算
004D454D  |.  8BD6          mov edx,esi                              ;  5-7位转10进制成功的入edx
004D454F  |.  D1FA          sar edx,1
004D4551  |.  79 03         jns short bigjig.004D4556
004D4553  |.  83D2 00       adc edx,0x0
004D4556  |>  52            push edx
004D4557  |.  BA 84030000   mov edx,0x384
004D455C  |.  59            pop ecx
004D455D  |.  2BD1          sub edx,ecx                              ;  0x384减去(5-7位转16进制并除2)
004D455F  |.  33C9          xor ecx,ecx
004D4561  |.  8A4D D8       mov cl,byte ptr ss:[ebp-0x28]            ;  注册名第一位AS值
004D4564  |.  03D1          add edx,ecx                              ;  注册名第一位AS值加上(减的结果)
004D4566  |.  33C9          xor ecx,ecx
004D4568  |.  8A4D DD       mov cl,byte ptr ss:[ebp-0x23]            ;  注册名最后一位AS值
004D456B  |.  8D0C49        lea ecx,dword ptr ds:[ecx+ecx*2]         ;  3*ecx=3*注册名最后一位的AS值
004D456E  |.  2BD1          sub edx,ecx                              ;  (注册名第一位AS值加上(减的结果))-3*ecx
004D4570  |.  83FE 64       cmp esi,0x64                             ;  注册码5-7位转10进制要大于0x64=100比较
004D4573  |.  7C 0C         jl short bigjig.004D4581
004D4575  |.  81FE E7030000 cmp esi,0x3E7                            ;  注册码5-7位转10进制要小于0x3E7=999比较
004D457B  |.  7F 04         jg short bigjig.004D4581
004D457D  |.  3BC2          cmp eax,edx                              ;  eax(注册码最后三位10转16)跟(注册名第一位AS值加上(减的结果))-3*ecx相等
004D457F  |.  74 04         je short bigjig.004D4585
004D4581  |>  B3 01         mov bl,0x1
004D4583  |.  EB 02         jmp short bigjig.004D4587
004D4585  |>  33DB          xor ebx,ebx
004D4587  |>  33C0          xor eax,eax
004D4589  |.  5A            pop edx
004D458A  |.  59            pop ecx
004D458B  |.  59            pop ecx
004D458C  |.  64:8910       mov dword ptr fs:[eax],edx
004D458F  |.  68 A9454D00   push bigjig.004D45A9
004D4594  |>  8D45 EC       lea eax,dword ptr ss:[ebp-0x14]
004D4597  |.  BA 05000000   mov edx,0x5
004D459C  |.  E8 B707F3FF   call bigjig.00404D58
004D45A1  \.  C3            retn[/align][align=left]
    | 
 评分
查看全部评分
 |