飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 29824|回复: 26

[原创] 月光迷你钟 6.2 算法分析

[复制链接]
  • TA的每日心情
    奋斗
    2017-6-11 12:16
  • 签到天数: 10 天

    [LV.3]偶尔看看II

    发表于 2006-12-8 20:35:03 | 显示全部楼层 |阅读模式
    【破文标题】月光迷你钟 6.2  算法分析
    【破文作者】XXNB
    【作者邮箱】
    【作者主页】http://free.ys168.com/?binbinbin7456
    破解工具】OD
    【破解平台】xpsp2
    【软件名称】月光迷你钟 6.2
    【软件大小】2107KB
    【原版下载】http://www.newhua.com/soft/44524.htm
    【保护方式】
    【软件简介】定时提醒、定时关机、万年历、农历查询、网络校时、真人语音报时、快速启动程序、世界时间查询一个都不能少,月光迷你钟

    可通过网络校准时间,免去手工校对时间的烦恼;可按每日、每周、每月、每年、临时等方式设多个提醒任务,在您需要的时间提醒您;具有

    数字石英钟和图形时钟双重界面,图形时钟还有多款界面皮肤可供选择;具有定时关机功能,可按每日、每周、每月、每年、临时等方式设定

    多个定时关机任务,限制时间使用;具备真人语音报时、文字提示、农历查询、节日提醒、打印万年历和开关光驱、进行时间计算和调用系统

    计算器和记事本等多种功能;支持界面透明度调整,支持鼠标穿透功能,不必担心它会妨碍您的其他工作;有QQ样式的隐藏功能;支持热键功

    能,可以设置热键快速运行多种任务,包括一键真人语音报时;能快速分类调用可执行文件,还一个清洁的桌面给您;还可查看计算机使用时

    间;软件小巧,功能强大,占用资源极少,是您不可多得的桌面工具。
    【破解声明】向大侠们学习!!!只为学习!请尊重作者的劳动成功!
    ------------------------------------------------------------------------
    【破解过程】

    用VB专用的几个断点都能断下,我用的是“__vbastrmove”,然后可以找到注册程序处理的地方:



    0049CD70   > \55       push    ebp
    0049CD71   .  8BEC     mov     ebp, esp
    0049CD73   .  83EC 14  sub     esp, 14
    0049CD76   .  68 A6264>push    <jmp.&MSVBVM60.__vbaExceptHandle>;  SE 处理程序安装
    0049CD7B   .  64:A1 00>mov     eax, dword ptr fs:[0]
    0049CD81   .  50       push    eax
    0049CD82   .  64:8925 >mov     dword ptr fs:[0], esp
    0049CD89   .  81EC BC0>sub     esp, 3BC
    0049CD8F   .  53       push    ebx
    0049CD90   .  56       push    esi
    0049CD91   .  57       push    edi
    0049CD92   .  8965 EC  mov     dword ptr [ebp-14], esp
    0049CD95   .  C745 F0 >mov     dword ptr [ebp-10], 004019A0
    0049CD9C   .  8B75 08  mov     esi, dword ptr [ebp+8]
    0049CD9F   .  8BC6     mov     eax, esi
    0049CDA1   .  83E0 01  and     eax, 1

    (中间省略很多代码。都是对机器码字符串的操作,包括取字符,倒转字符串,连接字符串等等。)

    下面的注释有点乱,首先要知道我的机器码是:124757971。然后,如果你有空的话自己跟跟就很容易知道了的。


    0049D925   > \8B85 58F>mov     eax, dword ptr [ebp-A8]          ;  把机器码字符串到过来
    0049D92B   .  8985 98F>mov     dword ptr [ebp-368], eax         ;  我的机器码是“124757971”
    0049D931   .  33C0     xor     eax, eax                         ;  倒过来就是"179757421"
    0049D933   .  8985 58F>mov     dword ptr [ebp-A8], eax
    0049D939   .  8B8D 50F>mov     ecx, dword ptr [ebp-B0]
    0049D93F   .  898D 94F>mov     dword ptr [ebp-36C], ecx         ;  取出“421”
    0049D945   .  8985 50F>mov     dword ptr [ebp-B0], eax
    0049D94B   .  8B95 4CF>mov     edx, dword ptr [ebp-B4]          ;  剩下的“1797574”
    0049D951   .  8995 90F>mov     dword ptr [ebp-370], edx
    0049D957   .  8985 4CF>mov     dword ptr [ebp-B4], eax
    0049D95D   .  8B8D 48F>mov     ecx, dword ptr [ebp-B8]          ;  “21”
    0049D963   .  898D 8CF>mov     dword ptr [ebp-374], ecx
    0049D969   .  8985 48F>mov     dword ptr [ebp-B8], eax
    0049D96F   .  8B95 44F>mov     edx, dword ptr [ebp-BC]
    0049D975   .  8995 88F>mov     dword ptr [ebp-378], edx
    0049D97B   .  8985 44F>mov     dword ptr [ebp-BC], eax
    0049D981   .  8B8D 40F>mov     ecx, dword ptr [ebp-C0]          ;  "711"
    0049D987   .  898D 84F>mov     dword ptr [ebp-37C], ecx
    0049D98D   .  8985 40F>mov     dword ptr [ebp-C0], eax
    0049D993   .  8B55 D4  mov     edx, dword ptr [ebp-2C]          ;  假码到edx
    0049D996   .  52       push    edx
    0049D997   .  FF15 341>call    dword ptr [<&MSVBVM60.__vbaR8Str>;  MSVBVM60.__vbaR8Str
    0049D99D   .  DD9D 7CF>fstp    qword ptr [ebp-384]              ;  假码转成实数。
    0049D9A3   .  8B95 8CF>mov     edx, dword ptr [ebp-374]         ;  “21”
    0049D9A9   .  8D8D 78F>lea     ecx, dword ptr [ebp-88]
    0049D9AF   .  FFD7     call    edi
    0049D9B1   .  50       push    eax
    0049D9B2   .  8B95 88F>mov     edx, dword ptr [ebp-378]
    0049D9B8   .  8D8D 74F>lea     ecx, dword ptr [ebp-8C]
    0049D9BE   .  FFD7     call    edi                              ;  这里call edi相当于 strmove(字符串移动)
    0049D9C0   .  50       push    eax
    0049D9C1   .  FF15 6C1>call    dword ptr [<&MSVBVM60.__vbaStrCa>;  MSVBVM60.__vbaStrCat
    0049D9C7   .  8BD0     mov     edx, eax                         ;  连接字符串,这里得到“211”
    0049D9C9   .  8D8D 70F>lea     ecx, dword ptr [ebp-90]
    0049D9CF   .  FFD7     call    edi
    0049D9D1   .  50       push    eax
    0049D9D2   .  FF15 341>call    dword ptr [<&MSVBVM60.__vbaR8Str>;  MSVBVM60.__vbaR8Str
    0049D9D8   .  DD9D 74F>fstp    qword ptr [ebp-38C]              ;  211
    0049D9DE   .  8B95 94F>mov     edx, dword ptr [ebp-36C]         ;  “421”
    0049D9E4   .  8D4D 94  lea     ecx, dword ptr [ebp-6C]
    0049D9E7   .  FFD7     call    edi
    0049D9E9   .  50       push    eax
    0049D9EA   .  8B95 90F>mov     edx, dword ptr [ebp-370]         ;  “1797574”
    0049D9F0   .  8D4D 90  lea     ecx, dword ptr [ebp-70]
    0049D9F3   .  FFD7     call    edi
    0049D9F5   .  50       push    eax
    0049D9F6   .  FF15 6C1>call    dword ptr [<&MSVBVM60.__vbaStrCa>;  MSVBVM60.__vbaStrCat
    0049D9FC   .  8BD0     mov     edx, eax                         ;  字符串连接得到"4211797574"
    0049D9FE   .  8D4D 8C  lea     ecx, dword ptr [ebp-74]
    0049DA01   .  FFD7     call    edi
    0049DA03   .  50       push    eax
    0049DA04   .  FF15 341>call    dword ptr [<&MSVBVM60.__vbaR8Str>;  MSVBVM60.__vbaR8Str
    0049DA0A   .  DC8D 74F>fmul    qword ptr [ebp-38C]              ;  4211797574*211
    0049DA10   .  DFE0     fstsw   ax
    0049DA12   .  A8 0D    test    al, 0D
    0049DA14   .  0F85 320>jnz     0049E84C
    0049DA1A   .  FF15 FC1>call    dword ptr [<&MSVBVM60.__vbaFPInt>;  MSVBVM60.__vbaFPInt
    0049DA20   .  DD9D 6CF>fstp    qword ptr [ebp-394]              ;  上面相乘的结果888689288114
    0049DA26   .  8B95 98F>mov     edx, dword ptr [ebp-368]         ;  “179757421”机器码倒转
    0049DA2C   .  8D4D BC  lea     ecx, dword ptr [ebp-44]
    0049DA2F   .  FFD7     call    edi
    0049DA31   .  50       push    eax
    0049DA32   .  FF15 341>call    dword ptr [<&MSVBVM60.__vbaR8Str>;  MSVBVM60.__vbaR8Str
    0049DA38   .  DD9D 64F>fstp    qword ptr [ebp-39C]              ;  转成实数得179757421
    0049DA3E   .  8B45 B8  mov     eax, dword ptr [ebp-48]          ;  机器码"124757971"
    0049DA41   .  50       push    eax
    0049DA42   .  FF15 341>call    dword ptr [<&MSVBVM60.__vbaR8Str>;  MSVBVM60.__vbaR8Str
    0049DA48   .  DC85 64F>fadd    qword ptr [ebp-39C]              ;  179757421+124757971
    0049DA4E   .  DFE0     fstsw   ax
    0049DA50   .  A8 0D    test    al, 0D
    0049DA52   .  0F85 F40>jnz     0049E84C
    0049DA58   .  DD9D 5CF>fstp    qword ptr [ebp-3A4]              ;  加的结果st=304515392.00000000000
    0049DA5E   .  8D8D 8CF>lea     ecx, dword ptr [ebp-174]
    0049DA64   .  51       push    ecx
    0049DA65   .  FF15 CC1>call    dword ptr [<&MSVBVM60.__vbaR8Err>;  MSVBVM60.__vbaR8ErrVar
    0049DA6B   .  DC85 5CF>fadd    qword ptr [ebp-3A4]              ;  2475797+304515392
    0049DA71   .  DFE0     fstsw   ax
    0049DA73   .  A8 0D    test    al, 0D
    0049DA75   .  0F85 D10>jnz     0049E84C
    0049DA7B   .  DD9D 54F>fstp    qword ptr [ebp-3AC]              ;  加的结果st=306991189.00000000000
    0049DA81   .  8D95 6CF>lea     edx, dword ptr [ebp-194]
    0049DA87   .  52       push    edx
    0049DA88   .  FF15 CC1>call    dword ptr [<&MSVBVM60.__vbaR8Err>;  MSVBVM60.__vbaR8ErrVar
    0049DA8E   .  DC8D 54F>fmul    qword ptr [ebp-3AC]              ;  *179
    0049DA94   .  DFE0     fstsw   ax
    0049DA96   .  A8 0D    test    al, 0D
    0049DA98   .  0F85 AE0>jnz     0049E84C
    0049DA9E   .  FF15 FC1>call    dword ptr [<&MSVBVM60.__vbaFPInt>;  MSVBVM60.__vbaFPInt
    0049DAA4   .  DD9D 4CF>fstp    qword ptr [ebp-3B4]              ;  乘的结果st=5.4951422831000000000e+10
    0049DAAA   .  8D85 DCF>lea     eax, dword ptr [ebp-124]
    0049DAB0   .  50       push    eax
    0049DAB1   .  FF15 CC1>call    dword ptr [<&MSVBVM60.__vbaR8Err>;  MSVBVM60.__vbaR8ErrVar
    0049DAB7   .  DD9D 44F>fstp    qword ptr [ebp-3BC]              ;  1247
    0049DABD   .  8B4D D0  mov     ecx, dword ptr [ebp-30]
    0049DAC0   .  51       push    ecx
    0049DAC1   .  FF15 341>call    dword ptr [<&MSVBVM60.__vbaR8Str>;  MSVBVM60.__vbaR8Str
    0049DAC7   .  DC85 44F>fadd    qword ptr [ebp-3BC]              ;  机器码124757971+1247
    0049DACD   .  DFE0     fstsw   ax
    0049DACF   .  A8 0D    test    al, 0D
    0049DAD1   .  0F85 750>jnz     0049E84C
    0049DAD7   .  DD9D 3CF>fstp    qword ptr [ebp-3C4]              ;  加的结果st=124759218.00000000000
    0049DADD   .  8D95 BCF>lea     edx, dword ptr [ebp-144]
    0049DAE3   .  52       push    edx
    0049DAE4   .  FF15 CC1>call    dword ptr [<&MSVBVM60.__vbaR8Err>;  MSVBVM60.__vbaR8ErrVar
    0049DAEA   .  DC8D 3CF>fmul    qword ptr [ebp-3C4]              ;  *971
    0049DAF0   .  DFE0     fstsw   ax
    0049DAF2   .  A8 0D    test    al, 0D
    0049DAF4   .  0F85 520>jnz     0049E84C
    0049DAFA   .  DD9D 34F>fstp    qword ptr [ebp-3CC]              ;  乘的结果st=1.2114120067800000000e+11
    0049DB00   .  8B45 C4  mov     eax, dword ptr [ebp-3C]
    0049DB03   .  50       push    eax
    0049DB04   .  FF15 341>call    dword ptr [<&MSVBVM60.__vbaR8Str>;  MSVBVM60.__vbaR8Str
    0049DB0A   .  833D 00E>cmp     dword ptr [52E000], 0
    0049DB11   .  75 08    jnz     short 0049DB1B
    0049DB13   .  DCBD 34F>fdivr   qword ptr [ebp-3CC]              ;  整除st=124757971.00000000000/121141200678
    0049DB19   .  EB 11    jmp     short 0049DB2C
    0049DB1B   >  FFB5 38F>push    dword ptr [ebp-3C8]
    0049DB21   .  FFB5 34F>push    dword ptr [ebp-3CC]
    0049DB27   .  E8 B64BF>call    <jmp.&MSVBVM60._adj_fdivr_m64>
    0049DB2C   >  DFE0     fstsw   ax
    0049DB2E   .  A8 0D    test    al, 0D
    0049DB30   .  0F85 160>jnz     0049E84C
    0049DB36   .  FF15 FC1>call    dword ptr [<&MSVBVM60.__vbaFPInt>;  MSVBVM60.__vbaFPInt
    0049DB3C   .  DC85 4CF>fadd    qword ptr [ebp-3B4]              ;  取整数部分+54951422831
    0049DB42   .  DC85 6CF>fadd    qword ptr [ebp-394]              ;  又再加888689288114
    0049DB48   .  DFE0     fstsw   ax
    0049DB4A   .  A8 0D    test    al, 0D
    0049DB4C   .  0F85 FA0>jnz     0049E84C
    0049DB52   .  DD9D 2CF>fstp    qword ptr [ebp-3D4]              ;  两次加后的结果st=9.4364071191600000000e+11
    0049DB58   .  8B95 84F>mov     edx, dword ptr [ebp-37C]
    0049DB5E   .  8D8D 5CF>lea     ecx, dword ptr [ebp-A4]
    0049DB64   .  FFD7     call    edi
    0049DB66   .  50       push    eax
    0049DB67   .  FF15 341>call    dword ptr [<&MSVBVM60.__vbaR8Str>;  MSVBVM60.__vbaR8Str
    0049DB6D   .  833D 00E>cmp     dword ptr [52E000], 0
    0049DB74   .  75 08    jnz     short 0049DB7E
    0049DB76   .  DCBD 2CF>fdivr   qword ptr [ebp-3D4]              ;  整除711
    0049DB7C   .  EB 11    jmp     short 0049DB8F                   ;  除以711后取整数部分就是注册码了。
    0049DB7E   >  FFB5 30F>push    dword ptr [ebp-3D0]
    0049DB84   .  FFB5 2CF>push    dword ptr [ebp-3D4]
    0049DB8A   .  E8 534BF>call    <jmp.&MSVBVM60._adj_fdivr_m64>
    0049DB8F   >  DFE0     fstsw   ax
    0049DB91   .  A8 0D    test    al, 0D
    0049DB93   .  0F85 B30>jnz     0049E84C
    0049DB99   .  FF15 FC1>call    dword ptr [<&MSVBVM60.__vbaFPInt>;  MSVBVM60.__vbaFPInt
    0049DB9F   .  FF15 F81>call    dword ptr [<&MSVBVM60.__vbaFpR8>>;  MSVBVM60.__vbaFpR8
    0049DBA5   .  DC9D 7CF>fcomp   qword ptr [ebp-384]              ;  这里就是真假码比较了


    ------------------------------------------------------------------------
    【破解总结】

    这个算法就只是对机器码的运算,比如取字符,连接字符串。然后是实数的运算,比如加减乘除。仅此而已。大家都来跟跟吧。

    评分

    参与人数 1威望 +40 飘云币 +8 收起 理由
    易难为易 + 40 + 8

    查看全部评分

    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-12-10 22:08:07 | 显示全部楼层

    VB程序啊

    哎,想找VB的程序有时也不好找,一会DOWN下来,分析一下
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2019-3-25 06:30
  • 签到天数: 1096 天

    [LV.10]以坛为家III

    发表于 2006-12-11 08:56:28 | 显示全部楼层
    经典的VB算法,收藏起来学习一下。
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-12-11 12:06:54 | 显示全部楼层
    不错,谢谢分享
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-12-11 15:34:26 | 显示全部楼层
    学习,收藏!!支持!!!!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-12-13 17:57:30 | 显示全部楼层
    谢谢啦..很不错啊..
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-12-14 11:30:42 | 显示全部楼层
    收藏,了,仔细研究
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-12-30 21:49:01 | 显示全部楼层
    :L
    偶找不关键点啊:L
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-12-31 16:23:04 | 显示全部楼层
    3KS,学习ING~`````
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-1-7 18:21:08 | 显示全部楼层
    向楼主学习了 vb知道的很少
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表