【文章标题】: ************开奖号码密码算法过程(揭穿骗术最后的面纱)
【文章作者】: newsoft88
【作者邮箱】: newsoft88@126.com
【作者主页】: http://newsoft88.ys168.com
【软件名称】: ************软件(骗子软件)
【软件大小】: 1.08M
【下载地址】: http://www.449449.com/gd.htm
【加壳方式】: 无壳
【保护方式】: 算法变换
【编写语言】: DEPLI
【使用工具】: OD,DEDE,VB
【操作平台】: WINXPSP2
【软件介绍】: 这是个著名的骗子软件,说什么六合彩的特码是提前设定,以骗取彩民钱财!
【作者声明】: 只是做技术研究,提醒网友,揭穿骗术,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
这是个著名的骗子软件,说什么六合彩的特码是提前设好的,并不是每期开的。而且还说搞了个数据库软件,就是我们现在要解的,每期的特码就放在其中,关键是要看的密码!并且还说已经开出的可以验证!
而不少人上当的也在这,以前我就怀疑这是不可能,而有可能的是:他每期根据需要可以算出任意特码,才好证明已经开出的号码的可以验证!但我也一直没有去求证;正好有个心急的朋友,要我帮他看一下,搞个特码让他也中中奖!在许多说明不起效的情况下,我只好去写注册机!否则没有说服力了!
骗子软件的地址: http://www.449449.com/gd.htm 有兴趣的朋友可以研究一下!
闲活少说,我们开始:
程序没有壳,也方便了许多,使用OD载入,停在这里:
0049622C q> $ 55 push ebp
0049622D . 8BEC mov ebp,esp
0049622F . 83C4 F0 add esp,-10
00496232 . 53 push ebx
00496233 . B8 945F4900 mov eax,q3721.00495F94
00496238 . E8 DBFEF6FF call q3721.00406118
0049623D . 8B1D 648C4900 mov ebx,dword ptr ds:[498C64] ; q3721.00499BEC
00496243 . 8B03 mov eax,dword ptr ds:[ebx]
00496245 . E8 AAF1FCFF call q3721.004653F4
直接运行,搜搜字符串,得到密码不正确的地方:
0049462D . E8 521EFAFF call q3721.00436484
00494632 . 83BB 24030000 0>cmp dword ptr ds:[ebx+324],1
00494639 . 7D 17 jge short q3721.00494652
0049463B . 6A 00 push 0 ; /Arg1 = 00000000
0049463D . 66:8B0D 7046490>mov cx,word ptr ds:[494670] ; |
00494644 . B2 02 mov dl,2 ; |
00494646 . B8 7C464900 mov eax,q3721.0049467C ; |// 密码不正确!
0049464B . E8 BC8DF9FF call q3721.0042D40C ; \q3721.0042D40C
00494650 . 5B pop ebx
00494651 . C3 retn
跟进这个call q3721.00436484我们得不到什么 ,我们再看字符信息,:有用的来了:密码位数不够 !
看来这个地方才是我们最有效的入口:
最简单的方法,我们先动态跟一下,走一下大致流程,知道程序的走向,再动手就事半功倍了!
00494798 /. 55 push ebp
00494799 |. 8BEC mov ebp,esp
0049479B |. 33C9 xor ecx,ecx
0049479D |. 51 push ecx
0049479E |. 51 push ecx
0049479F |. 51 push ecx
004947A0 |. 51 push ecx
004947A1 |. 53 push ebx
004947A2 |. 8BD8 mov ebx,eax
004947A4 |. 33C0 xor eax,eax
004947A6 |. 55 push ebp
004947A7 |. 68 BD484900 push q3721.004948BD
004947AC |. 64:FF30 push dword ptr fs:[eax]
004947AF |. 64:8920 mov dword ptr fs:[eax],esp
004947B2 |. 8D55 FC lea edx,dword ptr ss:[ebp-4]
004947B5 |. 8B83 1C030000 mov eax,dword ptr ds:[ebx+31C]
004947BB |. E8 A00FFBFF call q3721.00445760
004947C0 |. 8B45 FC mov eax,dword ptr ss:[ebp-4]
我们在此下断!下面是确定按扭的必经之路了!
004947C3 |. E8 78FBF6FF call q3721.00404340
004947C8 |. 83F8 0B cmp eax,0B
上面是比较密码长度: 0B = 11 也就是密码长度是 11位,不对就提示了!
004947CB |. 7D 1A jge short q3721.004947E7
004947CD |. 6A 00 push 0 ; /Arg1 = 00000000
004947CF |. 66:8B0D CC48490>mov cx,word ptr ds:[4948CC] ; |
004947D6 |. B2 02 mov dl,2 ; |
004947D8 |. B8 D8484900 mov eax,q3721.004948D8 ; |密码位数不正确!
004947DD |. E8 2A8CF9FF call q3721.0042D40C ; \q3721.0042D40C
004947E2 |. E9 AB000000 jmp q3721.00494892
长度符合后走到这里, 我们F8继续下行:
004947E7 |> 8D55 F4 lea edx,dword ptr ss:[ebp-C]
004947EA |. 8B83 18030000 mov eax,dword ptr ds:[ebx+318]
004947F0 |. E8 6B0FFBFF call q3721.00445760
004947F5 |. 8B45 F4 mov eax,dword ptr ss:[ebp-C]
004947F8 |. E8 5B3EF7FF call q3721.00408658
004947FD |. 8D4D F8 lea ecx,dword ptr ss:[ebp-8]
00494800 |. BA 03000000 mov edx,3
00494805 |. E8 BAC3FEFF call q3721.00480BC4
0049480A |. 8B55 F8 mov edx,dword ptr ss:[ebp-8]
0049480D |. 8D83 28030000 lea eax,dword ptr ds:[ebx+328]
00494813 |. E8 BCF8F6FF call q3721.004040D4
00494818 |. 8D83 2C030000 lea eax,dword ptr ds:[ebx+32C]
0049481E |. E8 5DF8F6FF call q3721.00404080
00494823 |. 8D83 30030000 lea eax,dword ptr ds:[ebx+330]
00494829 |. E8 52F8F6FF call q3721.00404080
0049482E |. 8D83 2C030000 lea eax,dword ptr ds:[ebx+32C]
00494834 |. 50 push eax
00494835 |. 8D83 30030000 lea eax,dword ptr ds:[ebx+330]
0049483B |. 50 push eax
0049483C |. 8D55 F0 lea edx,dword ptr ss:[ebp-10]
0049483F |. 8B83 1C030000 mov eax,dword ptr ds:[ebx+31C]
00494845 |. E8 160FFBFF call q3721.00445760
0049484A |. 8B45 F0 mov eax,dword ptr ss:[ebp-10]
0049484D |. 8D8B 28030000 lea ecx,dword ptr ds:[ebx+328]
00494853 |. 8B15 68894900 mov edx,dword ptr ds:[498968] ; q3721.00499CD8
00494859 |. 8A12 mov dl,byte ptr ds:[edx]
下面是重点了,我们已经到了雷区:看标志就知道:非 0 刚置 1 ,否则就置 0 标志, 这是注册上常用的手法!
0049485B |. E8 ECBEFEFF call q3721.0048074C //这个CALL我们要跟,他里面的东东肯定是我们要的!
00494860 |. 84C0 test al,al
00494862 |. 75 0A jnz short q3721.0049486E
00494864 |. 33C0 xor eax,eax
00494866 |. 8983 24030000 mov dword ptr ds:[ebx+324],eax
0049486C |. EB 0A jmp short q3721.00494878 //跳向密码错误!
0049486E |> C783 24030000 0>mov dword ptr ds:[ebx+324],1 //下面是正确的流程!
00494878 |> B2 01 mov dl,1
0049487A |. 8B83 20030000 mov eax,dword ptr ds:[ebx+320]
00494880 |. E8 FB0DFBFF call q3721.00445680
00494885 |. B2 01 mov dl,1
00494887 |. 8B83 00030000 mov eax,dword ptr ds:[ebx+300]
0049488D |. E8 E2AEF9FF call q3721.0042F774
00494892 |> 33C0 xor eax,eax
00494894 |. 5A pop edx
00494895 |. 59 pop ecx
00494896 |. 59 pop ecx
00494897 |. 64:8910 mov dword ptr fs:[eax],edx
0049489A |. 68 C4484900 push q3721.004948C4
0049489F |> 8D45 F0 lea eax,dword ptr ss:[ebp-10]
004948A2 |. BA 02000000 mov edx,2
004948A7 |. E8 F8F7F6FF call q3721.004040A4
004948AC |. 8D45 F8 lea eax,dword ptr ss:[ebp-8]
004948AF |. E8 CCF7F6FF call q3721.00404080
004948B4 |. 8D45 FC lea eax,dword ptr ss:[ebp-4]
004948B7 |. E8 C4F7F6FF call q3721.00404080
004948BC \. C3 retn
我们跟进这个0049485B call q3721.0048074C ,如下:
0048078D . 8D55 F4 lea edx,dword ptr ss:[ebp-C]
00480790 . 8B45 FC mov eax,dword ptr ss:[ebp-4]
00480793 . E8 90F9FFFF call q3721.00480128
00480798 . 84C0 test al,al
0048079A . 0F84 E1030000 je q3721.00480B81
到这里,我们要注意了: call q3721.00480128 是整个计算的核心流程,他所谓的算码就在里面,而这个TEST就是检查你的密码是否符合要求,这个个地方检查正确,就出码了,
而后面的所谓进度条慢慢跑,那就是骗骗老百姓的了!算码CALL就在这里,时间只要几豪秒!我们继续进入这个CALL,揭开他的最后面纱!
00480128 /$ 55 push ebp
00480129 |. 8BEC mov ebp,esp
0048012B |. 83C4 D0 add esp,-30
0048012E |. 53 push ebx
0048012F |. 56 push esi
00480130 |. 57 push edi
00480131 |. 33C9 xor ecx,ecx
00480133 |. 894D D0 mov dword ptr ss:[ebp-30],ecx
00480136 |. 894D D4 mov dword ptr ss:[ebp-2C],ecx
00480139 |. 894D D8 mov dword ptr ss:[ebp-28],ecx
0048013C |. 894D DC mov dword ptr ss:[ebp-24],ecx
0048013F |. 894D E0 mov dword ptr ss:[ebp-20],ecx
00480142 |. 8955 F8 mov dword ptr ss:[ebp-8],edx
00480145 |. 8945 FC mov dword ptr ss:[ebp-4],eax
00480148 |. 8B45 FC mov eax,dword ptr ss:[ebp-4]
0048014B |. E8 E043F8FF call q3721.00404530
00480150 |. 33C0 xor eax,eax
00480152 |. 55 push ebp
00480153 |. 68 42034800 push q3721.00480342
00480158 |. 64:FF30 push dword ptr fs:[eax]
0048015B |. 64:8920 mov dword ptr fs:[eax],esp
0048015E |. C645 F7 00 mov byte ptr ss:[ebp-9],0
00480162 |. 8B45 FC mov eax,dword ptr ss:[ebp-4]
00480165 |. E8 D641F8FF call q3721.00404340
0048016A |. 83F8 0B cmp eax,0B //密码长度检查
0048016D |. 0F85 AC010000 jnz q3721.0048031F //上面的例行检查结束后,进入下面的算法流程
00480173 |. BB 01000000 mov ebx,1 ; 算法开始
00480178 |. 8D45 E5 lea eax,dword ptr ss:[ebp-1B]
0048017B |> 8B55 FC /mov edx,dword ptr ss:[ebp-4]
0048017E |. 8A541A FF |mov dl,byte ptr ds:[edx+ebx-1] //读出字符
00480182 |. 8810 |mov byte ptr ds:[eax],dl //存入字符
00480184 |. 43 |inc ebx
00480185 |. 40 |inc eax
00480186 |. 83FB 0C |cmp ebx,0C
00480189 |.^ 75 F0 \jnz short q3721.0048017B
上面的流程作用: 把我们输入的密码送入某个地址中保存,以备下面计算时使用!
0048018B |. 8D45 E0 lea eax,dword ptr ss:[ebp-20]
0048018E |. 8A55 EF mov dl,byte ptr ss:[ebp-11]
00480191 |. E8 D240F8FF call q3721.00404268
00480196 |. 8B45 E0 mov eax,dword ptr ss:[ebp-20]
00480199 |. E8 BA84F8FF call q3721.00408658
0048019E |. 50 push eax
0048019F |. 8D45 DC lea eax,dword ptr ss:[ebp-24]
004801A2 |. 8A55 E5 mov dl,byte ptr ss:[ebp-1B]
004801A5 |. E8 BE40F8FF call q3721.00404268
004801AA |. 8B45 DC mov eax,dword ptr ss:[ebp-24]
004801AD |. E8 A684F8FF call q3721.00408658
004801B2 |. 5A pop edx
004801B3 |. 2BD0 sub edx,eax
004801B5 |. 85D2 test edx,edx
004801B7 |. 7D 03 jge short q3721.004801BC
004801B9 |. 83C2 0A add edx,0A
004801BC |> 83FA 01 cmp edx,1
004801BF |. 0F8C 5A010000 jl q3721.0048031F
004801C5 |. 83FA 03 cmp edx,3
004801C8 |. 0F8F 51010000 jg q3721.0048031F
004801CE |. 8955 F0 mov dword ptr ss:[ebp-10],edx
004801D1 |. 8B55 F0 mov edx,dword ptr ss:[ebp-10]
004801D4 |. 85D2 test edx,edx
004801D6 |. 7E 1C jle short q3721.004801F4
算码第一个循环:
004801D8 |> 4A /dec edx //计数减一
004801D9 |. 8A45 E5 |mov al,byte ptr ss:[ebp-1B] //首先取出第一位
004801DC |. 8845 EF |mov byte ptr ss:[ebp-11],al //取出的第一位送给最后一位
004801DF |. BB 0A000000 |mov ebx,0A
004801E4 |. 8D45 E6 |lea eax,dword ptr ss:[ebp-1A]
004801E7 |> 8A08 |/mov cl,byte ptr ds:[eax] //下面的是从第二位起,全部向前移一位
这样的效果是: 如原来的码: 078458745628 变换后如下: 784587456200
004801E9 |. 8848 FF ||mov byte ptr ds:[eax-1],cl
004801EC |. 40 ||inc eax
004801ED |. 4B ||dec ebx
004801EE |.^ 75 F7 |\jnz short q3721.004801E7
004801F0 |. 85D2 |test edx,edx
004801F2 |.^ 7F E4 \jg short q3721.004801D8 //第一个循环结束
下面这个循环得计算的重点地方:他达到的效果是;从上面的计算结果中,从第六位开始,取出该位送入最后一位,第一位的下面一位依次向前移动!而这个循环结束后,再向前跳一位(下一个是第四位)重复这个循环!
004801F4 > BB 04000000 mov ebx,4 //置计数
004801F9 |. 8D75 EC lea esi,dword ptr ss:[ebp-14] //取字符地址
004801FC |> 8A06 /mov al,byte ptr ds:[esi]
004801FE |. 8845 EF |mov byte ptr ss:[ebp-11],al //将字符送入最后一位
00480201 |. 8BD3 |mov edx,ebx
00480203 |. 03D2 |add edx,edx
00480205 |. 83FA 0A |cmp edx,0A
00480208 |. 7F 10 |jg short q3721.0048021 //检查是否处理完成了
0048020A |. 8D4415 E5 |lea eax,dword ptr ss:[ebp+edx-1B]
0048020E |> 8A08 |/mov cl,byte ptr ds:[eax] //全部向刚处理的字符那儿移动一位
00480210 |. 8848 FF ||mov byte ptr ds:[eax-1],cl
00480213 |. 42 ||inc edx
00480214 |. 40 ||inc eax
00480215 |. 83FA 0B ||cmp edx,0B
00480218 |.^ 75 F4 |\jnz short q3721.0048020E //全移动完成,不跳
0048021A |> 4B |dec ebx
0048021B |. 83EE 02 |sub esi,2 //处理下一位的字符间隔是 2 ,即隔一位,记隹是减,即向前处理!
0048021E |. 85DB |test ebx,ebx
00480220 |.^ 75 DA \jnz short q3721.004801FC //检查是否处理完成!
00480222 |. 837D F0 03 cmp dword ptr ss:[ebp-10],3
00480226 |. 74 6B je short q3721.00480293
00480228 |. 8B45 F8 mov eax,dword ptr ss:[ebp-8]
0048022B |. E8 503EF8FF call q3721.00404080
00480230 |. BB 01000000 mov ebx,1
00480235 |. 8D75 E5 lea esi,dword ptr ss:[ebp-1B] //上面算码结束后,下面是要对臬得到的码进行论证,是不是正确!因为上面的是根据你输入的密码算的,所,就要证明他是不是正确了!
经过上面的算码后,我们得到一组数字:如下: 9538573970 (根据你输入的不同而变化)
00480238 |> 8A16 /mov dl,byte ptr ds:[esi] //依次取出我们上面算得到的数字,
0048023A |. B8 01000000 |mov eax,1
0048023F |. E8 B4FDFFFF |call q3721.0047FFF8 //对前面五位依次做变换
00480244 |. 8806 |mov byte ptr ds:[esi],al
00480246 |. BF 0B000000 |mov edi,0B
0048024B |. 2BFB |sub edi,ebx
0048024D |. 8A543D E4 |mov dl,byte ptr ss:[ebp+edi-1C] //这个是从后向前的顺序取出我们的后五位字符
00480251 |. B8 01000000 |mov eax,1
00480256 |. E8 35FEFFFF |call q3721.00480090 //对字符做变换
0048025B |. 88443D E4 |mov byte ptr ss:[ebp+edi-1C],al
0048025F |. 8A06 |mov al,byte ptr ds:[esi]
00480261 |. BA 0B000000 |mov edx,0B
00480266 |. 2BD3 |sub edx,ebx
00480268 |. 3A4415 E4 |cmp al,byte ptr ss:[ebp+edx-1C] //此处对前五和后五的对应的字符变换后是否相等比较!如果五次全等。那么恭喜你得到码了!
0048026C 0F85 AD000000 jnz q3721.0048031F
00480272 |. 8D45 D8 |lea eax,dword ptr ss:[ebp-28]
00480275 |. 8A16 |mov dl,byte ptr ds:[esi]
00480277 |. E8 EC3FF8FF |call q3721.00404268
0048027C |. 8B55 D8 |mov edx,dword ptr ss:[ebp-28]
0048027F |. 8B45 F8 |mov eax,dword ptr ss:[ebp-8]
00480282 |. E8 C140F8FF |call q3721.00404348
00480287 |. 8B45 F8 |mov eax,dword ptr ss:[ebp-8]
0048028A |. 43 |inc ebx
0048028B |. 46 |inc esi
0048028C |. 83FB 06 |cmp ebx,6
0048028F |.^ 75 A7 \jnz short q3721.00480238
00480291 |. EB 6F jmp short q3721.00480302
00480293 |> 8B45 F8 mov eax,dword ptr ss:[ebp-8] //此处变换完成,我们得到对称的10 位字符
00480296 |. E8 E53DF8FF call q3721.00404080
0048029B |. BB 01000000 mov ebx,1
004802A0 |. 8D75 E5 lea esi,dword ptr ss:[ebp-1B]
004802A3 |> 8A16 /mov dl,byte ptr ds:[esi] //下面是做得到的的码,也就是数学游戏,做个数字变换!
004802A5 |. B8 01000000 |mov eax,1
004802AA |. E8 49FDFFFF |call q3721.0047FFF8
004802AF |. 8806 |mov byte ptr ds:[esi],al
004802B1 |. 8D45 D4 |lea eax,dword ptr ss:[ebp-2C]
004802B4 |. 8A16 |mov dl,byte ptr ds:[esi]
004802B6 |. E8 AD3FF8FF |call q3721.00404268
004802BB |. 8B55 D4 |mov edx,dword ptr ss:[ebp-2C]
004802BE |. 8B45 F8 |mov eax,dword ptr ss:[ebp-8]
004802C1 |. E8 8240F8FF |call q3721.00404348
004802C6 |. 8B45 F8 |mov eax,dword ptr ss:[ebp-8]
004802C9 |. 83FB 04 |cmp ebx,4
004802CC |. 7D 19 |jge short q3721.004802E7
004802CE |. BF 0B000000 |mov edi,0B
004802D3 |. 2BFB |sub edi,ebx
004802D5 |. 8A543D E4 |mov dl,byte ptr ss:[ebp+edi-1C]
004802D9 |. B8 01000000 |mov eax,1
004802DE |. E8 ADFDFFFF |call q3721.00480090
004802E3 |. 88443D E4 |mov byte ptr ss:[ebp+edi-1C],al
004802E7 |> 83FB 04 |cmp ebx,4
004802EA |. 7E 0F |jle short q3721.004802FB
004802EC |. 8A06 |mov al,byte ptr ds:[esi]
004802EE |. BA 0B000000 |mov edx,0B
004802F3 |. 2BD3 |sub edx,ebx
004802F5 |. 3A4415 E8 |cmp al,byte ptr ss:[ebp+edx-18]
004802F9 |. 75 24 |jnz short q3721.0048031F
004802FB |> 43 |inc ebx
004802FC |. 46 |inc esi
004802FD |. 83FB 08 |cmp ebx,8
00480300 |.^ 75 A1 \jnz short q3721.004802A3
00480302 |> 8D55 D0 lea edx,dword ptr ss:[ebp-30]
00480305 |. 8B45 F0 mov eax,dword ptr ss:[ebp-10]
00480308 |. E8 0F82F8FF call q3721.0040851C
0048030D |. 8B55 D0 mov edx,dword ptr ss:[ebp-30]
00480310 |. 8B45 F8 mov eax,dword ptr ss:[ebp-8]
00480313 |. E8 3040F8FF call q3721.00404348
00480318 |. 8B45 F8 mov eax,dword ptr ss:[ebp-8]
0048031B |. C645 F7 01 mov byte ptr ss:[ebp-9],1
0048031F |> 33C0 xor eax,eax
00480321 |. 5A pop edx
00480322 |. 59 pop ecx
00480323 |. 59 pop ecx
00480324 |. 64:8910 mov dword ptr fs:[eax],edx
00480327 |. 68 49034800 push q3721.00480349
0048032C |> 8D45 D0 lea eax,dword ptr ss:[ebp-30]
0048032F |. BA 05000000 mov edx,5
00480334 |. E8 6B3DF8FF call q3721.004040A4
00480339 |. 8D45 FC lea eax,dword ptr ss:[ebp-4]
0048033C |. E8 3F3DF8FF call q3721.00404080
00480341 \. C3 retn
从上面的流程我们看到,他的变码是最后的处理,那变码是如何做的呢!我们进CALL看一下:
前五位的CALL:
00480015 |. C645 F6 35 mov byte ptr ss:[ebp-A],35
00480019 |. C645 F7 39 mov byte ptr ss:[ebp-9],39
0048001D |. C645 F8 38 mov byte ptr ss:[ebp-8],38
00480021 |. C645 F9 31 mov byte ptr ss:[ebp-7],31
00480025 |. C645 FA 33 mov byte ptr ss:[ebp-6],33
00480029 |. C645 FB 37 mov byte ptr ss:[ebp-5],37
0048002D |. C645 FC 32 mov byte ptr ss:[ebp-4],32
00480031 |. C645 FD 36 mov byte ptr ss:[ebp-3],36
00480035 |. C645 FE 30 mov byte ptr ss:[ebp-2],30
00480039 |. C645 FF 34 mov byte ptr ss:[ebp-1],34
再清楚不过了,翻译一下就是: 0--5 1-9 2-8 3-1 等,如你入口是 5(即ASC码是35);他出来给你0 ,
再看后五位的CALL
004800AD |. C645 F6 37 mov byte ptr ss:[ebp-A],37
004800B1 |. C645 F7 30 mov byte ptr ss:[ebp-9],30
004800B5 |. C645 F8 33 mov byte ptr ss:[ebp-8],33
004800B9 |. C645 F9 32 mov byte ptr ss:[ebp-7],32
004800BD |. C645 FA 39 mov byte ptr ss:[ebp-6],39
004800C1 |. C645 FB 36 mov byte ptr ss:[ebp-5],36
004800C5 |. C645 FC 34 mov byte ptr ss:[ebp-4],34
004800C9 |. C645 FD 38 mov byte ptr ss:[ebp-3],38
004800CD |. C645 FE 31 mov byte ptr ss:[ebp-2],31
004800D1 |. C645 FF 35 mov byte ptr ss:[ebp-1],35
嘿嘿! 方法完全是一样的!
两次变换后,只要相等,你的答案就通过了!我们得到对应的码表:
ss:[0], 5 7
ss:[1], 9 0
ss:[2], 8 3
ss:[3], 1 2
ss:[4], 3 9
ss:[5], 7 6
ss:[6], 2 4
ss:[7], 6 8
ss:[8], 0 1
ss:[9], 4 5
游戏规则是: 前面是5 则后面就是7,经过变换后都得到 0 ,如此类推!
说到这里,大家可能迷惑了,密码,怎么没有期号的信息!?? 不说都忘了!OK我们现在看变换后的字符:
未变换前: 95385 73970
变换后: 10420 02401
大家看到变换后的对称性了吧, 10420 代表什么? 其实很简单了: 期号: 104 号码:20
到这里,大家应该知道骗子的结论吧, 你设想。你给定一个期号,和一个号码,通过上面的反推,不就可以得到密码了吗!
也就是说,每期你可以用不同的密码算出任意你想出的球号了! 唉!真是愚弄国人啊!经过上面的演练,我想开始做个注册机让别人信服!
注册机的方式如下: 接受信息: 期号、 球号 得到什么: 密码!
我们随想一个号码和期数: 188 开特35号OK,我开始反变换:
对称码为: 18835 53881
按前后不同五位变换: 90010 62110 //注意前后码表不同
按位交替还原: 69001 01127 7 //最后一位为首位+1
OK,你们可以用上面的试,就全解决了!你可以用任意想要的号码测试!最后都可以通过,骗述昭然于天下了!
--------------------------------------------------------------------------------
【经验总结】
这个软件,没什么难度在破解算法上,我想信能找出算法的人很多,我只是为证明给朋友看,没什么技术可言,当然也
可以作为初学代码跟踪的好例程!软件本身并无什么可说!随便写写,有什么说的不对的,欢迎你给我指正!并附上注册机
,供大家玩玩!
--------------------------------------------------------------------------------
【版权声明】: 谢谢观看, 转载请注明作者并保持文章的完整, 谢谢!
2006年09月10日 12:33:55