下载地址:http://www.downreg.com/Software/View-Software-7737.html
软件简介: CoolChm 是一款功能强大的CHM电子书或CHM帮助文件的快速制作工具.
使用CoolChm只需要两个步骤就可以完成CHM的制作:
1、用户指定一个目录,CoolChm会自动导入全部目录及文件;
2、开始制作。
CoolChm非常适合个人和单位制作带有全文检索的网页、集锦、
CHM帮助文件、专业的产品说明、公司介绍、CHM电子书等等。
主要产品功能:
使用HTML,TXT,WORD,ADOBE ACROBT等文件文件自动创建CHM;
WORD转换为HTML文件;
PDF(ADOBE ACROBT)转换为TXT文件;
全自动的目录及文件导入(可以包括子目录);
丰富实用的CHM制作选项帮助用户制作更加个性化的专业CHM电子书或CHM帮助文件。
通过分析导入的文件,自动产生CHM标题和索引,毋须手工添加修改;
破解作者:wofan[OCN]
工具:OD
7天试用
只有一个填写注册码的文本框。但是在帮助里可以看到:产品号548620693
输入注册码876543321
屏幕闪了一下,吓我一跳。
要求重启验证!!!
VC6++,无壳!!!
程序是要读注册码的,用OD载入,可以看到大量读注册表的信息。
看解除使用天数的限制:
::0046034A:: 68 C8714800 PUSH 4871C8 \->: PR
::0046034F:: E8 0C330000 CALL 00463660 \:JMPDOWN >>>: MFC42.DLL:??0CString@@QAE@PBD@Z
::00460354:: 8D4C24 2C LEA ECX,DWORD PTR [ESP+2C]
::00460358:: E8 03A5FEFF CALL 0044A860 \:JMPUP
::0046035D:: 8BF8 MOV EDI,EAX
::0046035F:: 83FF 23 CMP EDI,23
::00460362:: 72 1F JB SHORT 00460383 \:JMPDOWN
::00460364:: 6A 00 PUSH 0
::00460366:: 8D8E E4060000 LEA ECX,DWORD PTR [ESI+6E4]
::0046036C:: E8 51340000 CALL 004637C2 \:JMPDOWN >>>: MFC42.DLL:?ShowWindow@CWnd@@QAEHH@Z
::00460371:: 68 7CF54900 PUSH 49F57C \->: 试用期已过.
……
::0046038C:: 68 C8714800 PUSH 4871C8 \->: PR
::00460391:: E8 CA320000 CALL 00463660 \:JMPDOWN >>>: MFC42.DLL:??0CString@@QAE@PBD@Z
::00460396:: 8D4C24 2C LEA ECX,DWORD PTR [ESP+2C]
::0046039A:: E8 B1A7FEFF CALL 0044AB50 \:JMPUP
::0046039F:: 8D4C24 08 LEA ECX,DWORD PTR [ESP+8] \:BYJMP JmpBy:00460381,
::004603A3:: 8D5424 0C LEA EDX,DWORD PTR [ESP+C]
::004603A7:: 51 PUSH ECX
::004603A8:: 8D4424 14 LEA EAX,DWORD PTR [ESP+14]
::004603AC:: 52 PUSH EDX
::004603AD:: 50 PUSH EAX
::004603AE:: 8BCE MOV ECX,ESI
::004603B0:: E8 8B000000 CALL 00460440 \:JMPDOWN ***通过时间函数比较,获得已使用天数送EAX
::004603B5:: 8B8C24 84000000 MOV ECX,DWORD PTR [ESP+84]
::004603BC:: 83F8 07 CMP EAX,7 ****7就是指那个试用期7天
::004603BF:: 8901 MOV DWORD PTR [ECX],EAX
::004603C1:: 7D 30 JGE SHORT 004603F3 \:JMPDOWN ****跳到试用期已过
::004603C3:: 85C0 TEST EAX,EAX
::004603C5:: 7C 2C JL SHORT 004603F3 \:JMPDOWN ****跳到试用期已过
::004603C7:: 83FF 23 CMP EDI,23 ****如果少于7则还会比较,这里应该是在安装时,设在注册表中的标志,用来防止用户修改系统时间,从而达到免费使用的目的。
::004603CA:: 73 27 JNB SHORT 004603F3 \:JMPDOWN ****如果大于35,自然还是要跳到:试用期已过的地方,
::004603CC:: BA 07000000 MOV EDX,7
::004603D1:: 68 54F54900 PUSH 49F554 \->: days left in your evaluation period.
::004603D6:: 2BD0 SUB EDX,EAX
::004603D8:: 8D4424 38 LEA EAX,DWORD PTR [ESP+38]
::004603DC:: 52 PUSH EDX
::004603DD:: 68 4CF54900 PUSH 49F54C \->: %d %s
::004603E2:: 50 PUSH EAX
::004603E3:: FF15 D8A74600 CALL DWORD PTR [46A7D8] >>>: MSVCRT.DLL:sprintf
::004603E9:: 83C4 10 ADD ESP,10
::004603EC:: 8D4C24 34 LEA ECX,DWORD PTR [ESP+34]
::004603F0:: 51 PUSH ECX
::004603F1:: EB 12 JMP SHORT 00460405 \:JMPDOWN
::004603F3:: 6A 00 PUSH 0 \:BYJMP JmpBy:004603C1,004603C5,004603CA,
::004603F5:: 8D8E E4060000 LEA ECX,DWORD PTR [ESI+6E4]
::004603FB:: E8 C2330000 CALL 004637C2 \:JMPDOWN >>>: MFC42.DLL:?ShowWindow@CWnd@@QAEHH@Z
::00460400:: 68 7CF54900 PUSH 49F57C \->: 试用期已过.
但是实际上如果修改时间是在一个月内,就不会提示过期。因为0x23=35
先看看软件把我填写的注册码放在那儿了:
在填好注册码87654321之后,不要按确定,
bpx RegSetValueExA
设个断点。
按确定!
断在这儿:
0044ABC8 |. FF15 0CA04600 call dword ptr ds:[<&ADVAPI32.RegSetValueExA>] ; \RegSetValueExA
0044ABCE |. 85C0 test eax,eax
0044ABD0 |. 74 02 je short CoolChm.0044ABD4
0044ABD2 |. 33FF xor edi,edi
0044ABD4 |> 8B46 08 mov eax,dword ptr ds:[esi+8]
0044ABD7 |. 85C0 test eax,eax
0044ABD9 |. 75 0B jnz short CoolChm.0044ABE6
0044ABDB |. 8B4424 08 mov eax,dword ptr ss:[esp+8]
0044ABDF |. 50 push eax ; /hKey
0044ABE0 |. FF15 04A04600 call dword ptr ds:[<&ADVAPI32.RegFlushKey>] ; \RegFlushKey
0044ABE6 |> 8B4C24 08 mov ecx,dword ptr ss:[esp+8]
0044ABEA |. 51 push ecx ; /hKey
0044ABEB |. FF15 10A04600 call dword ptr ds:[<&ADVAPI32.RegCloseKey>] ; \RegCloseKey
0044ABF1 |. 8D4C24 1C lea ecx,dword ptr ss:[esp+1C]
0044ABF5 |. C74424 14 FFFFFFF>mov dword ptr ss:[esp+14],-1
0044ABFD |. E8 20890100 call <jmp.&MFC42.#800>
0044AC02 |. 8B4C24 0C mov ecx,dword ptr ss:[esp+C]
0044AC06 |. 8BC7 mov eax,edi
0044AC08 |. 5F pop edi
0044AC09 |. 5E pop esi
0044AC0A |. 64:890D 00000000 mov dword ptr fs:[0],ecx
0044AC11 |. 83C4 10 add esp,10
0044AC14 \. C2 0800 retn 8
看堆栈:
0012DCDC |00375060 ASCII "Software\Microsoft\MsnInfo"
打开注册表,找到它,导出:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\MsnInfo]
"dt"=hex:99,af,1b,dd,10,d3,e2,40,00,00,00,00
"VL"=hex:95,49,b3,20
"Yr"=hex:43,54,90,07
"Mh"=hex:91,53,90,07
"Dy"=hex:85,53,90,07
"PR"=hex:0c,00,00,00
"Sy"=hex:b1,7f,39,05
下断,关于注册表的断点:
bpx RegQueryValueExA
bpx RegSetValueExA
0044A67D |. FF15 00A04600 call dword ptr ds:[<&ADVAPI32.RegQueryValueExA>] ; \RegQueryValueExA
0044A683 |. 85C0 test eax,eax
0044A685 |. 74 18 je short CoolChm.0044A69F
0044A687 |. 8B4C24 34 mov ecx,dword ptr ss:[esp+34]
0044A68B |. 8B5424 38 mov edx,dword ptr ss:[esp+38]
0044A68F |. 8B4424 3C mov eax,dword ptr ss:[esp+3C]
0044A693 |. 894C24 10 mov dword ptr ss:[esp+10],ecx
0044A697 |. 895424 14 mov dword ptr ss:[esp+14],edx
0044A69B |. 894424 18 mov dword ptr ss:[esp+18],eax
0044A69F |> 8B4C24 04 mov ecx,dword ptr ss:[esp+4]
0044A6A3 |. 51 push ecx ; /hKey
0044A6A4 |. FF15 10A04600 call dword ptr ds:[<&ADVAPI32.RegCloseKey>] ; \RegCloseKey
0044A6AA |. DD4424 10 fld qword ptr ss:[esp+10]
****************************************
Stack ss:[0012EDE0]=38552.52699074074 ----------------这个值太熟悉了,是个时间值!!!
内存区:
0012EDE0 99 AF 1B DD 10 D3 E2 40 00 00 00 00 ??逾@....|?. ------注册表中的值,是软件安装时间
***************************************
0044A6AE |. 8B7424 2C mov esi,dword ptr ss:[esp+2C]
0044A6B2 |. 8B5424 18 mov edx,dword ptr ss:[esp+18]
0044A6B6 |. DD1E fstp qword ptr ds:[esi]
0044A6B8 |. 8956 08 mov dword ptr ds:[esi+8],edx
0044A6BB |> 8D4C24 30 lea ecx,dword ptr ss:[esp+30]
0044A6BF |. C74424 24 FFFFFFF>mov dword ptr ss:[esp+24],-1
0044A6C7 |. E8 568E0100 call <jmp.&MFC42.#800>
0044A6CC |. 8B4C24 1C mov ecx,dword ptr ss:[esp+1C]
0044A6D0 |. 8BC6 mov eax,esi
0044A6D2 |. 5E pop esi
0044A6D3 |. 64:890D 00000000 mov dword ptr fs:[0],ecx
0044A6DA |. 83C4 24 add esp,24
0044A6DD \. C2 1400 retn 14
看堆栈:
0012EDB8 0000004C |hKey = 4C
0012EDBC 00375060 |ValueName = "dt" 注册表第一项,这是安装时的时间记录
0012EDC0 00000000 |Reserved = NULL
0012EDC4 0012EDDC |pValueType = 0012EDDC
0012EDC8 0012EDE0 |Buffer = 0012EDE0
0012EDCC 0012EDD8 \pBufSize = 0012EDD8
0012EDD0 0049FB60 CoolChm.0049FB60
读取的值存起来,(请对照从注册表中导出的数据):
0040764E |. 8B08 mov ecx,dword ptr ds:[eax] ------DD1BAF99
00407650 |. 8B50 04 mov edx,dword ptr ds:[eax+4] ------40E2D310
00407653 |. 8B78 08 mov edi,dword ptr ds:[eax+8] ------00000000
0044A8E4 |. FF15 00A04600 call dword ptr ds:[<&ADVAPI32.RegQueryValueExA>] ; \RegQueryValueExA
0044A8EA |. 85C0 test eax,eax
0044A8EC |. 74 08 je short CoolChm.0044A8F6
0044A8EE |. 8B4424 24 mov eax,dword ptr ss:[esp+24]
0044A8F2 |. 894424 04 mov dword ptr ss:[esp+4],eax
0044A8F6 |> 8B4C24 00 mov ecx,dword ptr ss:[esp]
0044A8FA |. 56 push esi
0044A8FB |. 51 push ecx ; /hKey
0044A8FC |. FF15 10A04600 call dword ptr ds:[<&ADVAPI32.RegCloseKey>] ; \RegCloseKey
0044A902 |. 8B7424 08 mov esi,dword ptr ss:[esp+8] -----20B34995-------产品号548620693的十六进制
0044A906 |. 8D4C24 24 lea ecx,dword ptr ss:[esp+24]
0044A90A |. C74424 1C FFFFFFF>mov dword ptr ss:[esp+1C],-1
0044A8E4 |. FF15 00A04600 call dword ptr ds:[<&ADVAPI32.RegQueryValueExA>] ; \RegQueryValueExA
0044A8EA |. 85C0 test eax,eax
0044A8EC |. 74 08 je short CoolChm.0044A8F6
0044A8EE |. 8B4424 24 mov eax,dword ptr ss:[esp+24]
0044A8F2 |. 894424 04 mov dword ptr ss:[esp+4],eax
0044A8F6 |> 8B4C24 00 mov ecx,dword ptr ss:[esp]
0044A8FA |. 56 push esi
0044A8FB |. 51 push ecx ; /hKey
0044A8FC |. FF15 10A04600 call dword ptr ds:[<&ADVAPI32.RegCloseKey>] ; \RegCloseKey
0044A902 |. 8B7424 08 mov esi,dword ptr ss:[esp+8] ------07905443--------
0044A906 |. 8D4C24 24 lea ecx,dword ptr ss:[esp+24]
0044A8E4 |. FF15 00A04600 call dword ptr ds:[<&ADVAPI32.RegQueryValueExA>] ; \RegQueryValueExA
0044A8EA |. 85C0 test eax,eax
0044A8EC |. 74 08 je short CoolChm.0044A8F6
0044A8EE |. 8B4424 24 mov eax,dword ptr ss:[esp+24]
0044A8F2 |. 894424 04 mov dword ptr ss:[esp+4],eax
0044A8F6 |> 8B4C24 00 mov ecx,dword ptr ss:[esp]
0044A8FA |. 56 push esi
0044A8FB |. 51 push ecx ; /hKey
0044A8FC |. FF15 10A04600 call dword ptr ds:[<&ADVAPI32.RegCloseKey>] ; \RegCloseKey
0044A902 |. 8B7424 08 mov esi,dword ptr ss:[esp+8] ------07905391--------
0044A906 |. 8D4C24 24 lea ecx,dword ptr ss:[esp+24]
0044A8E4 |. FF15 00A04600 call dword ptr ds:[<&ADVAPI32.RegQueryValueExA>] ; \RegQueryValueExA
0044A8EA |. 85C0 test eax,eax
0044A8EC |. 74 08 je short CoolChm.0044A8F6
0044A8EE |. 8B4424 24 mov eax,dword ptr ss:[esp+24]
0044A8F2 |. 894424 04 mov dword ptr ss:[esp+4],eax
0044A8F6 |> 8B4C24 00 mov ecx,dword ptr ss:[esp]
0044A8FA |. 56 push esi
0044A8FB |. 51 push ecx ; /hKey
0044A8FC |. FF15 10A04600 call dword ptr ds:[<&ADVAPI32.RegCloseKey>] ; \RegCloseKey
0044A902 |. 8B7424 08 mov esi,dword ptr ss:[esp+8] ----07905385--------
0044A906 |. 8D4C24 24 lea ecx,dword ptr ss:[esp+24]
0044A8E4 |. FF15 00A04600 call dword ptr ds:[<&ADVAPI32.RegQueryValueExA>] ; \RegQueryValueExA
0044A8EA |. 85C0 test eax,eax
0044A8EC |. 74 08 je short CoolChm.0044A8F6
0044A8EE |. 8B4424 24 mov eax,dword ptr ss:[esp+24]
0044A8F2 |. 894424 04 mov dword ptr ss:[esp+4],eax
0044A8F6 |> 8B4C24 00 mov ecx,dword ptr ss:[esp]
0044A8FA |. 56 push esi
0044A8FB |. 51 push ecx ; /hKey
0044A8FC |. FF15 10A04600 call dword ptr ds:[<&ADVAPI32.RegCloseKey>] ; \RegCloseKey
0044A902 |. 8B7424 08 mov esi,dword ptr ss:[esp+8] ------05397FB1--------- 这里就是我的注册码87654321的十六进制了
0044A906 |. 8D4C24 24 lea ecx,dword ptr ss:[esp+24]
0044A90A |. C74424 1C FFFFFFF>mov dword ptr ss:[esp+1C],-1
关键地方来了!!!!!!
00407731 |. 8B4424 10 mov eax,dword ptr ss:[esp+10]
00407735 |. 8B4C24 14 mov ecx,dword ptr ss:[esp+14]
00407739 |. 8B5424 18 mov edx,dword ptr ss:[esp+18]
0040773D |. 55 push ebp
0040773E |. 50 push eax 这里都是刚才读注册表得到的值,Push一下,
0040773F |. 51 push ecx
00407740 |. 52 push edx
00407741 |. 53 push ebx
00407742 |. 8BCE mov ecx,esi
00407744 |. E8 B7020000 call CoolChm.00407A00 -------如此,这里一定要跟进去看看
00407749 |. 8D4C24 5C lea ecx,dword ptr ss:[esp+5C]
0040774D |. 8AD8 mov bl,al -----AL为True,注册成功!!!!
……
004077EC \. C3 retn
*****************如此,这里一定要跟进去看看********************
00407A00 /$ 8B4424 14 mov eax,dword ptr ss:[esp+14] -----20B34995
00407A04 |. 8B4C24 10 mov ecx,dword ptr ss:[esp+10] -----05397FB1
00407A08 |. 35 96539007 xor eax,7905396 ------20B34995 xor 7905396=27231A03 ----这好像一个机器码呀
00407A0D |. 81F1 23816497 xor ecx,97648123 ------05397FB1 xor 97648123=925DFE92 -----这里应该就是我的注册码转换而来的吧!
00407A13 |. 3BC8 cmp ecx,eax
00407A15 |. 0F94C0 sete al -----SetE al即相等就使AL为真True
00407A18 \. C2 1400 retn 14
在这里修改一下ECX中的值,使它与EAX相等,即将925DFE92改为27231A03,就会发现:
注册表中的:"PR"=hex:0c,00,00,00不再读取!!!!
也跳过了:还有多长时间的试用期的提示,没有Nag!!!
好了!
先在注册表制造一个有用的注册信息:
27231A03 xor 97648123=B0479B20
将注册表:
"Sy"=hex:b1,7f,39,05
改为:
"Sy"=hex:20,9B,47,B0
注册成功!!!!
不怕告诉你:
27231A03就是我的C:盘序列号的十六进制呢。
不过这只是在我的电脑中注册成功的哟,你的肯定不行。
注册流程:
产品号:548620693 ----十六进制:20B34995
20B34995 xor 7905396 xor 97648123=B0479B20
B0479B20的十进制形式:2957482784 我的注册码!!!
22:16 2005-7-19
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!