【破文标题】 语音报时 2.1 Build 040521破解分析
【软件名称】 语音报时 2.1 Build 040521
【破文作者】 yyxk[Dfcg][tfw]
【作者邮箱】 yyxk2000@yahoo.com.cn
【作者主页】
870K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3y4F1K9i4y4G2i4K6u0W2L8%4u0Y4i4K6u0r3【使用工具】 PEID,OLLYDBG,Keymake
【操作系统】 Windows 2003
【下载地址】
0e9K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6i4y4#2M7r3g2J5k6r3!0%4L8W2)9J5k6h3y4G2L8g2)9J5c8Y4y4G2k6Y4c8Q4x3V1j5I4y4K6M7^5x3W2)9J5k6h3S2@1L8g2)9J5y4X3&6T1M7%4m8Q4x3@1u0Q4x3U0k6F1j5Y4y4H3i4K6y4n7i4@1f1$3i4K6R3^5i4K6V1$3i4K6t1$3L8X3u0K6M7q4)9K6b7W2)9J5y4X3&6T1M7%4m8Q4x3@1u0Q4c8e0k6Q4z5f1y4Q4b7f1y4Q4c8e0g2Q4z5f1y4Q4b7U0m8Q4c8e0c8Q4b7U0S2Q4z5p5u0Q4c8e0S2Q4b7V1c8Q4b7V1b7`.【软件大小】 853KB
【加壳方式】 无
【保护方式】 机器码生成注册码
【软件简介】
1.即时语音报时。2.整点、半点语音报时。3.可选择特定时间一次、每年每月每天、某年每月每天、每年每月某天、每年某月每天等八种组合选择。自行动作包括:语音报时、播放音乐、执行程序、文字提醒、关机等。(未注册版可设定3组定时动作,注册版可设定40组定时动作)。
【破解声明】我是一只小菜鸟,偶得一点心得,愿与大家分享:)
---------------------------------------------------------------------
【内容】
无壳,易语言编写,OD载入程序运行输入注册码然后回到OD在左上窗口,ctrl+g输入420000点确定,说明一下(这个420000是为了能把丛4开头的地址调出来,对易的软件运行时不知丛哪个追进去这些地址,只好用这个笨方法,自己调出来)
确定后来到420000处,其实你输入个其它的地址也可以,只要能把下面的地址调出来
下面在命令行里输入bpx hmemcpy回车,打开互相调变的call点右键在每个命令中设置断点。断下后,不断F2和F9去掉一些没用的call一直到下面的地址
0044C325 E8 7A870000 CALL soundtim.00454AA4 到这里可以回到程序注册窗口出现,点注册拦断这里和刚才一样不断F2和F9去掉一些没用的call一直到下面的地址,要慢慢跟踪了
0044C32A 83C4 04 ADD ESP,4
0044C32D 68 00000000 PUSH 0
0044C332 BB 04010000 MOV EBX,104
0044C337 E8 62870000 CALL soundtim.00454A9E
到下面的地址开始出现机器码
0044681A E8 7FE20000 CALL soundtim.00454A9E EAX机器码
0044681F 83C4 10 ADD ESP,10
00446822 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
00446825 C745 F4 0000000>MOV DWORD PTR SS:[EBP-C],0
0044682C 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
0044682F 33C9 XOR ECX,ECX
00446831 50 PUSH EAX
00446832 8D45 F0 LEA EAX,DWORD PTR SS:[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 DS:[EBX],ECX
0044683D 50 PUSH EAX
0044683E 3BC8 CMP ECX,EAX
00446840 0F8F 67000000 JG soundtim.004468AD
00446846 68 01030080 PUSH 80000301
0044684B 6A 00 PUSH 0
0044684D FF75 F0 PUSH DWORD PTR SS:[EBP-10]
00446850 68 04000080 PUSH 80000004
00446855 6A 00 PUSH 0
00446857 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0044685A 85C0 TEST EAX,EAX
0044685C 75 05 JNZ SHORT soundtim.00446863
0044685E B8 BF314000 MOV EAX,soundtim.004031BF
00446863 50 PUSH EAX
00446864 68 02000000 PUSH 2
00446869 BB 44010000 MOV EBX,144
0044686E E8 2BE20000 CALL soundtim.00454A9E
00446873 83C4 1C ADD ESP,1C
00446876 8945 E0 MOV DWORD PTR SS:[EBP-20],EAX
00446879 DB45 E0 FILD DWORD PTR SS:[EBP-20] 机器码的十进制
0044687C DD5D E0 FSTP QWORD PTR SS:[EBP-20]
0044687F DD45 E0 FLD QWORD PTR SS:[EBP-20]
00446882 DB45 F0 FILD DWORD PTR SS:[EBP-10]
00446885 DD5D E0 FSTP QWORD PTR SS:[EBP-20]
00446888 DC4D E0 FMUL QWORD PTR SS:[EBP-20]
0044688B DD5D E0 FSTP QWORD PTR SS:[EBP-20]
0044688E DB45 F4 FILD DWORD PTR SS:[EBP-C]
00446891 DD5D D8 FSTP QWORD PTR SS:[EBP-28]
00446894 DD45 D8 FLD QWORD PTR SS:[EBP-28]
00446897 DC45 E0 FADD QWORD PTR SS:[EBP-20]
0044689A DD5D D8 FSTP QWORD PTR SS:[EBP-28]
0044689D DD45 D8 FLD QWORD PTR SS:[EBP-28]
004468A0 E8 5BFDFFFF CALL soundtim.00446600
004468A5 8945 F4 MOV DWORD PTR SS:[EBP-C],EAX
004468A8 58 POP EAX
004468A9 5B POP EBX
004468AA 59 POP ECX
004468AB ^ EB 8B JMP SHORT soundtim.00446838 到这里循环结束
004468AD 83C4 0C ADD ESP,0C
004468B0 68 04000080 PUSH 80000004
004468B5 6A 00 PUSH 0
004468B7 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004468BA 85C0 TEST EAX,EAX
004468BC 75 05 JNZ SHORT soundtim.004468C3
004468BE B8 BF314000 MOV EAX,soundtim.004031BF
004468C3 50 PUSH EAX
004468C4 68 01000000 PUSH 1
004468C9 BB 64010000 MOV EBX,164
004468CE E8 CBE10000 CALL soundtim.00454A9E
004468D3 83C4 10 ADD ESP,10
004468D6 8945 E4 MOV DWORD PTR SS:[EBP-1C],EAX
004468D9 8955 E8 MOV DWORD PTR SS:[EBP-18],EDX
004468DC DD45 E4 FLD QWORD PTR SS:[EBP-1C]
004468DF DB45 F4 FILD DWORD PTR SS:[EBP-C]
004468E2 DD5D DC FSTP QWORD PTR SS:[EBP-24]
004468E5 DC4D DC FMUL QWORD PTR SS:[EBP-24]
004468E8 DD5D DC FSTP QWORD PTR SS:[EBP-24]
004468EB 68 01060080 PUSH 80000601
004468F0 FF75 E0 PUSH DWORD PTR SS:[EBP-20]
004468F3 FF75 DC PUSH DWORD PTR SS:[EBP-24]
004468F6 68 01000000 PUSH 1
004468FB BB 5C000000 MOV EBX,5C
00446900 E8 99E10000 CALL soundtim.00454A9E
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 soundtim.00454A9E
0044691E 83C4 10 ADD ESP,10
00446921 8945 D0 MOV DWORD PTR SS:[EBP-30],EAX 注册码送入EAX中:)
00446924 8B5D EC MOV EBX,DWORD PTR SS:[EBP-14]
00446927 85DB TEST EBX,EBX
00446929 74 09 JE SHORT soundtim.00446934
中间省去N行注册码找到了,下面找爆破点F8一直到这里
004469D5 E8 14FDFFFF CALL soundtim.004466EE 一直到这里EAX注册码
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 SS:[EBP-24],EAX
004469EB 8B5D E0 MOV EBX,DWORD PTR SS:[EBP-20]
004469EE 85DB TEST EBX,EBX
004469F0 74 09 JE SHORT soundtim.004469FB
004469F2 53 PUSH EBX
004469F3 E8 ACE00000 CALL soundtim.00454AA4
004469F8 83C4 04 ADD ESP,4
004469FB 837D DC 00 CMP DWORD PTR SS:[EBP-24],0
004469FF 0F84 49000000 JE soundtim.00446A4E 丛这里开始跳走 爆破点84改为85
00446A05 C705 A00CBF00 3>MOV DWORD PTR DS:[BF0CA0],3C
00446A0F 6A 00 PUSH 0
00446A11 68 D6314000 PUSH soundtim.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 soundtim.00454ABC
--------------------------------------------------------------------------------
【破解小结】
内存注册机
中断地址: 004469D5
中断次数: 1
第一字节: E8
指令长度: 5
内存方式:寄存器 eax
本地下载
注册机的断点很多,不过我喜欢在比较指令上下断
注册信息保存在软件目录Item文件里删了就是未注册版了
引用yyxk这段,二哥补充一些
无壳,易语言编写,OD载入程序运行输入注册码然后回到OD在左上窗口,ctrl+g输入420000点确定,说明一下(这个420000是为了能把丛4开头的地址调出来,对易的软件运行时不知丛哪个追进去这些地址,只好用这个笨方法,自己调出来)
确定后来到420000处,其实你输入个其它的地址也可以,只要能把下面的地址调出来.下面在命令行里输入bpx hmemcpy回车,打开互相调变的call点右键在每个命令中设置断点。断下后,不断F2和F9去掉一些没用的call一直到下面的地址
0044C325 E8 7A870000 CALL soundtim.00454AA4 到这里可以回到程序注册窗口出现,点注册拦断这里和刚才一样不断F2和F9去掉一些没用的call一直到下面的地址,要慢慢跟踪了
二哥实在看不明白
易语言实际有基于C语言的因素,很多地方和C语言类似。
这个程序就可以拦截文本框注册码
命令行直接
bp GetWindowTextA
然后输入伪注册码 99999999999999999
点确定按钮立即中断。
77DFCF80 > 55 PUSH EBP //中断在系统领空
77DFCF81 8BEC MOV EBP,ESP
77DFCF83 6A FF PUSH -1
77DFCF85 68 10D0DF77 PUSH USER32.77DFD010
77DFCF8A 68 4716E477 PUSH USER32.77E41647
77DFCF8F 64:A1 00000000 MOV EAX,DWORD PTR FS:[0]
77DFCF95 50 PUSH EAX
77DFCF96 64:8925 0000000>MOV DWORD PTR FS:[0],ESP
77DFCF9D 51 PUSH ECX
77DFCF9E 51 PUSH ECX
77DFCF9F 51 PUSH ECX
堆栈友好提示
0012F57C 100A3E03 /CALL 到 GetWindowTextA 来自 krnln.100A3DFD //这里返回到系统领空,我们知道一个Call是层层嵌套调用的,不管它有多少层调用,用Ctrl+F9最终可以返回程序领空,因为系统Api调用在系统领空,并非比较分析的好位置,而且受操作系统限制。所以不断Ctrl+F9,关注友好的堆栈提示。
0012F580 002503C4 |hWnd = 002503C4 (class='Edit',parent=0038032C)
0012F584 00D57028 |Buffer = 00D57028
0012F588 0000001B \Count = 1B (27.)
0012F58C 0012FA58
0012F590 1000E962 返回到 krnln.1000E962 来自 krnln.100A3DD8
0012F594 0012FAC0
0012F598 100BF048 krnln.100BF048
0012F59C 100A5F8E 返回到 krnln.100A5F8E
0012F5A0 100BF048 krnln.100BF048
0012F5A4 00000111
0012F57C 100A3E03 返回到 krnln.100A3E03 来自 USER32.GetWindowTextA //就看这里,继续返回。
0012F580 002503C4
0012F584 00D57028 ASCII "99999999999999999999999999"
0012F588 0000001B
0012F58C 0012FA58
0012F590 1000E962 返回到 krnln.1000E962 来自 krnln.100A3DD8
0012F594 0012FAC0
0012F598 100BF048 krnln.100BF048
0012F59C 100A5F8E 返回到 krnln.100A5F8E
0012F5A0 100BF048 krnln.100BF048
我继续按了31次Ctrl+F9
10026B3B C3 RETN //中断地址,轻轻的F8返回程序领空.
10026B3C 55 PUSH EBP
10026B3D 8BEC MOV EBP,ESP
10026B3F 83EC 18 SUB ESP,18
10026B42 53 PUSH EBX
10026B43 56 PUSH ESI
10026B44 57 PUSH EDI
10026B45 894D E8 MOV DWORD PTR SS:[EBP-18],ECX
10026B48 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8]
10026B4B 8B48 0C MOV ECX,DWORD PTR DS:[EAX+C]
10026B4E 51 PUSH ECX
0012FB74 0044C31A 返回到 soundtim.0044C31A 来自 soundtim.00454A9E //看到这里就知道我们应该返回了.
0012FB78 00000005
0012FB7C 00171978
0012FB80 00000000
0012FB84 80000004
0012FB88 004409A7 soundtim.004409A7
0012FB8C 00000000
0012FB90 80000004
0012FB94 00000000
0012FB98 00000000
0044C315 E8 84870000 CALL soundtim.00454A9E //所有调用来自这里,一层层嵌套调用.
0044C31A 83C4 40 ADD ESP,40 //我们返回到这里,回家的感觉真好,往下和yyxk分析的一样的.
0044C31D 8B5D F4 MOV EBX,DWORD PTR SS:[EBP-C]
0044C320 85DB TEST EBX,EBX
0044C322 74 09 JE SHORT soundtim.0044C32D
0044C324 53 PUSH EBX
0044C325 E8 7A870000 CALL soundtim.00454AA4
0044C32A 83C4 04 ADD ESP,4
0044C32D 68 00000000 PUSH 0
0044C332 BB 04010000 MOV EBX,104
0044C337 E8 62870000 CALL soundtim.00454A9E
0044C33C 83C4 04 ADD ESP,4
0044C33F 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
0044C342 68 C0314000 PUSH soundtim.004031C0 ; ASCII "\Item.ini"
0044C347 FF75 FC PUSH DWORD PTR SS:[EBP-4]
0044C34A B9 02000000 MOV ECX,2
0044C34F E8 3EA3FFFF CALL soundtim.00446692
0044C354 83C4 08 ADD ESP,8
0044C357 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
0044C35A 8B5D FC MOV EBX,DWORD PTR SS:[EBP-4]
0044C35D 85DB TEST EBX,EBX
0044C35F 74 09 JE SHORT soundtim.0044C36A
[培训]科锐软件逆向54期预科班、正式班开始火爆招生报名啦!!!