中文拨号上网计时计费器 V4.12注册算法分析(3)

时间:2005-12-20 来源: 作者: 点击:
// mmesi:=-1; // mmedx:=length(str)-startIndex; // while (mmedx=0) and (str[]) // if mmedx=0 then // begin // inc mmedx; // mmeax:=startIndex; // repeat // inc(mmeax); // dec(mmedx); // until str[mmeax]=mmebx;//mmebx=arg3 // end; // 分析知道实际是从s
  //            mmesi:=-1; 
//            mmedx:=length(str)-startIndex;
//            while (mmedx>=0) and (str[])
//            if mmedx>=0 then
//            begin
//                inc mmedx;
//                mmeax:=startIndex;
//                repeat
//                  inc(mmeax);
//                  dec(mmedx);
//                until str[mmeax]=mmebx;//mmebx=arg3
//            end;
//            分析知道实际是从startIndex查找arg3的索引
//123456789012345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890123456789012345678901234
//              1              2              3                4              5              6              7
//123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDE
F0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABC
//JDqpBkLvn8Cm0HYIr1KQMSagURlieFAEb3jd7N4zwZoOGyxu6T2fstchVP9X5W
wNC3OHDlm1efyqzcbM4GrZjP9TQ7gk2ov8F0IitXSJaAEBYxKunVL5Uhs6pRWd
//这个字符串有一定特殊性由0-9,a-z,A-Z的乱序组合
//共(26+26+10)*2=124个字符,
//                                                  *
//===========================================================       
        * Referenced by a (U)nconditional or (C)onditional Jump at Address:
        |:0044CF33(C)
        |
        :0044CF24 8B4DFC                  mov ecx, dword ptr [ebp-04]
        :0044CF27 3A5C01FF                cmp bl, byte ptr [ecx+eax-01]
        :0044CF2B 7504                    jne 0044CF31
        :0044CF2D 8BF0                    mov esi, eax===>作为输出
        :0044CF2F EB04                    jmp 0044CF35
       
        * Referenced by a (U)nconditional or (C)onditional Jump at Address:
        |:0044CF2B(C)
        |
        :0044CF31 40                      inc eax
        :0044CF32 4A                      dec edx
        :0044CF33 75EF                    jne 0044CF24
       
        * Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
        |:0044CF1F(C), :0044CF2F(U)
        |
        :0044CF35 33C0                    xor eax, eax
        :0044CF37 5A                      pop edx
        :0044CF38 59                      pop ecx
        :0044CF39 59                      pop ecx
        :0044CF3A 648910                  mov dword ptr fs:[eax], edx
        :0044CF3D 6852CF4400              push 0044CF52
       
        * Referenced by a (U)nconditional or (C)onditional Jump at Address:
        |:0044CF50(U)
        |
        :0044CF42 8D45FC                  lea eax, dword ptr [ebp-04]
        :0044CF45 E81A6CFBFF              call 00403B64
        :0044CF4A C3                      ret
        //===============================================
        //eax=str,ecx=startindex,edx=num
        //
        //function sub_0044CEEC(const str,startindex,num):integer;
        //  len:=length(str)-startindex
        //  if len>=0 then
        //  begin 
        //    inc(len);
        //    if (str[startindex])<>0
        //
        //  end;
        //  edi=$33;
        //  1. eax:=MagicStr;ecx=edi;edx:=code[1];
        //  2. eax:=MagicStr;ecx=edi;edx:=code[2];
        //  3. eax:=MagicStr;ecx=edi;edx:=code[3];
        //  4. eax:=MagicStr;ecx=edi;edx:=code[4];
        //  5. eax:=MagicStr;ecx=edi;edx:=code[5];
        //  6. eax:=MagicStr;ecx=edi;edx:=code[6];
        //    6轮完毕;然后做:0044D56D E8426BFBFF              call 004040B4
        //    输出edi,ebx为后面所用
        //    edi:=esi*10;ebx=累加和-$33
        //    edi=lenCode*10;ebx=lenCode;//才是正确的注册码
        //处理长度
        //
        //
        //for index:=1 to lenCode do
        //begin
        //
        //    eax:=MagicStr;ecx=??(edi)??;edx:=code[index*3+3+1];
        //end
        //==================================================
:0044D4C7 8BD8                    mov ebx, eax
:0044D4C9 83EB33                  sub ebx, 00000033
:0044D4CC 8BC3                    mov eax, ebx
:0044D4CE 03C0                    add eax, eax
:0044D4D0 8D0480                  lea eax, dword ptr [eax+4*eax]
:0044D4D3 8BD8                    mov ebx, eax
:0044D4D5 8B45FC                  mov eax, dword ptr [ebp-04]
:0044D4D8 8A5001                  mov dl, byte ptr [eax+01]
:0044D4DB B933000000              mov ecx, 00000033
:0044D4E0 8B45F8                  mov eax, dword ptr [ebp-08]
:0044D4E3 E804FAFFFF              call 0044CEEC
:0044D4E8 03D8                    add ebx, eax
:0044D4EA 83EB33                  sub ebx, 00000033
:0044D4ED 8BC3                    mov eax, ebx
:0044D4EF 03C0                    add eax, eax
:0044D4F1 8D0480                  lea eax, dword ptr [eax+4*eax]
:0044D4F4 8BD8                    mov ebx, eax
:0044D4F6 8B45FC                  mov eax, dword ptr [ebp-04]
:0044D4F9 8A5002                  mov dl, byte ptr [eax+02]
:0044D4FC B933000000              mov ecx, 00000033
:0044D501 8B45F8                  mov eax, dword ptr [ebp-08]
:0044D504 E8E3F9FFFF              call 0044CEEC
:0044D509 03D8                    add ebx, eax
:0044D50B 83EB33                  sub ebx, 00000033
:0044D50E 8BF3                    mov esi, ebx===========>>>>
:0044D510 8B45FC                  mov eax, dword ptr [ebp-04]
:0044D513 8A5003                  mov dl, byte ptr [eax+03]
:0044D516 8BCF                    mov ecx, edi
:0044D518 8B45F8                  mov eax, dword ptr [ebp-08]
:0044D51B E8CCF9FFFF              call 0044CEEC
:0044D520 8BD8                    mov ebx, eax
:0044D522 83EB33                  sub ebx, 00000033
:0044D525 8BC3                    mov eax, ebx
:0044D527 03C0                    add eax, eax
:0044D529 8D0480                  lea eax, dword ptr [eax+4*eax]
:0044D52C 8BD8                    mov ebx, eax
:0044D52E 8B45FC                  mov eax, dword ptr [ebp-04]
:0044D531 8A5004                  mov dl, byte ptr [eax+04]
:0044D534 8BCF                    mov ecx, edi
:0044D536 8B45F8                  mov eax, dword ptr [ebp-08]
:0044D539 E8AEF9FFFF              call 0044CEEC
:0044D53E 03D8                    add ebx, eax
:0044D540 83EB33                  sub ebx, 00000033
:0044D543 8BC3                    mov eax, ebx
:0044D545 03C0                    add eax, eax
:0044D547 8D0480                  lea eax, dword ptr [eax+4*eax]
:0044D54A 8BD8                    mov ebx, eax
:0044D54C 8B45FC                  mov eax, dword ptr [ebp-04]
:0044D54F 8A5005                  mov dl, byte ptr [eax+05]
:0044D552 8BCF                    mov ecx, edi
:0044D554 8B45F8                  mov eax, dword ptr [ebp-08]
:0044D557 E890F9FFFF              call 0044CEEC
:0044D55C 03D8                    add ebx, eax
:0044D55E 83EB33                  sub ebx, 00000033
:0044D561 8BFE                    mov edi, esi==============>>>>
//===================================0    0    0    0    1    5
//求索引和;表示将检查的长度,分为: 十万 万位 千位 百位 十位 个位
//                                  idx1 idx2 idx3 idx4 idx5 idx6
//                                  2    2    2    2    f    h
------分隔线----------------------------
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
推荐内容