BigJig v8.25 算法分析 + 注册机源代码
本帖最后由 GeekCat 于 2015-8-23 15:07 编辑【文章标题】: BigJig v8.25 简单算法分析 + 注册机源代码 【文章作者】: geekcat
【作者邮箱】: 【作者主页】:
【软件名称】: BigJig v8.25 【软件大小】: 【加壳方式】: 无【保护方式】: 注册码
【编写语言】: Borland Delphi
【使用工具】: OD、PEID
【操作平台】: XP SP3【下载地址】:百度【软件介绍】: 【破解声明】:技术交流、学习,请不要用于商业用途!--------------------------------------------------------------------------------------------------------------------------------
切入方式:1、工具按键事件;2、F12暂停法
算法代码:004D43A8|.8903 mov dword ptr ds:,eax
004D43AA|.8D45 D8 lea eax,dword ptr ss: ;(ASCII "CatPYG")
004D43AD|>8A10 /mov dl,byte ptr ds: ;依次取注册名的每一位
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:
004D43C2|.40 |inc eax
004D43C3|.833B 06 |cmp dword ptr ds:,0x6
004D43C6|.^ 75 E5 \jnz short bigjig.004D43AD ;循环要求:用户名大写字母
004D43C8|.33C0 xor eax,eax
004D43CA|.8A45 D8 mov al,byte ptr ss: ;用户名第一位
004D43CD|.33D2 xor edx,edx
004D43CF|.8A55 D9 mov dl,byte ptr ss: ;用户名第二位
004D43D2|.03C2 add eax,edx ;注册名前两位AS值累加
004D43D4|.33D2 xor edx,edx
004D43D6|.8A55 DA mov dl,byte ptr ss: ;用户名第三位
004D43D9|.03C2 add eax,edx ;注册名前三位AS值累加
004D43DB|.33D2 xor edx,edx
004D43DD|.8A55 DB mov dl,byte ptr ss: ;用户名第四位
004D43E0|.03C2 add eax,edx ;注册名前四位AS值累加
004D43E2|.33D2 xor edx,edx
004D43E4|.8A55 DC mov dl,byte ptr ss: ;用户名第五位
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: ; 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:,eax
004D4408|.8D45 D8 lea eax,dword ptr ss: ;(ASCII "CATPYG")
004D440B|>8B0D 34C55200 /mov ecx,dword ptr ds: ;ASCII 44,"IKYUN"
004D4411|.8B33 |mov esi,dword ptr ds:
004D4413|.0FB60C31 |movzx ecx,byte ptr ds: ;取第一段字符串每一位
004D4417|.49 |dec ecx ;AS值减1
004D4418|.0FB630 |movzx esi,byte ptr ds: ;注册名每一位
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:
004D4425|.40 |inc eax
004D4426|.833B 06 |cmp dword ptr ds:,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:,eax
004D443C|.8D45 D8 lea eax,dword ptr ss: ;(ASCII "CATPYG")
004D443F|>8B0D 38C55200 /mov ecx,dword ptr ds: ;(ASCII "EZMJFL")第二段字符串
004D4445|.8B33 |mov esi,dword ptr ds:
004D4447|.0FB60C31 |movzx ecx,byte ptr ds: ;取第二段字符串每一位
004D444B|.49 |dec ecx
004D444C|.0FB630 |movzx esi,byte ptr ds:
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:
004D4459|.40 |inc eax
004D445A|.833B 06 |cmp dword ptr ds:,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:,eax
004D4470|.8D45 D8 lea eax,dword ptr ss: ;(ASCII "CATPYG")
004D4473|>8B0D 3CC55200 /mov ecx,dword ptr ds: ;(ASCII "GMNWCL")第三段字符串
004D4479|.8B33 |mov esi,dword ptr ds:
004D447B|.0FB60C31 |movzx ecx,byte ptr ds: ;取第三段字符串每一位
004D447F|.49 |dec ecx
004D4480|.0FB630 |movzx esi,byte ptr ds:
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:
004D448D|.40 |inc eax
004D448E|.833B 06 |cmp dword ptr ds:,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: ;(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:
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: ;(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: ;(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:
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: ;(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:
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:
004D450E|.50 push eax
004D450F|.B9 03000000 mov ecx,0x3
004D4514|.BA 05000000 mov edx,0x5
004D4519|.8B45 F0 mov eax,dword ptr ss: ;(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: ;(ASCII "567")
004D4526|.E8 51F2F2FF call bigjig.0040377C ;取得的三位字符10进制转16进制 ,字母不参加运算
004D452B|.8BF0 mov esi,eax ;注册eax值
004D452D|.8D45 EC lea eax,dword ptr ss: ;(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: ;(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: ;(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: ;注册名第一位AS值
004D4564|.03D1 add edx,ecx ;注册名第一位AS值加上(减的结果)
004D4566|.33C9 xor ecx,ecx
004D4568|.8A4D DD mov cl,byte ptr ss: ;注册名最后一位AS值
004D456B|.8D0C49 lea ecx,dword ptr ds: ;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:,edx
004D458F|.68 A9454D00 push bigjig.004D45A9
004D4594|>8D45 EC lea eax,dword ptr ss:
004D4597|.BA 05000000 mov edx,0x5
004D459C|.E8 B707F3FF call bigjig.00404D58
004D45A1\.C3 retn
坐着沙发前排学习! 来支持版主的算法分析。 下载地址百度,哈哈 大神,收我为徒吧 大神,收我为徒吧 好用吗?!!! 晕了,这个!!! 下载看看看! 最近很高产啊!!