binbinbin 发表于 2006-11-26 19:04:14

语音报时 2.1 Build 040521 注册算法

【破文标题】语音报时 2.1 Build 040521注册算法
【破文作者】XXNB
【作者邮箱】
【作者主页】http://free.ys168.com/?binbinbin7456
【破解工具】OD
【破解平台】xpsp2
【软件名称】语音报时 2.1 Build 040521
【软件大小】
【原版下载】http://www.newhua.com/soft/7980.htm
【保护方式】机器码
【软件简介】1.即时语音报时。2.整点、半点语音报时。3.可选择特定时间一次、每年每月每天、某年每月每天、每年每月某天、每年某月每

天等八种组合选择。自行动作包括:语音报时、播放音乐、执行程序、文字提醒、关机等。(未注册版可设定3组定时动作,注册版可设定40组

定时动作)。

【破解声明】向大侠们学习!!!只为学习!请尊重作者的劳动成功!
------------------------------------------------------------------------
【破解过程】

刚刚看了个“音乐报时”,于是想到了“语音报时”。华军上一找,找到这个,是易语言写的。虽然是N久前的东西,但是还是分析了下,共享

出来了。 字符串查找“已注册”很容易定位。

0044678B    55            push    ebp
0044678C    8BEC            mov   ebp, esp
0044678E    81EC 30000000   sub   esp, 30
00446794    C745 FC 0000000>mov   dword ptr , 0
0044679B    C745 F8 0000000>mov   dword ptr , 0
004467A2    C745 F4 0000000>mov   dword ptr , 0
004467A9    C745 F0 0000000>mov   dword ptr , 0
004467B0    C745 EC 0000000>mov   dword ptr , 0
004467B7    68 00000000   push    0
004467BC    BB C4060000   mov   ebx, 6C4
004467C1    E8 D8E20000   call    00454A9E
004467C6    83C4 04         add   esp, 4                           ; 这里eax的10进制就是机器码了
004467C9    68 01030080   push    80000301
004467CE    6A 00         push    0
004467D0    50            push    eax
004467D1    68 01000000   push    1
004467D6    BB 68010000   mov   ebx, 168
004467DB    E8 BEE20000   call    00454A9E
004467E0    83C4 10         add   esp, 10
004467E3    8945 E4         mov   dword ptr , eax          ; 机器码出现了
004467E6    8B5D FC         mov   ebx, dword ptr
004467E9    85DB            test    ebx, ebx
004467EB    74 09         je      short 004467F6
004467ED    53            push    ebx
004467EE    E8 B1E20000   call    00454AA4
004467F3    83C4 04         add   esp, 4
004467F6    8B45 E4         mov   eax, dword ptr
004467F9    8945 FC         mov   dword ptr , eax
004467FC    68 04000080   push    80000004
00446801    6A 00         push    0
00446803    8B45 FC         mov   eax, dword ptr
00446806    85C0            test    eax, eax
00446808    75 05         jnz   short 0044680F
0044680A    B8 BF314000   mov   eax, 004031BF
0044680F    50            push    eax
00446810    68 01000000   push    1
00446815    BB 30010000   mov   ebx, 130
0044681A    E8 7FE20000   call    00454A9E                         ; 得到机器码的位数
0044681F    83C4 10         add   esp, 10
00446822    8945 F8         mov   dword ptr , eax
00446825    C745 F4 0000000>mov   dword ptr , 0
0044682C    8B45 F8         mov   eax, dword ptr
0044682F    33C9            xor   ecx, ecx
00446831    50            push    eax
00446832    8D45 F0         lea   eax, dword ptr
00446835    8BD8            mov   ebx, eax
00446837    58            pop   eax
00446838    41            inc   ecx                              ; 循环开始。这里是计数器
00446839    51            push    ecx
0044683A    53            push    ebx
0044683B    890B            mov   dword ptr , ecx
0044683D    50            push    eax
0044683E    3BC8            cmp   ecx, eax                         ; 计数器比较
00446840    0F8F 67000000   jg      004468AD
00446846    68 01030080   push    80000301
0044684B    6A 00         push    0
0044684D    FF75 F0         push    dword ptr
00446850    68 04000080   push    80000004
00446855    6A 00         push    0
00446857    8B45 FC         mov   eax, dword ptr
0044685A    85C0            test    eax, eax
0044685C    75 05         jnz   short 00446863
0044685E    B8 BF314000   mov   eax, 004031BF
00446863    50            push    eax
00446864    68 02000000   push    2
00446869    BB 44010000   mov   ebx, 144
0044686E    E8 2BE20000   call    00454A9E                         ; 逐个取机器码ascii码值,16进制
00446873    83C4 1C         add   esp, 1C
00446876    8945 E0         mov   dword ptr , eax
00446879    DB45 E0         fild    dword ptr                ; 转成实数运算。当然要取10进制
0044687C    DD5D E0         fstp    qword ptr
0044687F    DD45 E0         fld   qword ptr
00446882    DB45 F0         fild    dword ptr
00446885    DD5D E0         fstp    qword ptr
00446888    DC4D E0         fmul    qword ptr                ; 乘以自己的下标
0044688B    DD5D E0         fstp    qword ptr
0044688E    DB45 F4         fild    dword ptr
00446891    DD5D D8         fstp    qword ptr
00446894    DD45 D8         fld   qword ptr
00446897    DC45 E0         fadd    qword ptr                ; 累加在这里
0044689A    DD5D D8         fstp    qword ptr
0044689D    DD45 D8         fld   qword ptr
004468A0    E8 5BFDFFFF   call    00446600
004468A5    8945 F4         mov   dword ptr , eax         ; 存储结果在【ebp-C】,最终结果就在这里面了
004468A8    58            pop   eax
004468A9    5B            pop   ebx
004468AA    59            pop   ecx
004468AB^ EB 8B         jmp   short 00446838                   ; 循环回去
004468AD    83C4 0C         add   esp, 0C
004468B0    68 04000080   push    80000004
004468B5    6A 00         push    0
004468B7    8B45 FC         mov   eax, dword ptr          ; 机器码到eax
004468BA    85C0            test    eax, eax
004468BC    75 05         jnz   short 004468C3
004468BE    B8 BF314000   mov   eax, 004031BF
004468C3    50            push    eax
004468C4    68 01000000   push    1
004468C9    BB 64010000   mov   ebx, 164
004468CE    E8 CBE10000   call    00454A9E                         ; 又这个call
004468D3    83C4 10         add   esp, 10
004468D6    8945 E4         mov   dword ptr , eax
004468D9    8955 E8         mov   dword ptr , edx
004468DC    DD45 E4         fld   qword ptr                ; 这是机器码
004468DF    DB45 F4         fild    dword ptr                 ; 上面那个循环的结果转实数,又要算了
004468E2    DD5D DC         fstp    qword ptr
004468E5    DC4D DC         fmul    qword ptr                ; 机器码*循环运算结果
004468E8    DD5D DC         fstp    qword ptr                ; 这乘的结果的10进制就是真码了。
004468EB    68 01060080   push    80000601
004468F0    FF75 E0         push    dword ptr
004468F3    FF75 DC         push    dword ptr                ; 结果入栈
004468F6    68 01000000   push    1
004468FB    BB 5C000000   mov   ebx, 5C
00446900    E8 99E10000   call    00454A9E                         ; 这个call
00446905    83C4 10         add   esp, 10
00446908    68 01060080   push    80000601
0044690D    52            push    edx
0044690E    50            push    eax
0044690F    68 01000000   push    1
00446914    BB 68010000   mov   ebx, 168
00446919    E8 80E10000   call    00454A9E                         ; 又是这个call。这个简直就是万能call了
0044691E    83C4 10         add   esp, 10
00446921    8945 D0         mov   dword ptr , eax          ; (ASCII "3886617169428")
00446924    8B5D EC         mov   ebx, dword ptr
00446927    85DB            test    ebx, ebx
00446929    74 09         je      short 00446934
0044692B    53            push    ebx
0044692C    E8 73E10000   call    00454AA4
00446931    83C4 04         add   esp, 4
00446934    8B45 D0         mov   eax, dword ptr
00446937    8945 EC         mov   dword ptr , eax
0044693A    68 00000000   push    0
0044693F    BB 04010000   mov   ebx, 104
00446944    E8 55E10000   call    00454A9E
00446949    83C4 04         add   esp, 4
0044694C    8945 E8         mov   dword ptr , eax
0044694F    68 C0314000   push    004031C0                         ; \Item.ini
00446954    FF75 E8         push    dword ptr
00446957    B9 02000000   mov   ecx, 2
0044695C    E8 31FDFFFF   call    00446692
00446961    83C4 08         add   esp, 8
00446964    8945 E4         mov   dword ptr , eax
00446967    8B5D E8         mov   ebx, dword ptr
0044696A    85DB            test    ebx, ebx
0044696C    74 09         je      short 00446977
0044696E    53            push    ebx
0044696F    E8 30E10000   call    00454AA4
00446974    83C4 04         add   esp, 4
00446977    6A 00         push    0
00446979    6A 00         push    0
0044697B    6A 00         push    0
0044697D    68 04000080   push    80000004
00446982    6A 00         push    0
00446984    68 CA314000   push    004031CA                         ; code
00446989    68 04000080   push    80000004
0044698E    6A 00         push    0
00446990    68 CF314000   push    004031CF                         ; System
00446995    68 04000080   push    80000004
0044699A    6A 00         push    0
0044699C    8B45 E4         mov   eax, dword ptr
0044699F    85C0            test    eax, eax
004469A1    75 05         jnz   short 004469A8
004469A3    B8 BF314000   mov   eax, 004031BF
004469A8    50            push    eax
004469A9    68 04000000   push    4
004469AE    BB C8080000   mov   ebx, 8C8
004469B3    E8 E6E00000   call    00454A9E                         ; 取出Item.ini里面的,我们输入的注册码
004469B8    83C4 34         add   esp, 34
004469BB    8945 E0         mov   dword ptr , eax          ; 我们输入的假码
004469BE    8B5D E4         mov   ebx, dword ptr
004469C1    85DB            test    ebx, ebx
004469C3    74 09         je      short 004469CE
004469C5    53            push    ebx
004469C6    E8 D9E00000   call    00454AA4
004469CB    83C4 04         add   esp, 4
004469CE    8B45 EC         mov   eax, dword ptr
004469D1    50            push    eax                              ; 真码入栈
004469D2    FF75 E0         push    dword ptr                ; 假码入栈
004469D5    E8 14FDFFFF   call    004466EE                         ; 看就知道是比较函数
004469DA    83C4 08         add   esp, 8
004469DD    83F8 00         cmp   eax, 0
004469E0    B8 00000000   mov   eax, 0
004469E5    0F94C0          sete    al
004469E8    8945 DC         mov   dword ptr , eax
004469EB    8B5D E0         mov   ebx, dword ptr
004469EE    85DB            test    ebx, ebx
004469F0    74 09         je      short 004469FB
004469F2    53            push    ebx
004469F3    E8 ACE00000   call    00454AA4
004469F8    83C4 04         add   esp, 4
004469FB    837D DC 00      cmp   dword ptr , 0
004469FF    0F84 49000000   je      00446A4E                         ; 关键跳
00446A05    C705 800C9D00 3>mov   dword ptr , 3C
00446A0F    6A 00         push    0
00446A11    68 D6314000   push    004031D6                         ; 已注册
00446A16    6A FF         push    -1
00446A18    6A 00         push    0
00446A1A    68 06000126   push    26010006
00446A1F    68 01000152   push    52010001
00446A24    E8 93E00000   call    00454ABC


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

1、算法很简单,取得机器码。循环取机器码的Ascii码值10进制×相应下标。累加在【ebp-C】(具体看代码)。然后累加的结果×机器码。结

果转成10进制就是真注册码了。


太简单,注册机都懒得写了

qq500com 发表于 2006-11-26 22:52:56

我看我是学不会算法了.......
支持你楼主!!!!!!!!!!!!1

ZHOU2X 发表于 2006-11-27 15:26:01

学习中……支持!!!!

internetzwm 发表于 2006-11-30 13:02:56

我的我练一下,谢谢.
页: [1]
查看完整版本: 语音报时 2.1 Build 040521 注册算法