首页
社区
课程
招聘
[转帖]语音报时 2.1 Build 040521破解分析
发表于: 2005-12-9 13:36 3721

[转帖]语音报时 2.1 Build 040521破解分析

2005-12-9 13:36
3721
【破文标题】 语音报时 2.1 Build 040521破解分析

【软件名称】 语音报时 2.1 Build 040521

【破文作者】 yyxk[Dfcg][tfw]

【作者邮箱】 yyxk2000@yahoo.com.cn

【作者主页】 e2bK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3y4F1K9i4y4G2i4K6u0W2L8%4u0Y4i4K6u0r3

【使用工具】 PEID,OLLYDBG,Keymake

【操作系统】 Windows 2003

【下载地址】 a61K9s2c8@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期预科班、正式班开始火爆招生报名啦!!!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 253
活跃值: (25)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
2
顶一下师傅的原创贴,被转到这里来了
2005-12-9 14:02
0
游客
登录 | 注册 方可回帖
返回