吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6305|回复: 19
收起左侧

[原创] VeryXXF HXXL Cxxxxxxx v2.0 注册分析+人工计算注册码即可【0.1星级别】!

  [复制链接]
solly 发表于 2019-3-27 11:21
本帖最后由 云在天 于 2019-6-7 13:22 编辑

VeryPDF html Converter 是一个功能强大的 HTML 转换产品。它允许您以不同格式 (如 TIF、TIFF、JPG、JPEG、GIF、PNG、bmp、pcx、TGA、JP2 (JPEG2000)、PNM 等) 创建网页预览或缩略图。它还允许将网页转换为 PDF、PS (PostScript)、WMF、EMF 矢量格式。VeryPDF HTML Converter 不依赖于打印驱动程序, 它可以快速、准确地呈现网页。 VeryPDF HTML Converter 是 HTML 转换器解决方案, 可在 web 服务器上进行设置, 从服务中使用, 从命令行在其他程序中启动。使用 VeryPDF HTML Converter, 如果您处理大量的文件, 您可以进行其他批量转换。
软件来源:  http://www.verypdf.com/app/html-converter/index.html

安装启动软件,软件立即要求注册,当然也可以直接点try先试用,如下:

1.png

产品ID是程序生成的,不可更改。在 Series 栏随便输入一些字符或数字,点OK。

2.png


立即报序列号错误,请检查重试。点“确定”后,再“Try"试用看看。

3.png


软件告诉我们有50次使用机会,”确定“后进入软件主界面:

4.png


下面的工具栏按钮,最后有”register",表示软件还没有注册。
退出软件,使用OD载入,利用超级搜索:“series number error, please check it and try again.”,马上来到下面界面,找到字符串:

5.png


双击来到引用该字符串的代码处:

6.png


汇编代码如下:
[Asm] 纯文本查看 复制代码
00410942   > \8BB424 E80000>mov     esi, dword ptr [esp+E8]                   ;  Case 1 of switch 004108B8
00410949   .  68 C8000000   push    0C8                                       ; /Count = C8 (200.)
0041094E   .  B9 32000000   mov     ecx, 32                                   ; |
00410953   .  33C0          xor     eax, eax                                  ; |
00410955   .  BF 2C164500   mov     edi, 0045162C                             ; |
0041095A   .  68 2C164500   push    0045162C                                  ; |Buffer = winhtml.0045162C
0041095F   .  68 FB030000   push    3FB                                       ; |ControlID = 3FB (1019.)
00410964   .  56            push    esi                                       ; |hWnd
00410965   .  F3:AB         rep     stos dword ptr es:[edi]                   ; |
00410967   .  FF15 74E44300 call    dword ptr [<&USER32.GetDlgItemTextA>]     ; \GetDlgItemTextA
0041096D   .  68 2C164500   push    0045162C                                  ; 先在这里下断,看看下面的call的作用。
00410972   .  E8 49FAFFFF   call    004103C0
00410977   .  83C4 04       add     esp, 4
0041097A   .  85C0          test    eax, eax
0041097C   .  74 38         je      short 004109B6                            ; eax==0时此处跳转去显示“series number error, please check it and try again.”
; 以下是显示注册成功的代码
0041097E   .  6A 40         push    40                                        ; /Style = MB_OK|MB_ICONASTERISK|MB_APPLMODAL
00410980   .  68 8CEF4400   push    0044EF8C                                  ; |Title = "Thanks"
00410985   .  68 54EF4400   push    0044EF54                                  ; |Text = "Thank you purchased the VeryPDF HTML Converter v2.0."
0041098A   .  56            push    esi                                       ; |hOwner
0041098B   .  FF15 A8E54300 call    dword ptr [<&USER32.MessageBoxA>]         ; \MessageBoxA
00410991   .  68 2C164500   push    0045162C
00410996   .  E8 35FBFFFF   call    004104D0
0041099B   .  83C4 04       add     esp, 4
0041099E   .  C705 F8174500>mov     dword ptr [4517F8], 1
004109A8   .  6A 01         push    1                                         ; /Result = 1
004109AA   .  56            push    esi                                       ; |hWnd
004109AB   .  FF15 78E44300 call    dword ptr [<&USER32.EndDialog>]           ; \EndDialog
004109B1   .  E9 79020000   jmp     00410C2F                                  ; 跳转到退出函数
; 以下是显示注册失败的代码
004109B6   >  6A 10         push    10                                        ; /Style = MB_OK|MB_ICONHAND|MB_APPLMODAL
004109B8   .  6A 00         push    0                                         ; |Title = NULL
004109BA   .  68 20EF4400   push    0044EF20                                  ; |series number error, please check it and try again.
004109BF   .  56            push    esi                                       ; |hOwner
004109C0   .  FF15 A8E54300 call    dword ptr [<&USER32.MessageBoxA>]         ; \MessageBoxA
004109C6   .  68 FB030000   push    3FB                                       ; /ControlID = 3FB (1019.)
004109CB   .  56            push    esi                                       ; |hWnd
004109CC   .  FF15 7CE44300 call    dword ptr [<&USER32.GetDlgItem>]          ; \GetDlgItem
004109D2   .  50            push    eax                                       ; /hWnd
004109D3   .  FF15 80E44300 call    dword ptr [<&USER32.SetFocus>]            ; \SetFocus
004109D9   .  E9 51020000   jmp     00410C2F                                  ; 跳转到退出函数



通过简单分析静态代码,可以看到注册码的检查和显示提示都包括在内了,只有一个call 004103C0是调用的程序代码,其它call都是调用的系统代码。因此在 0041096D push 0045162C 处下断点,重新来一次注册操作。按F9让程序运行,再次来到注册界面。我们填入假码:78787878787878787878,点击OK,OD断下程序:


[Asm] 纯文本查看 复制代码
00410942   > \8BB424 E80000>mov     esi, dword ptr [esp+E8]                   ;
00410949   .  68 C8000000   push    0C8                                       ; /Count = C8 (200.)
0041094E   .  B9 32000000   mov     ecx, 32                                   ; |
00410953   .  33C0          xor     eax, eax                                  ; |
00410955   .  BF 2C164500   mov     edi, 0045162C                             ; |ASCII "78787878787878787878"
0041095A   .  68 2C164500   push    0045162C                                  ; |Buffer = winhtml.0045162C
0041095F   .  68 FB030000   push    3FB                                       ; |ControlID = 3FB (1019.)
00410964   .  56            push    esi                                       ; |hWnd
00410965   .  F3:AB         rep     stos dword ptr es:[edi]                   ; |
00410967   .  FF15 74E44300 call    dword ptr [<&USER32.GetDlgItemTextA>]     ; \GetDlgItemTextA
0041096D   .  68 2C164500   push    0045162C                                  ;  ASCII "78787878787878787878"
00410972   .  E8 49FAFFFF   call    004103C0                                  ; 注册码检查函数
00410977   .  83C4 04       add     esp, 4
0041097A   .  85C0          test    eax, eax                                  ; 检查验证结果
0041097C   .  74 38         je      short 004109B6                            ; 当eax=0时,表示注册失败



可以看到,原来那个 0041096D push 0045162C 是保存我们提供的假码的地址。我们F7进入call 004103C0,来到函数内部,并且一边F8,一边分析如下:

[Asm] 纯文本查看 复制代码
004103C0  /$  83EC 18       sub     esp, 18
004103C3  |.  83C9 FF       or      ecx, FFFFFFFF                             ;  初始化计数器为-1
004103C6  |.  33C0          xor     eax, eax                                  ;  返回值,如果下面的长度检测没通过,则返回 eax=0,注册失败
004103C8  |.  53            push    ebx
004103C9  |.  56            push    esi
004103CA  |.  8B7424 24     mov     esi, dword ptr [esp+24]                   ;  假码的保存地址
004103CE  |.  57            push    edi
004103CF  |.  8BFE          mov     edi, esi
004103D1  |.  F2:AE         repne   scas byte ptr es:[edi]                    ;  计算长度的操作,ECX为计数器
004103D3  |.  F7D1          not     ecx
004103D5  |.  49            dec     ecx
004103D6  |.  83F9 14       cmp     ecx, 14                                   ;  如果输入的注册码为20位才可以,否则就直接退出了
004103D9  |.  74 07         je      short 004103E2                            ;  ecx==0x14时,合法有效
004103DB  |.  5F            pop     edi
004103DC  |.  5E            pop     esi
004103DD  |.  5B            pop     ebx
004103DE  |.  83C4 18       add     esp, 18
004103E1  |.  C3            retn
004103E2  |>  8A06          mov     al, byte ptr [esi]                        ;  第1位码
004103E4  |.  8A4E 01       mov     cl, byte ptr [esi+1]                      ;  第2位码
004103E7  |.  8D5424 0C     lea     edx, dword ptr [esp+C]                    ;  edx=esp+0C,下面call 0041D462 的字符参数地址
004103EB  |.  32DB          xor     bl, bl                                    ;  当作 '\0'
004103ED  |.  52            push    edx                                       ;  __atoi() 的参数
004103EE  |.  884424 1C     mov     byte ptr [esp+1C], al                     ;  保存为字符串
004103F2  |.  885C24 1D     mov     byte ptr [esp+1D], bl                     ;  加上'\0',即null结束符
004103F6  |.  884C24 10     mov     byte ptr [esp+10], cl                     ;  保存为字符串, 这时edx=esp+10(原来是edx=esp+0C,中间那个push引起的)
004103FA  |.  885C24 11     mov     byte ptr [esp+11], bl                     ;  加上'\0',即null结束符
004103FE  |.  E8 5FD00000   call    0041D462                                  ;  __atoi(),得到第2个注册码的数字值 eax=8
00410403  |.  8BF8          mov     edi, eax                                  ;  edi=0x08
00410405  |.  8D4424 1C     lea     eax, dword ptr [esp+1C]                   ;  第1个字符的地址
00410409  |.  50            push    eax                                       ;  __atoi() 的参数
0041040A  |.  E8 53D00000   call    0041D462                                  ;  _atoi(),转换第1位码
0041040F  |.  03F8          add     edi, eax                                  ;  求两数的和
00410411  |.  83C4 08       add     esp, 8                                    ;  恢复前面两次push对esp的影响
00410414  |.  83FF 0A       cmp     edi, 0A                                   ;  是否等于10
00410417  |.  74 09         je      short 00410422                            ;  不相等就 GameOver了
00410419  |.  5F            pop     edi
0041041A  |.  5E            pop     esi
0041041B  |.  33C0          xor     eax, eax                                  ;  eax=0,注册失败
0041041D  |.  5B            pop     ebx
0041041E  |.  83C4 18       add     esp, 18
00410421  |.  C3            retn
00410422  |>  8A4E 12       mov     cl, byte ptr [esi+12]                     ;  第19位
00410425  |.  8A56 13       mov     dl, byte ptr [esi+13]                     ;  第20位
00410428  |.  8D4424 0C     lea     eax, dword ptr [esp+C]                    ;  下面的代码与前面的一样,也是求和是否为10
0041042C  |.  884C24 18     mov     byte ptr [esp+18], cl
00410430  |.  50            push    eax
00410431  |.  885C24 1D     mov     byte ptr [esp+1D], bl
00410435  |.  885424 10     mov     byte ptr [esp+10], dl
00410439  |.  885C24 11     mov     byte ptr [esp+11], bl
0041043D  |.  E8 20D00000   call    0041D462
00410442  |.  8D4C24 1C     lea     ecx, dword ptr [esp+1C]
00410446  |.  8BF8          mov     edi, eax
00410448  |.  51            push    ecx
00410449  |.  E8 14D00000   call    0041D462
0041044E  |.  03F8          add     edi, eax                                  ;  求和
00410450  |.  83C4 08       add     esp, 8
00410453  |.  83FF 0A       cmp     edi, 0A                                   ;  也是求和后要等于10
00410456  |.  74 09         je      short 00410461
00410458  |.  5F            pop     edi
00410459  |.  5E            pop     esi
0041045A  |.  33C0          xor     eax, eax                                  ;  eax=0,注册失败
0041045C  |.  5B            pop     ebx
0041045D  |.  83C4 18       add     esp, 18
00410460  |.  C3            retn
00410461  |>  8A56 05       mov     dl, byte ptr [esi+5]                      ;  第6位
00410464  |.  8A46 0D       mov     al, byte ptr [esi+D]                      ;  第14位
00410467  |.  8D4C24 0C     lea     ecx, dword ptr [esp+C]
0041046B  |.  885424 18     mov     byte ptr [esp+18], dl
0041046F  |.  51            push    ecx
00410470  |.  885C24 1D     mov     byte ptr [esp+1D], bl
00410474  |.  884424 10     mov     byte ptr [esp+10], al
00410478  |.  885C24 11     mov     byte ptr [esp+11], bl
0041047C  |.  E8 E1CF0000   call    0041D462
00410481  |.  8D5424 1C     lea     edx, dword ptr [esp+1C]
00410485  |.  8BF8          mov     edi, eax
00410487  |.  52            push    edx
00410488  |.  E8 D5CF0000   call    0041D462
0041048D  |.  03F8          add     edi, eax                                  ;  求和
0041048F  |.  83C4 08       add     esp, 8
00410492  |.  83FF 08       cmp     edi, 8                                    ;  这次是求和要等于8了
00410495  |.  74 09         je      short 004104A0
00410497  |.  5F            pop     edi
00410498  |.  5E            pop     esi
00410499  |.  33C0          xor     eax, eax                                  ;  eax=0,注册失败
0041049B  |.  5B            pop     ebx
0041049C  |.  83C4 18       add     esp, 18
0041049F  |.  C3            retn
004104A0  |>  807E 0C 4D    cmp     byte ptr [esi+C], 4D                      ;  第13位要求为大写的'M'
004104A4  |.  74 09         je      short 004104AF
004104A6  |.  5F            pop     edi
004104A7  |.  5E            pop     esi
004104A8  |.  33C0          xor     eax, eax                                  ;  eax=0,注册失败
004104AA  |.  5B            pop     ebx
004104AB  |.  83C4 18       add     esp, 18
004104AE  |.  C3            retn
004104AF  |>  8A4E 0E       mov     cl, byte ptr [esi+E]                      ;  第15位
004104B2  |.  33C0          xor     eax, eax                                  ;  返回值,先清0
004104B4  |.  80F9 4C       cmp     cl, 4C                                    ;  第15位要求为大写的'L'
004104B7  |.  5F            pop     edi
004104B8  |.  5E            pop     esi
004104B9  |.  5B            pop     ebx
004104BA  |.  0F94C0        sete    al                                        ;  如果cl='L'就设置al=1,表示注册成功,返回eax=1。
004104BD  |.  83C4 18       add     esp, 18
004104C0  \.  C3            retn



跟据上面动态分析,修改假码为 9152p0jie.cnM8Lwww55,再次点OK,提示成功注册,分析结束。
再进入软件,就没有"Register"按钮了,表示软件注册成功了
7.png


总结验证规则如下:

1、注册码的长度为20个字符
2、第1、2、6、14、19、20位必须为数字
3、第1与第2位的数字之和等于10
4、第19与20位的数字之和等于10
5、第6与14位的数字之和等于8
6、第13位为大写字母'M'
7、第15位为大写字母'L'
8、其它位置没什么限制,应该只要是可显示字符就行。


这个注册验证实规则在太简单了,通过口算就可以人工搞定了。

另外,注册信息保存在文件 "C:\WINDOWS\system32\htmltool.ini" 或 "C:\WINDOWS\SysWOW64\htmltool.ini" 中。
所以软件初次启动会触发UAC。



免费评分

参与人数 10威望 +1 吾爱币 +16 热心值 +10 收起 理由
pinkly + 1 + 1 谢谢@Thanks!
Hmily + 1 + 7 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
乐乐同学 + 1 + 1 热心回复!
608岁的老头 + 1 + 1 我很赞同!
dhs347 + 1 + 1 谢谢@Thanks!
林晓初 + 1 + 1 我很赞同!
cbaef + 1 + 1 用心讨论,共获提升!
zhanglei1371 + 1 + 1 用心讨论,共获提升!
朱朱你堕落了 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
coolboys + 1 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

guoyangye 发表于 2019-3-28 18:48
思路很好,昨天按照楼主的思路 破解了一款很小众的内部垄断性软件工具,思路与楼主一样,只不过内部分别使用了先AES加密 后MD5加密两种措施,但是通过 分析代码跑程序两层都得到了完美的破解。对AES的加密原理更加深刻。现在唯一的遗憾是,delphi下的AES加密与其他平台的AES加密出来的结果不一样(部分一样),还在努力解决这个问题
 楼主| solly 发表于 2019-3-27 22:21
本帖最后由 solly 于 2019-3-27 22:23 编辑
wapjltb 发表于 2019-3-27 18:17
请问楼主分析窗口右边的注释是自动生成的吗?

不是的,能自动生成那就不用分析了,OD还没有这么NB,是在OD中右键选“注释”后人为添加的,再与代码一起复制出来的。
看世间百态 发表于 2019-3-27 12:38
欢迎分析讨论交流,吾爱破解论坛有你更精彩!
51cbb 发表于 2019-3-27 14:29
学习了,谢谢!
fxinyi 发表于 2019-3-27 15:14
非常帅气暴力,我喜欢!
BlackCoffee 发表于 2019-3-27 16:20
谢谢@Thanks!
我为52pojie狂 发表于 2019-3-27 16:23
今天没分了,mark一下,改天来送分。
昵称太骚已屏蔽 发表于 2019-3-27 17:09
可惜搬砖工的我完全看不懂
flyingct 发表于 2019-3-27 18:01
看起来简单,学起来难系列
wapjltb 发表于 2019-3-27 18:17
请问楼主分析窗口右边的注释是自动生成的吗?
ytkxw 发表于 2019-3-27 18:46
看不懂系列,还是很感谢,牛!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-17 06:13

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表