|  | 
 
| 播音王 V3.01简单爆破 
 【破文标题】 播音王 V3.01简单爆破分析
 【破解作者】 51Crack[DFCG]
 【作者邮箱】 [email protected]
 【作者主页】 http://www.chinaDFCG.com
 【使用工具】 PEid,W32dasm,Ollydbg
 【破解平台】 WinXP
 【软件名称】 播音王 V3.01
 【下载地址】 http://count.skycn.com/s0ftdownl ... 8181/down/Ancer.exe
 【软件简介】 《播音王》是一个可以定时开机、定时播放音乐(声音)、定时关机的全自动播音软件。跟同类软件相比,其最大的特点是可以控制播放时间的长短,多个播音模板可供选择,节假日(如星期六、日,元旦春节等)不播音,也可以设定倒班及加班日期播音。完全不须人工干预,自动播音。
 适用场合:
 1、学校、部队、公司、工厂等部门用于作息时间的自动控制,可取代传统的电铃、人工广播的作用;
 2、公园、舞厅、商场、酒店、酒吧、网吧、办公室等场所的背景音乐的播放,完全不须人工干预;
 3、车站、码头的自动播音;
 4、个人用于睡前欣赏音乐、起床叫醒;
 5、用于学校的英语或其它教学节目的无线或有线广播;
 6、中小型广播电台的节目播放。
 
 1、定时播放音乐(声音),可播放的音频文件有:WAV、MID、MIDI、MP3;
 2、定时开机(须主板支持)、定时关机;
 3、控制播放声音的时间长短;
 4、设定某些天(如星期六、日,元旦、国庆等)不播音;
 5、设定某些天(如果加班或倒班)播音,并可指定这些天的播音列表;
 6、录音:您可以录制通知,然后在指定的时间自动播出,特别增加了去躁声控制,使录制的声音更加清晰;
 7、MP3文件标记信息查询功能:能够得知关于此MP3文件的标题、歌手等信息;
 8、每天可编排不同的节目;
 9、可以对当天的列表采取自动和手动控制,可以对节目项进行编辑;
 10、当前时间显示;
 11、播放音频文件时长显示;
 12、音量调节控制功能;
 13、可选择播放音频文件或目录下所有音频文件,对于后者,还可以选择顺序播放或随机播放;
 14、对于MP3文件,有初始音量控制功能。
 
 【软件大小】 945 KB
 【加壳方式】 无壳
 【破解声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:)
 --------------------------------------------------------------------------------
 【破解内容】
 
 
 用OD加载,Ctrl+N,找到_mbscmp,回车,右键选择“在每个命令中设置断点”,F9运行!
 (先说明一下,程序试用次数在当前目录下的setup.ini中usenum项,次数为当前字符减'A'的值)
 
 第1次中断如下:
 004016CF   .  68 34D14200   PUSH Ancer.0042D134                      ; /s2 = ""
 004016D4   .  50            PUSH EAX                                 ; |s1
 004016D5   .  FF15 E4154200 CALL DWORD PTR DS:[<&MSVCRT._mbscmp>]    ; \_mbscmp  //中断在这,将上面两部分比较
 004016DB   .  83C4 08       ADD ESP,8
 004016DE   .  85C0          TEST EAX,EAX
 004016E0      0F84 B4010000 JE Ancer.0040189A                                    //不等跳走,跳就跳吧!
 004016E6   .  8BCE          MOV ECX,ESI
 004016E8   .  E8 13140000   CALL Ancer.00402B00
 004016ED   .  85C0          TEST EAX,EAX
 004016EF      0F85 0A030000 JNZ Ancer.004019FF
 004016F5   .  50            PUSH EAX
 
 。。。。。省略。。。。。
 
 0040189A   >  8B86 C8000000 MOV EAX,DWORD PTR DS:[ESI+C8]                        //取转换后的次数
 004018A0   .  C786 DC000000>MOV DWORD PTR DS:[ESI+DC],1
 004018AA   .  85C0          TEST EAX,EAX
 004018AC      0F8C C0060000 JL Ancer.00401F72                                    //<0 或>30 就将天数设为10
 004018B2   .  83F8 1E       CMP EAX,1E
 004018B5      0F8F B7060000 JG Ancer.00401F72
 004018BB   .  6A 00         PUSH 0
 004018BD   .  8D8C24 140100>LEA ECX,DWORD PTR SS:[ESP+114]
 004018C4   .  E8 47260000   CALL Ancer.00403F10
 004018C9   .  8D86 CC000000 LEA EAX,DWORD PTR DS:[ESI+CC]
 004018CF   .  8D8C24 B40100>LEA ECX,DWORD PTR SS:[ESP+1B4]
 004018D6   .  50            PUSH EAX
 004018D7   .  C68424 641300>MOV BYTE PTR SS:[ESP+1364],22
 004018DF   .  E8 5AB00100   CALL <JMP.&MFC42.#858>
 004018E4   .  57            PUSH EDI
 004018E5   .  8D8C24 BC0100>LEA ECX,DWORD PTR SS:[ESP+1BC]
 004018EC   .  E8 4DB00100   CALL <JMP.&MFC42.#858>
 004018F1   .  8B8E C8000000 MOV ECX,DWORD PTR DS:[ESI+C8]
 004018F7   .  898C24 700100>MOV DWORD PTR SS:[ESP+170],ECX
 004018FE   .  8D8C24 100100>LEA ECX,DWORD PTR SS:[ESP+110]
 00401905      E8 C2AF0100   CALL <JMP.&MFC42.#2514>                              //F8跟过这里会中断到下面
 0040190A   .  83F8 02       CMP EAX,2
 0040190D      75 78         JNZ SHORT Ancer.00401987                             //此处跳到主程序执行!
 
 =========================================================================
 第二次中断
 
 :004041F3 6834D14200              push 0042D134                          //xx入栈
 :004041F8 50                      push eax                               //xx入栈
 
 * Reference To: MSVCRT._mbscmp, Ord:0159h                                //比较函数
 |
 :004041F9 FF15E4154200            Call dword ptr [004215E4]              //比较什么,不清楚!
 :004041FF 83C408                  add esp, 00000008
 :00404202 85C0                    test eax, eax
 :00404204 746C                    je 00404272                            //不等就跳
 :00404206 8BCF                    mov ecx, edi
 :00404208 E8F3E8FFFF              call 00402B00
 :0040420D 85C0                    test eax, eax
 :0040420F 7531                    jne 00404242                           //此处可以跳到“成功”处
 :00404211 81C7CC000000            add edi, 000000CC
 :00404217 8D8EA4000000            lea ecx, dword ptr [esi+000000A4]
 :0040421D 57                      push edi
 
 * Reference To: MFC42.Ordinal:035A, Ord:035Ah
 |
 :0040421E E81B870100              Call 0041C93E
 :00404223 53                      push ebx
 :00404224 8D8EA8000000            lea ecx, dword ptr [esi+000000A8]
 
 * Reference To: MFC42.Ordinal:035A, Ord:035Ah
 |
 :0040422A E80F870100              Call 0041C93E
 :0040422F 8B4660                  mov eax, dword ptr [esi+60]            //取转换后的次数
 :00404232 85C0                    test eax, eax
 :00404234 7C76                    jl 004042AC
 :00404236 83F81E                  cmp eax, 0000001E                      //<0 或>30 就将天数设为10
 :00404239 7F71                    jg 004042AC
 :0040423B 8D44240C                lea eax, dword ptr [esp+0C]
 :0040423F 50                      push eax
 :00404240 EB5F                    jmp 004042A1
 
 * Referenced by a (U)nconditional or (C)onditional Jump at Address:
 |:0040420F(C)
 |
 :00404242 81C7CC000000            add edi, 000000CC
 :00404248 8D8EA4000000            lea ecx, dword ptr [esi+000000A4]
 :0040424E 57                      push edi
 
 * Reference To: MFC42.Ordinal:035A, Ord:035Ah
 |
 :0040424F E8EA860100              Call 0041C93E
 :00404254 53                      push ebx
 :00404255 8D8EA8000000            lea ecx, dword ptr [esi+000000A8]
 
 * Reference To: MFC42.Ordinal:035A, Ord:035Ah
 |
 :0040425B E8DE860100              Call 0041C93E
 
 * Possible StringData Ref from Data Obj ->"注册成功!感谢您对我们的支持!"
 |
 :00404260 6820A34200              push 0042A320
 :00404265 8D8EAC000000            lea ecx, dword ptr [esi+000000AC]
 
 * Reference To: MFC42.Ordinal:035C, Ord:035Ch
 |
 :0040426B E8A4860100              Call 0041C914
 :00404270 EB3A                    jmp 004042AC
 * Referenced by a (U)nconditional or (C)onditional Jump at Address:
 |:00404204(C)
 |
 :00404272 8B4660                  mov eax, dword ptr [esi+60]
 :00404275 85C0                    test eax, eax
 :00404277 7C33                    jl 004042AC
 :00404279 83F81E                  cmp eax, 0000001E
 :0040427C 7F2E                    jg 004042AC
 :0040427E 81C7CC000000            add edi, 000000CC
 :00404284 8D8EA4000000            lea ecx, dword ptr [esi+000000A4]
 :0040428A 57                      push edi
 
 * Reference To: MFC42.Ordinal:035A, Ord:035Ah
 |
 :0040428B E8AE860100              Call 0041C93E
 :00404290 53                      push ebx
 :00404291 8D8EA8000000            lea ecx, dword ptr [esi+000000A8]
 
 * Reference To: MFC42.Ordinal:035A, Ord:035Ah
 |
 :00404297 E8A2860100              Call 0041C93E
 :0040429C 8D4C240C                lea ecx, dword ptr [esp+0C]
 :004042A0 51                      push ecx
 
 * Referenced by a (U)nconditional or (C)onditional Jump at Address:
 |:00404240(U)
 |
 :004042A1 8D8EAC000000            lea ecx, dword ptr [esi+000000AC]
 
 * Reference To: MFC42.Ordinal:035A, Ord:035Ah
 |
 :004042A7 E892860100              Call 0041C93E
 
 * Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
 |:00404234(C), :00404239(C), :00404270(U), :00404277(C), :0040427C(C)
 |
 
 * Possible StringData Ref from Data Obj ->"    如想购买此软件,请发Email:support_max@wing"
 ->"softs.com或打电话:13833101100,张先生。软件售"
 ->"价:160元/套。购买后,请将机器码发给我,我会告"
 ->"诉你注册码。每个授权只适用于一台机器,如果想用"
 ->"在多台机器上,请重新购买授权。购买多套,可享受"
 ->"优惠!"
 |
 :004042AC 6830A24200              push 0042A230
 :004042B1 8D8EB0000000            lea ecx, dword ptr [esi+000000B0]
 
 * Reference To: MFC42.Ordinal:035C, Ord:035Ch
 |
 :004042B7 E858860100              Call 0041C914
 :004042BC 6A00                    push 00000000
 :004042BE 8BCE                    mov ecx, esi
 
 * Reference To: MFC42.Ordinal:18BE, Ord:18BEh
 |
 :004042C0 E805880100              Call 0041CACA
 :004042C5 8B4660                  mov eax, dword ptr [esi+60]
 :004042C8 85C0                    test eax, eax
 :004042CA 7504                    jne 004042D0
 :004042CC 6A00                    push 00000000
 :004042CE EB02                    jmp 004042D2
 
 * Referenced by a (U)nconditional or (C)onditional Jump at Address:
 |:004042CA(C)
 |
 :004042D0 6A01                    push 00000001
 
 * Referenced by a (U)nconditional or (C)onditional Jump at Address:
 |:004042CE(U)
 |
 :004042D2 8D4E64                  lea ecx, dword ptr [esi+64]
 
 * Reference To: MFC42.Ordinal:0A52, Ord:0A52h
 |
 :004042D5 E8EA870100              Call 0041CAC4
 :004042DA 8D4C240C                lea ecx, dword ptr [esp+0C]
 :004042DE C744242CFFFFFFFF        mov [esp+2C], FFFFFFFF
 
 * Reference To: MFC42.Ordinal:0320, Ord:0320h
 |
 :004042E6 E875850100              Call 0041C860
 :004042EB 8B4C2424                mov ecx, dword ptr [esp+24]
 :004042EF 5F                      pop edi
 :004042F0 5E                      pop esi
 :004042F1 B801000000              mov eax, 00000001
 :004042F6 5B                      pop ebx
 :004042F7 64890D00000000          mov dword ptr fs:[00000000], ecx
 :004042FE 83C424                  add esp, 00000024
 :00404301 C3                      ret                         //此处返回到系统领空,第1次执行时出现注册对话框
 
 
 可以看出,此处是设置显示字符串,是“成功”还是“剩余多少天”!
 ============================================================================
 
 F9运行还会中断几次,注册框都出来了,也没什么意义了!
 
 重新来过,如果将00401905   CALL <JMP.&MFC42.#2514> 直接nop掉,程序运行正常,不会弹出注册框,但购买菜单中还是显示剩余天数!
 所以决定在4042xx处修改!
 将
 00404204 je 00404272  //nop
 0040420F jne 00404242 //jmp 404242
 
 搞定,收工!!!
 
 
 --------------------------------------------------------------------------------
 【破解总结】
 
 写得比较乱,大家就将就看吧!
 语文学得不好,表达的也不是很清楚!见谅!!
 --------------------------------------------------------------------------------
 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
 >>>>版权所有
 ********************************************************************************************************
 CCHG精品软件论坛,任何人不得利用其进行非法赢利,违者必究。
 本站永久性国际域名http://www.xiwo.net/
 | 
 评分
查看全部评分
 |