首页
论坛
专栏
课程

[原创]CoolChm中文版注册(注册表下断)

2005-7-19 22:34 10184

[原创]CoolChm中文版注册(注册表下断)

2005-7-19 22:34
10184
下载地址: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

[公告][征集寄语] 看雪20周年年会(12.28上海) | 感恩有你,一路同行

最新回复 (7)
shuair 2 2005-7-20 08:04
2
0
支持啊,呵呵,又发新文章了.
问问你是男还是女哈,你的名字蛮吊的。支持啊
ljy3282393 1 2005-7-20 11:12
3
0
支持并学习!
Saver 2005-7-20 11:44
4
0
仔细的看了一遍~
pendan2001 4 2005-7-20 11:57
5
0
不怕告诉你:
27231A03就是我的C:盘序列号的十六进制呢。
不过这只是在我的电脑中注册成功的哟,你的肯定不行。

好搞笑
allex02 2005-7-20 22:25
6
0
楼主分析的好,简单的说就是电脑C盘的卷号(一般是ABCD-EFGH,用dir c:\  /p 的第二行就可以看到,是十六进制数,直接去掉中间的横线即是十六进制数)  和0x97648123 异或,结果转化为十进制即是注册码.

楼主别扁我,我只是把你的文章结果部分精简一下而已。
小申 2005-7-20 23:19
7
0
你太强了,我佩服你,真是古德扬森。
dfui 2005-7-21 18:03
8
0
历害。学习呀。
游客
登录 | 注册 方可回帖
返回