【文章标题】: ************开奖号码密码算法过程(揭穿骗术最后的面纱)
【文章作者】: 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