【破文作者】S.P.S.G
【作者邮箱】spsgeyro@gmail.com
【所属组织】Winter[CZG]
【组织主页】http://www.5icrack.com
【使用工具】Fuckall,PEiD
【操作系统】Windows 2003
--------------------------------------------------------------------------------
【软件名称】每周电视节目 V2005 Build 02.01
【下载地址】http://www.skycn.com/soft/21903.html
【软件大小】1101 KB
【破解难度】eAsY
【保护方式】无
【软件语言】Borland Delphi 6.0 - 7.0
【软件简介】
〖每周电视节目〗软件是非常实用的电脑助手。软件提供中央电视台所有各套节目、各省市所有电视节目
、海内外电视台节目等等每击节目表。软件同时提供经典爱情、信心指数、适应能力、合格丈夫、男性魅
力、焦虑情绪、心中靓女、经典智力、健康状态等项目的测试游戏。软件同时提供今日天气预报、历史上
的今天、今日滚动新闻、世界节日查询、特服号码查询、成年公历农历、度量转换查询等等实用的功能。
软件使用简单,傻瓜式操作。软件绿色、环保、小巧、功能强大、可完全卸载,放心使用。
【破解声明】曾经沧海难为水
【破解目的】我不喜欢有限制
--------------------------------------------------------------------------------
【爆破过程】
下载完软件,安装,没有问题,作者美其名曰免费软件,实际上要大家去易趣注册,ok,让我们来试试攻
击^_^
软件只给了一个注册窗口要求输入注册码,并且错误会给出提示。
分析:这样的软件有两种情况,一是多种注册码符合内置计算,二是内置明码。
PEiD查壳,Delphi,Fuckall载入,查找字符串,来到这里。
0051DB36 |. E8 CDB8EEFF CALL mztv.00409408 这里进行运算
0051DB3B |. 03F8 ADD EDI,EAX //EDI+EAX存入EDI(初始值为0)
0051DB3D |. 81EF 07870000 SUB EDI,8707 //EDI-8707H
0051DB43 |. 81FF 39300000 CMP EDI,3039 //EDI与3039H比较,相同则注册
OK
0051DB49 |. 74 0C JE SHORT mztv.0051DB57 ; 关键跳
0051DB4B |. B8 FCDB5100 MOV EAX,mztv.0051DBFC ; regwrong
0051DB50 |. E8 131CF2FF CALL mztv.0043F768
0051DB55 |. EB 2D JMP SHORT mztv.0051DB84
0051DB57 |> BA 24DC5100 MOV EDX,mztv.0051DC24 ; regok
进入关键CALL
00409408 /$ 53 PUSH EBX
00409409 |. 56 PUSH ESI
0040940A |. 83C4 F4 ADD ESP,-0C
0040940D |. 8BD8 MOV EBX,EAX
0040940F |. 8BD4 MOV EDX,ESP
00409411 |. 8BC3 MOV EAX,EBX
00409413 |. E8 B09EFFFF CALL mztv.004032C8 //这个CALL里出来的EAX是关键
,进去看看
00409418 |. 8BF0 MOV ESI,EAX
0040941A |. 833C24 00 CMP DWORD PTR SS:[ESP],0
0040941E |. 74 19 JE SHORT mztv.00409439
00409420 |. 895C24 04 MOV DWORD PTR SS:[ESP+4],EBX
00409424 |. C64424 08 0B MOV BYTE PTR SS:[ESP+8],0B
00409429 |. 8D5424 04 LEA EDX,DWORD PTR SS:[ESP+4]
0040942D |. A1 486B5200 MOV EAX,DWORD PTR DS:[526B48]
00409432 |. 33C9 XOR ECX,ECX
00409434 |. E8 EFF9FFFF CALL mztv.00408E28
00409439 |> 8BC6 MOV EAX,ESI
0040943B |. 83C4 0C ADD ESP,0C
0040943E |. 5E POP ESI
0040943F |. 5B POP EBX
00409440 \. C3 RETN
004032C8 /$ 53 PUSH EBX
004032C9 |. 56 PUSH ESI
004032CA |. 57 PUSH EDI //保存环境变量,EAX=假码
004032CB |. 89C6 MOV ESI,EAX
004032CD |. 50 PUSH EAX
004032CE |. 85C0 TEST EAX,EAX
004032D0 |. 74 6C JE SHORT mztv.0040333E //EAX=0则跳
004032D2 |. 31C0 XOR EAX,EAX //EAX清零
004032D4 |. 31DB XOR EBX,EBX //EBX清零
004032D6 |. BF CCCCCC0C MOV EDI,0CCCCCCC EDI=0CCCCCCC
004032DB |> 8A1E /MOV BL,BYTE PTR DS:[ESI] //这段循环取假码第一个字符
004032DD |. 46 |INC ESI
004032DE |. 80FB 20 |CMP BL,20 //为空格则取下一位
004032E1 |.^ 74 F8 \JE SHORT mztv.004032DB //不为空则执行下去
004032E3 |. B5 00 MOV CH,0 //CH=0
004032E5 |. 80FB 2D CMP BL,2D //BL是否为-
004032E8 |. 74 62 JE SHORT mztv.0040334C
004032EA |. 80FB 2B CMP BL,2B //BL是否为+
004032ED |. 74 5F JE SHORT mztv.0040334E
004032EF |. 80FB 24 CMP BL,24 //BL是否为$
004032F2 |. 74 5F JE SHORT mztv.00403353
004032F4 |. 80FB 78 CMP BL,78 //BL是否为x
004032F7 |. 74 5A JE SHORT mztv.00403353
004032F9 |. 80FB 58 CMP BL,58 //BL是否为X
004032FC |. 74 55 JE SHORT mztv.00403353
004032FE |. 80FB 30 CMP BL,30 //BL是否为0
00403301 |. 75 13 JNZ SHORT mztv.00403316 //都不是则跳去计算
00403303 |. 8A1E MOV BL,BYTE PTR DS:[ESI]
00403305 |. 46 INC ESI
00403306 |. 80FB 78 CMP BL,78
00403309 |. 74 48 JE SHORT mztv.00403353
0040330B |. 80FB 58 CMP BL,58
0040330E |. 74 43 JE SHORT mztv.00403353
00403310 |. 84DB TEST BL,BL
00403312 |. 74 20 JE SHORT mztv.00403334
00403314 |. EB 04 JMP SHORT mztv.0040331A
00403316 |> 84DB TEST BL,BL //BL中是否还有字符
00403318 |. 74 2D JE SHORT mztv.00403347 //没有则跳掉
0040331A |> 80EB 30 /SUB BL,30 //BL-30
0040331D |. 80FB 09 |CMP BL,9 //是否比9大
00403320 |. 77 25 |JA SHORT mztv.00403347 //大于9跳出循环
00403322 |. 39F8 |CMP EAX,EDI //是否比0CCCCCCC大
00403324 |. 77 21 |JA SHORT mztv.00403347
00403326 |. 8D0480 |LEA EAX,DWORD PTR DS:[EAX+EAX*4> //EAX*5
00403329 |. 01C0 |ADD EAX,EAX //上下两句一起看就是EAX*10
0040332B |. 01D8 |ADD EAX,EBX //EAX加上下一个字符
0040332D |. 8A1E |MOV BL,BYTE PTR DS:[ESI] //取下一位
0040332F |. 46 |INC ESI
00403330 |. 84DB |TEST BL,BL //是否还有字符
00403332 |.^ 75 E6 \JNZ SHORT mztv.0040331A //有则循环
00403334 |> FECD DEC CH
00403336 |. 74 09 JE SHORT mztv.00403341
00403338 |. 85C0 TEST EAX,EAX
0040333A |. 7D 4E JGE SHORT mztv.0040338A //EAX大于等于0则跳
0040333C |. EB 09 JMP SHORT mztv.00403347
0040333E |> 46 INC ESI
0040333F |. EB 06 JMP SHORT mztv.00403347
00403341 |> F7D8 NEG EAX
00403343 |. 7E 45 JLE SHORT mztv.0040338A
00403345 |. 78 43 JS SHORT mztv.0040338A
00403347 |> 5B POP EBX ; Default case of switch
00403367
00403348 |. 29DE SUB ESI,EBX
0040334A |. EB 41 JMP SHORT mztv.0040338D
0040334C |> FEC5 INC CH
0040334E |> 8A1E MOV BL,BYTE PTR DS:[ESI]
00403350 |. 46 INC ESI
00403351 |.^ EB C3 JMP SHORT mztv.00403316
00403353 |> BF FFFFFF0F MOV EDI,0FFFFFFF
00403358 |. 8A1E MOV BL,BYTE PTR DS:[ESI]
0040335A |. 46 INC ESI
0040335B |. 84DB TEST BL,BL
0040335D |.^ 74 DF JE SHORT mztv.0040333E
0040335F |> 80FB 61 /CMP BL,61
00403362 |. 72 03 |JB SHORT mztv.00403367
00403364 |. 80EB 20 |SUB BL,20
00403367 |> 80EB 30 |SUB BL,30 ; Switch (cases 30..46)
0040336A |. 80FB 09 |CMP BL,9
0040336D |. 76 0B |JBE SHORT mztv.0040337A
0040336F |. 80EB 11 |SUB BL,11
00403372 |. 80FB 05 |CMP BL,5
00403375 |.^ 77 D0 |JA SHORT mztv.00403347
00403377 |. 80C3 0A |ADD BL,0A ; Cases 41 ('A'),42 ('B'),43
('C'),44 ('D'),45 ('E'),46 ('F') of switch 00403367
0040337A |> 39F8 |CMP EAX,EDI ; Cases 30 ('0'),31 ('1'),32
('2'),33 ('3'),34 ('4'),35 ('5'),36 ('6'),37 ('7'),38 ('8'),39 ('9') of switch 00403367
0040337C |.^ 77 C9 |JA SHORT mztv.00403347
0040337E |. C1E0 04 |SHL EAX,4
00403381 |. 01D8 |ADD EAX,EBX
00403383 |. 8A1E |MOV BL,BYTE PTR DS:[ESI]
00403385 |. 46 |INC ESI
00403386 |. 84DB |TEST BL,BL
00403388 |.^ 75 D5 \JNZ SHORT mztv.0040335F
0040338A |> 59 POP ECX //跳来这里
0040338B |. 31F6 XOR ESI,ESI //ESI清零
0040338D |> 8932 MOV DWORD PTR DS:[EDX],ESI //EDX=ESI
0040338F |. 5F POP EDI
00403390 |. 5E POP ESI
00403391 |. 5B POP EBX //恢复环境变量
00403392 \. C3 RETN
00409418 |. 8BF0 MOV ESI,EAX //来到这里,ESI=EAX
0040941A |. 833C24 00 CMP DWORD PTR SS:[ESP],0 //ESP是否为0
0040941E |. 74 19 JE SHORT mztv.00409439
00409420 |. 895C24 04 MOV DWORD PTR SS:[ESP+4],EBX
00409424 |. C64424 08 0B MOV BYTE PTR SS:[ESP+8],0B
00409429 |. 8D5424 04 LEA EDX,DWORD PTR SS:[ESP+4]
0040942D |. A1 486B5200 MOV EAX,DWORD PTR DS:[526B48]
00409432 |. 33C9 XOR ECX,ECX
00409434 |. E8 EFF9FFFF CALL mztv.00408E28
00409439 |> 8BC6 MOV EAX,ESI //跳来这里
0040943B |. 83C4 0C ADD ESP,0C //恢复ESP
0040943E |. 5E POP ESI
0040943F |. 5B POP EBX //恢复环境变量
00409440 \. C3 RETN
0051DB3B |. 03F8 ADD EDI,EAX //然后就来到这里
0051DB3D |. 81EF 07870000 SUB EDI,8707
0051DB43 |. 81FF 39300000 CMP EDI,3039
0051DB49 |. 74 0C JE SHORT mztv.0051DB57 ; 关键跳
--------------------------------------------------------------------------------
【总结】
总结一下注册码:
EAX-8707H=3039H
即EAX=B740H
注册码=B740H
转换成10进制:46912
填入,注册成功。
最近分析的几个程序都有这段循环,似乎delphi取位比较都用这个方法。
--------------------------------------------------------------------------------
【版权声明】转载请注明作者以及确保文章完整性,谢谢
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)