• 标 题:拼音大师1.81 之 算法浅探!
  • 作 者:fly
  • 时 间:2003/02/24 09:36am
  • 链 接:http://bbs.pediy.com

下载地址:  http://www.skycn.com/soft/7579.html
软件大小:  1877 KB
软件语言:  简体中文
软件类别:  国产软件 / 共享版 / 文科工具
应用平台:  Win9x/NT/2000/XP
加入时间:  2003-01-08 14:59:46
下载次数:  6065
推荐等级:  * * *
开 发 商:  http://authorware.myrice.com/pyds/index


【软件简介】:《拼音大师》是一个专门用于将汉字转换为汉语拼音的软件。它具有以下功能:1、拥有大容量汉字库,包括简体字库和繁体字库,所以既可以查简体字拼音,又可以查繁体字拼音。 2、本软件可以将整篇文章迅速转换成带有声调的真正的拼音,而不像word中的拼音标注(如zhu2)。 3、软件具有智能化识别功能,能较好地识别多音字,此功能远超过word软件中的拼音指南。如百色、倘徉、龟兹等不常用的多音字也能很好地识别。

【软件限制】:试用次数、功能限制

【作者声明】:小弟初学Crack,只是感兴趣,没有其它目的。失误之处敬请各大侠赐教!

【破解工具】:TRW2000娃娃修改版、Ollydbg1.09 Ruiwin汉化版、W32Dasm8.93黄金版

—————————————————————————————
【过    程】:

呵呵,好久没来向大家学习了,贴上一篇曾在【OCN】发的解文,敬请大侠们赐教!

从来没有分析过VB程序的算法,何况这个东东还有浮点运算!我怕VB,这下更晕了!

声明:我很菜,下面分析所涉及的参数均是在我的机子上看到的,我也不知道主要参数是否是相同的,请大家自己看看!如有错误,欢迎大家指教!!!


机器码:682492983
试炼码:13572468

—————————————————————————————
0046AA61   . DD1C24         FSTP QWORD PTR SS:[ESP]
                           ====>ST=682492983.00000000000
                                我的机器码!

0046AA64   . E8 996FF9FF    CALL <JMP.&MSVBVM60.#583>
                           ====>关键CALL!进入!记作一
                           ====>求机器码弧度的余弦函数COS值!
                           结果=0.6844687377965869056


0046AA69   . DC0D B0124000  FMUL QWORD PTR DS:[4012B0]
                           ====>与1000000000.000000相乘!
                           ====>ST=0.6844687377965869056
                           ====>DS:[4012B0]=1000000000.000000
                           ====>结果=684468737.79658690560

0046AA6F   . C745 B8 050000>MOV DWORD PTR SS:[EBP-48],5
0046AA76   . DD5D C0        FSTP QWORD PTR SS:[EBP-40]
                           ====>684468737.79658690560


0046AA79   . DFE0           FSTSW AX
0046AA7B   . A8 0D          TEST AL,0D
0046AA7D   . 0F85 BE020000  JNZ 拼音大师.0046AD41

0046AA83   . 8D45 B8        LEA EAX,DWORD PTR SS:[EBP-48]
0046AA86   . 50             PUSH EAX
0046AA87   . 8D45 A8        LEA EAX,DWORD PTR SS:[EBP-58]
0046AA8A   . 50             PUSH EAX
0046AA8B   . E8 786FF9FF    CALL <JMP.&MSVBVM60.#613>
0046AA90   . 6A 02          PUSH 2
0046AA92   . 8D45 98        LEA EAX,DWORD PTR SS:[EBP-68]
0046AA95   . 5E             POP ESI           ;  0053A404
0046AA96   . C745 A0 090000>MOV DWORD PTR SS:[EBP-60],9
0046AA9D   . 50             PUSH EAX
0046AA9E   . 8D45 A8        LEA EAX,DWORD PTR SS:[EBP-58]
0046AAA1   . 56             PUSH ESI
0046AAA2   . 50             PUSH EAX
0046AAA3   . 8D45 88        LEA EAX,DWORD PTR SS:[EBP-78]
0046AAA6   . 8975 98        MOV DWORD PTR SS:[EBP-68],ESI
0046AAA9   . 50             PUSH EAX
0046AAAA   . E8 2F6FF9FF    CALL <JMP.&MSVBVM60.#632>
0046AAAF   . 8D8F 8C000000  LEA ECX,DWORD PTR DS:[EDI+8C]
0046AAB5   . 8D55 88        LEA EDX,DWORD PTR SS:[EBP-78]
0046AAB8   . E8 F16EF9FF    CALL <JMP.&MSVBVM60.__vbaVarMove>
0046AABD   . 8D4D CC        LEA ECX,DWORD PTR SS:[EBP-34]
0046AAC0   . E8 D76EF9FF    CALL <JMP.&MSVBVM60.__vbaFreeStr>
0046AAC5   . 8D4D C8        LEA ECX,DWORD PTR SS:[EBP-38]
0046AAC8   . E8 E76EF9FF    CALL <JMP.&MSVBVM60.__vbaFreeObj>
0046AACD   . 8D45 88        LEA EAX,DWORD PTR SS:[EBP-78]
0046AAD0   . 50             PUSH EAX
0046AAD1   . 8D45 98        LEA EAX,DWORD PTR SS:[EBP-68]
0046AAD4   . 50             PUSH EAX
0046AAD5   . 8D45 A8        LEA EAX,DWORD PTR SS:[EBP-58]
0046AAD8   . 50             PUSH EAX
0046AAD9   . 8D45 B8        LEA EAX,DWORD PTR SS:[EBP-48]
0046AADC   . 50             PUSH EAX
0046AADD   . 6A 04          PUSH 4
0046AADF   . E8 8A6FF9FF    CALL <JMP.&MSVBVM60.__vbaFreeVar>
0046AAE4   . 83C4 14        ADD ESP,14
0046AAE7   . 8D45 E0        LEA EAX,DWORD PTR SS:[EBP-20]
0046AAEA   . C745 80 2C0600>MOV DWORD PTR SS:[EBP-80],62C
0046AAF1   . 89B5 78FFFFFF  MOV DWORD PTR SS:[EBP-88],ESI
0046AAF7   . 50             PUSH EAX
0046AAF8   . 8D85 78FFFFFF  LEA EAX,DWORD PTR SS:[EBP-88]
0046AAFE   . 50             PUSH EAX
0046AAFF   . 8D85 68FFFFFF  LEA EAX,DWORD PTR SS:[EBP-98]
0046AB05   . 50             PUSH EAX
0046AB06   . 8D85 40FFFFFF  LEA EAX,DWORD PTR SS:[EBP-C0]
0046AB0C   . 50             PUSH EAX
0046AB0D   . 8D85 50FFFFFF  LEA EAX,DWORD PTR SS:[EBP-B0]
0046AB13   . 50             PUSH EAX
0046AB14   . 8D45 E0        LEA EAX,DWORD PTR SS:[EBP-20]
0046AB17   . 50             PUSH EAX
0046AB18   . C785 70FFFFFF >MOV DWORD PTR SS:[EBP-90],19
0046AB22   . 89B5 68FFFFFF  MOV DWORD PTR SS:[EBP-98],ESI
0046AB28   . E8 AB6EF9FF    CALL <JMP.&MSVBVM60.__vbaVarForI>9sm
0046AB2D   > 3BC3           CMP EAX,EBX
0046AB2F   . 8D87 8C000000  LEA EAX,DWORD PTR DS:[EDI+8C]
0046AB35   . 50             PUSH EAX
0046AB36   . 74 3B          JE SHORT 拼音大师.0046AB73
0046AB38   . 8D45 E0        LEA EAX,DWORD PTR SS:[EBP-20]
0046AB3B   . 50             PUSH EAX
0046AB3C   . 8D45 B8        LEA EAX,DWORD PTR SS:[EBP-48]
0046AB3F   . 50             PUSH EAX

0046AB40   . E8 B16EF9FF    CALL <JMP.&MSVBVM60.__vbaVarAdd>
                           ====>相加运算!关键CALL!进入!记作二

————————————————————————————————
一、进入46AA64   CALL <JMP.&MSVBVM60.#583>

73451B0C > 55               PUSH EBP
73451B0D   8BEC             MOV EBP,ESP
73451B0F   DD45 08          FLD QWORD PTR SS:[EBP+8]
                           ====>682492983.0000000

73451B12   D9E1             FABS
                           ====>求绝对值
73451B14   DC1D E0063A73    FCOMP QWORD PTR DS:[733A06E0]

73451B1A   DFE0             FSTSW AX
73451B1C   9E               SAHF
73451B1D   72 07            JB SHORT MSVBVM60.73451B26
73451B1F   6A 05            PUSH 5
73451B21   E8 3338F4FF      CALL MSVBVM60.73395359
73451B26   DD45 08          FLD QWORD PTR SS:[EBP+8]
                           ====>682492983.00000000000

73451B29   D9FF             FCOS
                           ====>求机器码弧度的余弦函数COS值

73451B2B   DD5D 08          FSTP QWORD PTR SS:[EBP+8]
                           ====>ST=0.6844687377965869056
呵呵,与计数器算的有点不同:0.684468737795946347159876626831465 不知为何?

73451B2E   DD45 08          FLD QWORD PTR SS:[EBP+8]
73451B31   5D               POP EBP    ; 拼音大师.0046AA69
73451B32   C2 0800          RETN 8


————————————————————————————————
二-1、进入46AB40   CALL <JMP.&MSVBVM60.__vbaVarAdd>


7347902D > FF7424 04        PUSH DWORD PTR SS:[ESP+4]
73479031   FF7424 0C        PUSH DWORD PTR SS:[ESP+C]
73479035   FF7424 14        PUSH DWORD PTR SS:[ESP+14]
73479039   FF15 14FE4773    CALL DWORD PTR DS:[7347FE14]; OLEAUT32.VarAdd
                           ====>关键CALL!进入!

7347903F   85C0             TEST EAX,EAX
73479041   7D 0C            JGE SHORT MSVBVM60.7347904F

————————————————————————————————
二-2、进入73479039  CALL DWORD PTR DS:[7347FE14]; OLEAUT32.VarAdd

7FEFCB72 > 55               PUSH EBP
7FEFCB73   8BEC             MOV EBP,ESP
7FEFCB75   83EC 28          SUB ESP,28
7FEFCB78   8365 D8 00       AND DWORD PTR SS:[EBP-28],0
7FEFCB7C   53               PUSH EBX
7FEFCB7D   56               PUSH ESI
7FEFCB7E   8B75 08          MOV ESI,DWORD PTR SS:[EBP+8]
7FEFCB81   8365 E8 00       AND DWORD PTR SS:[EBP-18],0
7FEFCB85   57               PUSH EDI
7FEFCB86   8B7D 0C          MOV EDI,DWORD PTR SS:[EBP+C]
7FEFCB89   0FB70E           MOVZX ECX,WORD PTR DS:[ESI]
7FEFCB8C   0FB707           MOVZX EAX,WORD PTR DS:[EDI]
7FEFCB8F   83F8 11          CMP EAX,11
7FEFCB92   77 46            JA SHORT OLEAUT32.7FEFCBDA

…… …… 省略   …… ……

7FEFCC2B   E8 D49AFAFF      CALL OLEAUT32.7FEA6704
7FEFCC30   85C0             TEST EAX,EAX
7FEFCC32   8945 08          MOV DWORD PTR SS:[EBP+8],EAX
7FEFCC35  ^7C BC            JL SHORT OLEAUT32.7FEFCBF3
7FEFCC37   8D7D D8          LEA EDI,DWORD PTR SS:[EBP-28]
7FEFCC3A  ^EB 93            JMP SHORT OLEAUT32.7FEFCBCF
7FEFCC3C   C745 08 05000280 MOV DWORD PTR SS:[EBP+8],8002000>
7FEFCC43  ^EB CE            JMP SHORT OLEAUT32.7FEFCC13
7FEFCC45   6A 01            PUSH 1
7FEFCC47   5B               POP EBX       ; MSVBVM60.7347903F
7FEFCC48   8B45 10          MOV EAX,DWORD PTR SS:[EBP+10]
7FEFCC4B   66:8918          MOV WORD PTR DS:[EAX],BX
7FEFCC4E   33C0             XOR EAX,EAX
7FEFCC50  ^EB CA            JMP SHORT OLEAUT32.7FEFCC1C

…… …… 省略   …… ……

7FEFCE2C   6A 05            PUSH 5
7FEFCE2E   6A 00            PUSH 0
7FEFCE30   53               PUSH EBX
7FEFCE31   8D45 D8          LEA EAX,DWORD PTR SS:[EBP-28]
7FEFCE34   57               PUSH EDI
7FEFCE35   50               PUSH EAX
7FEFCE36   E8 D547F8FF      CALL OLEAUT32.VariantChangeTypeE>
7FEFCE3B   85C0             TEST EAX,EAX
7FEFCE3D   8945 08          MOV DWORD PTR SS:[EBP+8],EAX
7FEFCE40  ^0F8C ADFDFFFF    JL OLEAUT32.7FEFCBF3

7FEFCE46   DD45 E0          FLD QWORD PTR SS:[EBP-20]
 ====>1、SS:[EBP-20]=25.00000000000000

7FEFCE49   DC45 F0          FADD QWORD PTR SS:[EBP-10]
 ====>1、25.00000000000000+684468737.0000000=684468762.00000000000


7FEFCE4C   DD55 F8          FST QWORD PTR SS:[EBP-8]
7FEFCE4F   8B4D FC          MOV ECX,DWORD PTR SS:[EBP-4]
7FEFCE52   B8 0000F07F      MOV EAX,OLEAUT32.7FF00000
7FEFCE57   23C8             AND ECX,EAX
7FEFCE59   6A 05            PUSH 5
7FEFCE5B   3BC8             CMP ECX,EAX
7FEFCE5D   5B               POP EBX
7FEFCE5E   0F85 E0000000    JNZ OLEAUT32.7FEFCF44
7FEFCE64   DDD8             FSTP ST
7FEFCE66   DBE2             FCLEX
7FEFCE68   C745 08 0A000280 MOV DWORD PTR SS:[EBP+8],8002000A
7FEFCE6F  ^E9 9FFDFFFF      JMP OLEAUT32.7FEFCC13
7FEFCE74   DB46 08          FILD DWORD PTR DS:[ESI+8]
7FEFCE77   D847 08          FADD DWORD PTR DS:[EDI+8]
7FEFCE7A  ^E9 61FFFFFF      JMP OLEAUT32.7FEFCDE0
7FEFCE7F   D946 08          FLD DWORD PTR DS:[ESI+8]
7FEFCE82   DA47 08          FIADD DWORD PTR DS:[EDI+8]
7FEFCE85  ^E9 56FFFFFF      JMP OLEAUT32.7FEFCDE0
7FEFCE8A   0FB647 08        MOVZX EAX,BYTE PTR DS:[EDI+8]
7FEFCE8E   8945 08          MOV DWORD PTR SS:[EBP+8],EAX
7FEFCE91   DB45 08          FILD DWORD PTR SS:[EBP+8]

                    <====由下面的7FEFCEA8 跳来!
7FEFCE94   DC46 08          FADD QWORD PTR DS:[ESI+8]
                           ====>依次与25*n累加!

 ====>2、50.00000000000000+684468762.00000000000=684468812.00000000000
 ====>3、75.00000000000000+684468812.00000000000=684468887.00000000000
 ====>4、100.00000000000000+684468887.00000000000=684468987.00000000000
 ====>5、125.00000000000000000+684468987.0000000=684469112.00000000000
 ====>6、150.00000000000000000+684469112.00000000000=684469262.00000000000
 ====>7、175.00000000000000000+684469262.00000000000=684469437.00000000000
 ====>8、200.00000000000000000+684469437.00000000000=684469637.00000000000
 ====>9、225.00000000000000000+684469637.00000000000=684469862.00000000000
 ====>10、250.00000000000000000+684469862.00000000000=684470112.00000000000
 ====>11、275.00000000000000000+684470112.00000000000=684470387.00000000000
 ====>12、300.00000000000000000+684470387.00000000000=684470687.00000000000
 ====>13、325.00000000000000000+684470687.00000000000=684471012.00000000000

…… …… 继续累加  共63次  …… ……

 ====>63、1575.00000000000000000+684517562.00000000000=684519137.00000000000

7FEFCE97  ^EB B3            JMP SHORT OLEAUT32.7FEFCE4C
7FEFCE99   0FBF47 08        MOVSX EAX,WORD PTR DS:[EDI+8]
7FEFCE9D   8945 08          MOV DWORD PTR SS:[EBP+8],EAX

7FEFCEA0   DB45 08          FILD DWORD PTR SS:[EBP+8]

 ====>2、  00000032   (即:十进制=50)
 ====>3、  0000004B
 ====>4、  00000064
 ====>5、  0000007D
 ====>6、  00000096
 ====>7、  000000AF
 ====>8、  000000C8
 ====>9、  000000E1
 ====>10、 000000FA
 ====>11、 00000113
 ====>12、 0000012C
 ====>13、 00000145

…… ……  继续取19(H)*n,直至n=63    …… ……
 ====>63、 00000627


7FEFCEA3  ^EB EF            JMP SHORT OLEAUT32.7FEFCE94
7FEFCEA5   DB47 08          FILD DWORD PTR DS:[EDI+8]
7FEFCEA8  ^EB EA            JMP SHORT OLEAUT32.7FEFCE94
                           ====>向上跳至7FEFCE94进行加法运算!


—————————————————————————————
【总        结】:


1、求机器码682492983弧度的余弦函数COS值=0.6844687377965869056

2、0.6844687377965869056 * 1000000000.000000=684468737.79658690560

3、取整684468737+25+25*2+25*3+25*4……25*63=684468737+50400=684519137

4、684519137就是与我们输入的试炼码-1010后比较的值,如相等则OK!

5、所以真码:684519137 + 1010=684520147
     

呵呵,为了这点东西我这菜鸟可是忙活了好几个晚上呀!累!
—————————————————————————————
【注册信息保存】:

REGEDIT4

[HKEY_CURRENT_USER\Software\VB and VBA Program Settings\pyds\zc]
"pyds"="true"

—————————————————————————————
【整        理】:

机器码:682492983
试炼码:684519137+1010=684520147

—————————————————————————————

   注册机源码!

一、C++注册机


    ——作者:winroot


#include<iostream.h>
#include<math.h>
#include<iomanip.h>
void main()
{
long double code,a,b,d,e,serials;
int i;
cout <<"please input your code:"<<endl;
cin >>code;
a=cos(code);
b=abs(a*1000000000);
d=0;
for (i=1;i<64;i++)
d=d+25*i;
e=b+d;
serials=e+1010;
cout <<"your serials is :"<<setprecision(9)<<serials<<endl;
}

16:28 03-2-18

__________________________________________________________

二、VB注册机

       ——作者:ruiwin

源代码:
Private Sub xpcmdbutton1_Click()
Dim a, b, c, d
If Text1 = "" Then Exit Sub
a = Text1.Text
a = Abs(Cos(a) * 1000000000#)
For I = 1 To 63
b = 25 * I
c = c + b
Next I
d = Int(a + c + 1010)
Text2.Text = d
End Sub


13:24 03-2-20


                   Cracked By 巢水工作坊——fly【OCN】

                          2003-2-17   17:00

TR>

<TR>TR>



一蓑烟雨……任平生!


TR>