- UID
- 22350
注册时间2006-10-1
阅读权限30
最后登录1970-1-1
龙战于野
TA的每日心情 | 奋斗 2017-6-11 12:16 |
---|
签到天数: 10 天 [LV.3]偶尔看看II
|
【破文标题】语音报时 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 [ebp-4], 0
0044679B C745 F8 0000000>mov dword ptr [ebp-8], 0
004467A2 C745 F4 0000000>mov dword ptr [ebp-C], 0
004467A9 C745 F0 0000000>mov dword ptr [ebp-10], 0
004467B0 C745 EC 0000000>mov dword ptr [ebp-14], 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 [ebp-1C], eax ; 机器码出现了
004467E6 8B5D FC mov ebx, dword ptr [ebp-4]
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 [ebp-1C]
004467F9 8945 FC mov dword ptr [ebp-4], eax
004467FC 68 04000080 push 80000004
00446801 6A 00 push 0
00446803 8B45 FC mov eax, dword ptr [ebp-4]
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 [ebp-8], eax
00446825 C745 F4 0000000>mov dword ptr [ebp-C], 0
0044682C 8B45 F8 mov eax, dword ptr [ebp-8]
0044682F 33C9 xor ecx, ecx
00446831 50 push eax
00446832 8D45 F0 lea eax, dword ptr [ebp-10]
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 [ebx], 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 [ebp-10]
00446850 68 04000080 push 80000004
00446855 6A 00 push 0
00446857 8B45 FC mov eax, dword ptr [ebp-4]
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 [ebp-20], eax
00446879 DB45 E0 fild dword ptr [ebp-20] ; 转成实数运算。当然要取10进制
0044687C DD5D E0 fstp qword ptr [ebp-20]
0044687F DD45 E0 fld qword ptr [ebp-20]
00446882 DB45 F0 fild dword ptr [ebp-10]
00446885 DD5D E0 fstp qword ptr [ebp-20]
00446888 DC4D E0 fmul qword ptr [ebp-20] ; 乘以自己的下标
0044688B DD5D E0 fstp qword ptr [ebp-20]
0044688E DB45 F4 fild dword ptr [ebp-C]
00446891 DD5D D8 fstp qword ptr [ebp-28]
00446894 DD45 D8 fld qword ptr [ebp-28]
00446897 DC45 E0 fadd qword ptr [ebp-20] ; 累加在这里
0044689A DD5D D8 fstp qword ptr [ebp-28]
0044689D DD45 D8 fld qword ptr [ebp-28]
004468A0 E8 5BFDFFFF call 00446600
004468A5 8945 F4 mov dword ptr [ebp-C], 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 [ebp-4] ; 机器码到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 [ebp-1C], eax
004468D9 8955 E8 mov dword ptr [ebp-18], edx
004468DC DD45 E4 fld qword ptr [ebp-1C] ; 这是机器码
004468DF DB45 F4 fild dword ptr [ebp-C] ; 上面那个循环的结果转实数,又要算了
004468E2 DD5D DC fstp qword ptr [ebp-24]
004468E5 DC4D DC fmul qword ptr [ebp-24] ; 机器码*循环运算结果
004468E8 DD5D DC fstp qword ptr [ebp-24] ; 这乘的结果的10进制就是真码了。
004468EB 68 01060080 push 80000601
004468F0 FF75 E0 push dword ptr [ebp-20]
004468F3 FF75 DC push dword ptr [ebp-24] ; 结果入栈
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 [ebp-30], eax ; (ASCII "3886617169428")
00446924 8B5D EC mov ebx, dword ptr [ebp-14]
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 [ebp-30]
00446937 8945 EC mov dword ptr [ebp-14], 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 [ebp-18], eax
0044694F 68 C0314000 push 004031C0 ; \Item.ini
00446954 FF75 E8 push dword ptr [ebp-18]
00446957 B9 02000000 mov ecx, 2
0044695C E8 31FDFFFF call 00446692
00446961 83C4 08 add esp, 8
00446964 8945 E4 mov dword ptr [ebp-1C], eax
00446967 8B5D E8 mov ebx, dword ptr [ebp-18]
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 [ebp-1C]
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 [ebp-20], eax ; 我们输入的假码
004469BE 8B5D E4 mov ebx, dword ptr [ebp-1C]
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 [ebp-14]
004469D1 50 push eax ; 真码入栈
004469D2 FF75 E0 push dword ptr [ebp-20] ; 假码入栈
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 [ebp-24], eax
004469EB 8B5D E0 mov ebx, dword ptr [ebp-20]
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 [ebp-24], 0
004469FF 0F84 49000000 je 00446A4E ; 关键跳
00446A05 C705 800C9D00 3>mov dword ptr [9D0C80], 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进制就是真注册码了。
太简单,注册机都懒得写了 |
评分
-
查看全部评分
|