【破解作者】 pmma
【作者邮箱】 [email]lyzhu110@163.com[/email]
【使用工具】 OLLYDBG1.10汉化版
【破解平台】 Win9x/NT/2000/XP
【软件名称】 极光多能闹钟4.0
【软件简介】 极光闹钟是一款个性化的事务提醒软件,结合了一些同类软件的优点。
充分考虑到用户的硬件设置,可支持电脑喇叭响铃,这非常方便没有声卡的用户使用。
这种响铃方式不用担心音箱忘记打开,或者设置好的声音文件已不存在导致的问题。
支持自谱喇叭音乐功能,可以播放您自己编辑好的喇叭歌曲。
新版本4.0增强了重要日期提醒功能,可以按具体日期、
每日、每周、每月、农历生日等不同方式提醒,灵活的提醒方式几乎可满足您所有的提醒需要。
【加壳方式】 TELOCK 0.98
【破解声明】 只是对Crack感兴趣,失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【破解内容】
用FI看看,是TELOCK0.98的壳,手上没有工具,那就自己来,OD载入,选项的异常全关,
按F9运行,出现异常就按SHIFT+F9运行,按SHIFT+F9有20次运行,重新来过,按19次,看堆栈
0012FF58 0012FFE0 指针到下一个 SEH 记录
0012FF5C 004C880B SE 句柄 ××××××××××××××××××××××看到了吗
转到代码窗口在004C880B处设断,
补充:SEH(STRUCTURE EXCEPTION HANDLE)结构化异常处理,发生异常时,
堆栈的ESP里面是指向EXCEPTION_RECORD的指针,ESP+4放的是指向CONTEXT的指针,
一般在返回地址处即CONTEXT处设断点就可以断下来,本例中,按SHIFT+F9有20次会运行,
那么,按SHIFT+F9有19次,看看ESP+4,设断就行了,接着就可以小心的跟踪了,
要注意的是,在某个RET上面,看到ESP是77****(2k,xp),或者BFF****(98,me),
不妨在下一个RET下断,省的掉进系统代码的海里找不着北。 *********书上抄的
今天无聊,补上以前偷懒的东东……
SHIFT+F9断在那里,F7步进,会有花指令,小心的走过,干扰的用NOP填,里面有一个循环,过了这一部分
小心的按F7,到这里
004C8785 00A2 B6400085 ADD BYTE PTR DS:[EDX+850040B6],AH
004C878B F675 08 DIV BYTE PTR SS:[EBP+8]
004C878E C707 33C040C3 MOV DWORD PTR DS:[EDI],C340C033
004C8794 EB 0B JMP SHORT JgClockX.004C87A1
004C8796 C607 E9 MOV BYTE PTR DS:[EDI],0E9
004C8799 47 INC EDI
004C879A 2BDF SUB EBX,EDI
004C879C 83EB 04 SUB EBX,4
004C879F 891F MOV DWORD PTR DS:[EDI],EBX
004C87A1 8DBD FACD4000 LEA EDI,DWORD PTR SS:[EBP+40CDFA]
004C87A7 B9 2C000000 MOV ECX,2C
004C87AC F3:AA REP STOS BYTE PTR ES:[EDI]
004C87AE 66:AB STOS WORD PTR ES:[EDI]
004C87B0 EB 02 JMP SHORT JgClockX.004C87B4
004C87B2 CD 20 INT 20
004C87B4 61 POPAD
004C87B5 FF6424 D0 JMP DWORD PTR SS:[ESP-30] 到OEP了
上面似乎有花指令,有兴趣的看看吧。
DUMP下来,修复输入表
能运行了吧
本来想直接找注册码的,后来看看是VB的,又是重启验证的,下断找了半天也没成,记得小楼大虾说过它是用表单
储存注册按钮的信息的,打算把它的ENABLED变成false的,还是失败了,菜啊,
罢了,去掉NAG就成,最低要求
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0049FD13(U) ××××××××××××××××××××××××这里
|
:0049FE45 89BDE4FDFFFF mov dword ptr [ebp+FFFFFDE4], edi
:0049FE4B 8D95E4FDFFFF lea edx, dword ptr [ebp+FFFFFDE4]
:0049FE51 8D8D54FEFFFF lea ecx, dword ptr [ebp+FFFFFE54]
:0049FE57 FFD6 call esi
:0049FE59 8D8D24FEFFFF lea ecx, dword ptr [ebp+FFFFFE24]
:0049FE5F 51 push ecx
:0049FE60 8D9534FEFFFF lea edx, dword ptr [ebp+FFFFFE34]
:0049FE66 52 push edx
:0049FE67 8D8544FEFFFF lea eax, dword ptr [ebp+FFFFFE44]
:0049FE6D 50 push eax
:0049FE6E 6A40 push 00000040
:0049FE70 8D8D54FEFFFF lea ecx, dword ptr [ebp+FFFFFE54]
:0049FE76 51 push ecx
* Reference To: msvbvm60.rtcMsgBox, Ord:0253h
|
:0049FE77 FF15E0104000 Call dword ptr [004010E0]
:0049FE7D 8BC8 mov ecx, eax
下断rtcMsgBox,断下返回后,到这里0049FE7D,再往上面看,是0049FD13 调用的,上面又一个je呵呵,找到了
* Reference To: msvbvm60.__vbaFreeVarList, Ord:00F5h
|
:0049FCAF 8B1D44104000 mov ebx, dword ptr [00401044]
:0049FCB5 FFD3 call ebx
:0049FCB7 83C40C add esp, 0000000C
:0049FCBA 6683BD8CFDFFFF00 cmp word ptr [ebp+FFFFFD8C], 0000
:0049FCC2 7454 je 0049FD18 ××××××××××爆破点1
:0049FCC4 B904000280 mov ecx, 80020004
:0049FCC9 898D2CFEFFFF mov dword ptr [ebp+FFFFFE2C], ecx
:0049FCCF B80A000000 mov eax, 0000000A
:0049FCD4 898524FEFFFF mov dword ptr [ebp+FFFFFE24], eax
:0049FCDA 898D3CFEFFFF mov dword ptr [ebp+FFFFFE3C], ecx
:0049FCE0 898534FEFFFF mov dword ptr [ebp+FFFFFE34], eax
* Possible StringData Ref from Data Obj ->"桁?秀:y"
|
:0049FCE6 C785DCFDFFFF98184100 mov dword ptr [ebp+FFFFFDDC], 00411898
:0049FCF0 BF08000000 mov edi, 00000008
:0049FCF5 89BDD4FDFFFF mov dword ptr [ebp+FFFFFDD4], edi
:0049FCFB 8D95D4FDFFFF lea edx, dword ptr [ebp+FFFFFDD4]
:0049FD01 8D8D44FEFFFF lea ecx, dword ptr [ebp+FFFFFE44]
:0049FD07 FFD6 call esi
* Possible StringData Ref from Data Obj ->"^?^&a"?`?(u,go?N?]?6"
|
:0049FD09 C785ECFDFFFFD0194100 mov dword ptr [ebp+FFFFFDEC], 004119D0
:0049FD13 E92D010000 jmp 0049FE45 它调用的
――――――――――――――――――――――――――――――――――――――――――――――――
关键看过来:
OD动态调试看看
0049FCBA 66:83BD 8CFDF>CMP WORD PTR SS:[EBP-274],0
0049FCC2 . 74 54 JE SHORT JgClockX.0049FD18 *************刚才的爆破点1,一定要跳(1)
0049FCC4 . B9 04000280 MOV ECX,80020004
0049FCC9 . 898D 2CFEFFFF MOV DWORD PTR SS:[EBP-1D4],ECX
0049FCCF . B8 0A000000 MOV EAX,0A
0049FCD4 . 8985 24FEFFFF MOV DWORD PTR SS:[EBP-1DC],EAX
0049FCDA . 898D 3CFEFFFF MOV DWORD PTR SS:[EBP-1C4],ECX
0049FCE0 . 8985 34FEFFFF MOV DWORD PTR SS:[EBP-1CC],EAX
0049FCE6 . C785 DCFDFFFF>MOV DWORD PTR SS:[EBP-224],JgClockX.00411898
0049FCF0 . BF 08000000 MOV EDI,8
0049FCF5 . 89BD D4FDFFFF MOV DWORD PTR SS:[EBP-22C],EDI
0049FCFB . 8D95 D4FDFFFF LEA EDX,DWORD PTR SS:[EBP-22C]
0049FD01 . 8D8D 44FEFFFF LEA ECX,DWORD PTR SS:[EBP-1BC]
0049FD07 . FFD6 CALL ESI
0049FD09 . C785 ECFDFFFF>MOV DWORD PTR SS:[EBP-214],JgClockX.004119D0
0049FD13 . E9 2D010000 JMP JgClockX.0049FE45
0049FD18 > 8D85 54FEFFFF LEA EAX,DWORD PTR SS:[EBP-1AC]
0049FD1E . 50 PUSH EAX
0049FD1F . FF15 00134000 CALL DWORD PTR DS:[<&msvbvm60.rtcGetPresentDa>; msvbvm60.rtcGetPresentDate
0049FD25 . C785 ECFDFFFF>MOV DWORD PTR SS:[EBP-214],JgClockX.004119B4 ; UNICODE "yyyy-mm-dd"
0049FD2F . C785 E4FDFFFF>MOV DWORD PTR SS:[EBP-21C],8
0049FD39 . 8D95 E4FDFFFF LEA EDX,DWORD PTR SS:[EBP-21C]
0049FD3F . 8D8D 44FEFFFF LEA ECX,DWORD PTR SS:[EBP-1BC]
0049FD45 . FFD6 CALL ESI
0049FD47 . 6A 01 PUSH 1
0049FD49 . 6A 01 PUSH 1
0049FD4B . 8D8D 44FEFFFF LEA ECX,DWORD PTR SS:[EBP-1BC]
0049FD51 . 51 PUSH ECX
0049FD52 . 8D95 54FEFFFF LEA EDX,DWORD PTR SS:[EBP-1AC]
0049FD58 . 52 PUSH EDX
0049FD59 . FF15 E4124000 CALL DWORD PTR DS:[<&msvbvm60.rtcBstrFromForm>;
0049FD5F . 8BD0 MOV EDX,EAX 取得当前日期,改内存就行了(2)
0049FD61 . 8D8D 84FEFFFF LEA ECX,DWORD PTR SS:[EBP-17C]
0049FD67 . FFD7 CALL EDI
0049FD69 . 50 PUSH EAX
0049FD6A . FF15 D4114000 CALL DWORD PTR DS:[<&msvbvm60.__vbaDateS>; msvbvm60.__vbaDateStr
0049FD70 . DD9D 84FCFFFF FSTP QWORD PTR SS:[EBP-37C]
0049FD76 . A1 CCF04B00 MOV EAX,DWORD PTR DS:[4BF0CC]
0049FD7B . 50 PUSH EAX ; 当前时间,改内存就行了(3)
0049FD7C . FF15 D4114000 CALL DWORD PTR DS:[<&msvbvm60.__vbaDateS>; msvbvm60.__vbaDateStr
0049FD82 . DCAD 84FCFFFF FSUBR QWORD PTR SS:[EBP-37C]
0049FD88 . DFE0 FSTSW AX
0049FD8A . A8 0D TEST AL,0D
0049FD8C . 0F85 E9060000 JNZ JgClockX.004A047B
0049FD92 . FF15 18114000 CALL DWORD PTR DS:[<&msvbvm60.__vbaFpR8>>; msvbvm60.__vbaFpR8
0049FD98 . DC1D B0134000 FCOMP QWORD PTR DS:[4013B0]
0049FD9E . DFE0 FSTSW AX
0049FDA0 . F6C4 01 TEST AH,1
0049FDA3 . 74 07 JE SHORT JgClockX.0049FDAC
0049FDA5 . B8 01000000 MOV EAX,1
0049FDAA . EB 02 JMP SHORT JgClockX.0049FDAE
0049FDAC > 33C0 XOR EAX,EAX
0049FDAE > 33C9 XOR ECX,ECX
0049FDB0 . 66:390D F4F04>CMP WORD PTR DS:[4BF0F4],CX
0049FDB7 . 0F94C1 SETE CL
0049FDBA . F7D9 NEG ECX
0049FDBC . F7D8 NEG EAX
0049FDBE . 23C8 AND ECX,EAX
0049FDC0 . 66:898D 8CFDF>MOV WORD PTR SS:[EBP-274],CX
0049FDC7 . 8D8D 84FEFFFF LEA ECX,DWORD PTR SS:[EBP-17C]
0049FDCD . FF15 1C134000 CALL DWORD PTR DS:[<&msvbvm60.__vbaFreeS>; msvbvm60.__vbaFreeStr
0049FDD3 . 8D95 44FEFFFF LEA EDX,DWORD PTR SS:[EBP-1BC]
0049FDD9 . 52 PUSH EDX
0049FDDA . 8D85 54FEFFFF LEA EAX,DWORD PTR SS:[EBP-1AC]
0049FDE0 . 50 PUSH EAX
0049FDE1 . 6A 02 PUSH 2
0049FDE3 . FFD3 CALL EBX
0049FDE5 . 83C4 0C ADD ESP,0C
0049FDE8 . 66:83BD 8CFDF>CMP WORD PTR SS:[EBP-274],0
0049FDF0 . 0F84 04010000 JE JgClockX.0049FEFA ; 检验有没有爆破的
0049FDF6 . B9 04000280 MOV ECX,80020004
0049FDFB . 898D 2CFEFFFF MOV DWORD PTR SS:[EBP-1D4],ECX
0049FE01 . B8 0A000000 MOV EAX,0A
0049FE06 . 8985 24FEFFFF MOV DWORD PTR SS:[EBP-1DC],EAX
0049FE0C . 898D 3CFEFFFF MOV DWORD PTR SS:[EBP-1C4],ECX
0049FE12 . 8985 34FEFFFF MOV DWORD PTR SS:[EBP-1CC],EAX
0049FE18 . C785 DCFDFFFF>MOV DWORD PTR SS:[EBP-224],JgClockX.0041>
0049FE22 . BF 08000000 MOV EDI,8
0049FE27 . 89BD D4FDFFFF MOV DWORD PTR SS:[EBP-22C],EDI
0049FE2D . 8D95 D4FDFFFF LEA EDX,DWORD PTR SS:[EBP-22C]
0049FE33 . 8D8D 44FEFFFF LEA ECX,DWORD PTR SS:[EBP-1BC]
0049FE39 . FFD6 CALL ESI
0049FE3B . C785 ECFDFFFF>MOV DWORD PTR SS:[EBP-214],JgClockX.0041>
0049FE45 > 89BD E4FDFFFF MOV DWORD PTR SS:[EBP-21C],EDI
0049FE4B . 8D95 E4FDFFFF LEA EDX,DWORD PTR SS:[EBP-21C]
0049FE51 . 8D8D 54FEFFFF LEA ECX,DWORD PTR SS:[EBP-1AC]
0049FE57 . FFD6 CALL ESI
0049FE59 . 8D8D 24FEFFFF LEA ECX,DWORD PTR SS:[EBP-1DC]
0049FE5F . 51 PUSH ECX
0049FE60 . 8D95 34FEFFFF LEA EDX,DWORD PTR SS:[EBP-1CC]
0049FE66 . 52 PUSH EDX
0049FE67 . 8D85 44FEFFFF LEA EAX,DWORD PTR SS:[EBP-1BC]
0049FE6D . 50 PUSH EAX
0049FE6E . 6A 40 PUSH 40
0049FE70 . 8D8D 54FEFFFF LEA ECX,DWORD PTR SS:[EBP-1AC]
0049FE76 . 51 PUSH ECX
0049FE77 . FF15 E0104000 CALL DWORD PTR DS:[<&msvbvm60.rtcMsgBox>>; msvbvm60.rtcMsgBox
0049FE7D . 8BC8 MOV ECX,EAX
0049FE7F . FF15 6C114000 CALL DWORD PTR DS:[<&msvbvm60.__vbaI2I4>>; msvbvm60.__vbaI2I4
0049FE85 . 8D95 24FEFFFF LEA EDX,DWORD PTR SS:[EBP-1DC]
0049FE8B . 52 PUSH EDX
0049FE8C . 8D85 34FEFFFF LEA EAX,DWORD PTR SS:[EBP-1CC]
0049FE92 . 50 PUSH EAX
0049FE93 . 8D8D 44FEFFFF LEA ECX,DWORD PTR SS:[EBP-1BC]
0049FE99 . 51 PUSH ECX
0049FE9A . 8D95 54FEFFFF LEA EDX,DWORD PTR SS:[EBP-1AC]
0049FEA0 . 52 PUSH EDX
0049FEA1 . 6A 04 PUSH 4
0049FEA3 . FFD3 CALL EBX
0049FEA5 > 83C4 14 ADD ESP,14
0049FEA8 > 8B7D 08 MOV EDI,DWORD PTR SS:[EBP+8]
0049FEAB . 8B07 MOV EAX,DWORD PTR DS:[EDI]
0049FEAD . 57 PUSH EDI
0049FEAE . FF90 10030000 CALL DWORD PTR DS:[EAX+310]
0049FEB4 . 50 PUSH EAX
0049FEB5 . 8D8D 70FEFFFF LEA ECX,DWORD PTR SS:[EBP-190]
0049FEBB . 51 PUSH ECX
0049FEBC . FF15 D8104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaObjSe>; msvbvm60.__vbaObjSet
0049FEC2 . 8BF0 MOV ESI,EAX
0049FEC4 . 8B16 MOV EDX,DWORD PTR DS:[ESI]
0049FEC6 . 8B47 3C MOV EAX,DWORD PTR DS:[EDI+3C]
0049FEC9 . 50 PUSH EAX
0049FECA . 56 PUSH ESI
0049FECB . FF92 A4000000 CALL DWORD PTR DS:[EDX+A4]
0049FED1 . DBE2 FCLEX
0049FED3 . 85C0 TEST EAX,EAX
0049FED5 . 7D 12 JGE SHORT JgClockX.0049FEE9
0049FED7 . 68 A4000000 PUSH 0A4
0049FEDC . 68 2C134100 PUSH JgClockX.0041132C
0049FEE1 . 56 PUSH ESI
0049FEE2 . 50 PUSH EAX
0049FEE3 . FF15 A8104000 CALL DWORD PTR DS:[<&msvbvm60.__vbaHresu>; msvbvm60.__vbaHresultCheckObj
0049FEE9 > 8D8D 70FEFFFF LEA ECX,DWORD PTR SS:[EBP-190]
0049FEEF . FF15 20134000 CALL DWORD PTR DS:[<&msvbvm60.__vbaFreeO>; msvbvm60.__vbaFreeObj
0049FEF5 . E9 92040000 JMP JgClockX.004A038C
0049FEFA > 8D85 54FEFFFF LEA EAX,DWORD PTR SS:[EBP-1AC]
0049FF00 . 50 PUSH EAX
0049FF01 . FF15 00134000 CALL DWORD PTR DS:[<&msvbvm60.rtcGetPres>; msvbvm60.rtcGetPresentDate
0049FF07 . C785 ECFDFFFF>MOV DWORD PTR SS:[EBP-214],JgClockX.0041>; UNICODE "yyyy-mm-dd"
0049FF11 . C785 E4FDFFFF>MOV DWORD PTR SS:[EBP-21C],8
0049FF1B . 8D95 E4FDFFFF LEA EDX,DWORD PTR SS:[EBP-21C]
0049FF21 . 8D8D 44FEFFFF LEA ECX,DWORD PTR SS:[EBP-1BC]
0049FF27 . FFD6 CALL ESI
0049FF29 . 6A 01 PUSH 1
0049FF2B . 6A 01 PUSH 1
0049FF2D . 8D8D 44FEFFFF LEA ECX,DWORD PTR SS:[EBP-1BC]
0049FF33 . 51 PUSH ECX
0049FF34 . 8D95 54FEFFFF LEA EDX,DWORD PTR SS:[EBP-1AC]
0049FF3A . 52 PUSH EDX
0049FF3B . FF15 E4124000 CALL DWORD PTR DS:[<&msvbvm60.rtcBstrFro>; msvbvm60.rtcBstrFromFormatVar
0049FF41 . 8BD0 MOV EDX,EAX ; 当前时间,改内存就行了(4)
0049FF43 . 8D8D 84FEFFFF LEA ECX,DWORD PTR SS:[EBP-17C]
0049FF49 . FFD7 CALL EDI
0049FF4B . 50 PUSH EAX
0049FF4C . FF15 D4114000 CALL DWORD PTR DS:[<&msvbvm60.__vbaDateS>; msvbvm60.__vbaDateStr
0049FF52 . DD9D 7CFCFFFF FSTP QWORD PTR SS:[EBP-384]
0049FF58 . A1 CCF04B00 MOV EAX,DWORD PTR DS:[4BF0CC]
0049FF5D . 50 PUSH EAX
0049FF5E . FF15 D4114000 CALL DWORD PTR DS:[<&msvbvm60.__vbaDateS>; msvbvm60.__vbaDateStr
0049FF64 . DCAD 7CFCFFFF FSUBR QWORD PTR SS:[EBP-384]
0049FF6A . DFE0 FSTSW AX
0049FF6C . A8 0D TEST AL,0D
0049FF6E . 0F85 07050000 JNZ JgClockX.004A047B
功力太浅,注册码找不出来了,只能爆破。
以上4个地方爆破就完成了,用SMC了,1简单,234可以先jmp到空地址,再在空地址上修改内存,具体自己动手实现吧:P
保险点就用工具加个SECTION,代码放在那里,234可以先JMP到那里
今天帮朋友修硬盘,结果中午应该完成的到晚上才搞定……
--------------------------------------------------------------------------------
【破解总结】
功能是没有限制了,但美中不足的是右键的下拉菜单里面注册一项还是亮的,我不会了
-------------------------------------------------------------------------------------------------
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课