【破文标题】:PDF2Word(pdf to word) 1.6 注册算法分析

【破文作者】:KuNgBiM[DFCG]

【作者邮箱】:gb_1227@163.com

【软件名称】:PDF2Word(pdf to word) 1.6

【软件大小】:628KB

【软件语言】:英文

【软件类别】:国外软件/共享版/编辑软件

【整理时间】:2005-09-07

【开 发 商】:http://www.globalpdf.com/pdf2word/

【下载地址】:http://nj.onlinedown.net/soft/23655.htm

【软件简介】:PDF2Word(pdf to word)让你可以把文本,图片以及其他内容从pdf文档中输出到word文档中,所以你能够重新编辑pdf内容,PDF2Word将保存文本,版面和图片到生成的word文档中。PDF2Word(pdf to word)是一个独立的软件,所以你不需要安装Microsoft Word,Adobe Acrobat,甚至 Acrobat Reader来运行它。 

【保护方式】:注册码 + 启动NAG + 100次数使用限制

【编译语言】:Microsoft Visual C++ 6.0

【调试环境】:WinXP、PEiD、Ollydbg

【破解日期】:2005-09-08

【破解目的】:研究算法分析

【作者声明】:初学Crack,只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!

—————————————————————————————————
【破解过程】:

侦测:用PEiD查壳,无壳,Microsoft Visual C++ 6.0 编译。

试探:运行主程序注册,输入试炼码,确认!程序提示:"Series number error, please check it and try again."

下药:Ollydbg载入主程序,命令下断:bpx MessageBoxA,回车,F9运行,输入试炼信息:

********* 试炼信息 **********

Email:gb_1227@163.com

Registration Key:9876543210

*****************************

00429EEB    FF15 60974400   call dword ptr ds:[<&USER32.EndDialog>]         ; USER32.EndDialog
00429EF1    E9 69020000     jmp pdf2rtf.0042A15F
00429EF6    8BB424 E8000000 mov esi,dword ptr ss:[esp+E8]
00429EFD    68 C8000000     push 0C8
00429F02    B9 32000000     mov ecx,32
00429F07    33C0            xor eax,eax
00429F09    BF ECB64600     mov edi,pdf2rtf.0046B6EC                        ; ASCII "9876543210"
00429F0E    68 ECB64600     push pdf2rtf.0046B6EC                           ; ASCII "9876543210"
00429F13    68 FB030000     push 3FB
00429F18    56              push esi
00429F19    F3:AB           rep stos dword ptr es:[edi]
00429F1B    FF15 5C974400   call dword ptr ds:[<&USER32.GetDlgItemTextA>]   ; USER32.GetDlgItemTextA
00429F21    68 ECB64600     push pdf2rtf.0046B6EC                           ; ASCII "9876543210"
00429F26    E8 F5F7FFFF     call pdf2rtf.00429720                           ; ★算法CALL,F7跟进!★
00429F2B    83C4 04         add esp,4
00429F2E    85C0            test eax,eax
00429F30    74 39           je short pdf2rtf.00429F6B                       ; ★注册验证爆破点★
00429F32    6A 40           push 40
00429F34    68 D0824600     push pdf2rtf.004682D0                           ; ASCII "Thank you registered"
00429F39    68 A4824600     push pdf2rtf.004682A4                           ; ASCII "Thank you registered VeryPDF PDF2Word v1.6."
00429F3E    56              push esi
00429F3F    FF15 64974400   call dword ptr ds:[<&USER32.MessageBoxA>]       ; USER32.MessageBoxA
00429F45    68 ECB64600     push pdf2rtf.0046B6EC                           ; ASCII "9876543210"
00429F4A    56              push esi
00429F4B    E8 40F9FFFF     call pdf2rtf.00429890
00429F50    83C4 08         add esp,8
00429F53    C705 B4B74600 0>mov dword ptr ds:[46B7B4],1
00429F5D    6A 01           push 1
00429F5F    56              push esi
00429F60    FF15 60974400   call dword ptr ds:[<&USER32.EndDialog>]         ; USER32.EndDialog
00429F66    E9 F4010000     jmp pdf2rtf.0042A15F
00429F6B    6A 10           push 10                                         ; 试炼码小于16位则直接“挂”!
00429F6D    6A 00           push 0
00429F6F    68 70824600     push pdf2rtf.00468270                           ; ASCII "Series number error, please check it and try again."
00429F74    56              push esi
00429F75    FF15 64974400   call dword ptr ds:[<&USER32.MessageBoxA>]       ; 这里中断,USER32.MessageBoxA
00429F7B    68 FB030000     push 3FB
00429F80    56              push esi
00429F81    FF15 68974400   call dword ptr ds:[<&USER32.GetDlgItem>]        ; USER32.GetDlgItem
00429F87    50              push eax
00429F88    FF15 6C974400   call dword ptr ds:[<&USER32.SetFocus>]          ; USER32.SetFocus
00429F8E    E9 CC010000     jmp pdf2rtf.0042A15F
00429F93    6A 01           push 1

========================= 跟进 00429F26    E8 F5F7FFFF     call pdf2rtf.00429720 =========================

00429720    83EC 30         sub esp,30
00429723    55              push ebp
00429724    56              push esi
00429725    8B7424 3C       mov esi,dword ptr ss:[esp+3C]                   ; 取试炼码(记为:KEY)ASCII "9876543210"
00429729    57              push edi
0042972A    8A06            mov al,byte ptr ds:[esi]                        ; 取KEY[esi]=KEY[1]
0042972C    8A4E 01         mov cl,byte ptr ds:[esi+1]                      ; 取KEY[esi+1]=KEY[2]
0042972F    8A56 0E         mov dl,byte ptr ds:[esi+E]                      ; 取KEY[esi+E]=KEY[15]
00429732    884424 18       mov byte ptr ss:[esp+18],al
00429736    32C0            xor al,al
00429738    884C24 30       mov byte ptr ss:[esp+30],cl
0042973C    8A4E 0F         mov cl,byte ptr ds:[esi+F]                      ; 取KEY[esi+F]=KEY[16]
0042973F    884424 19       mov byte ptr ss:[esp+19],al                     ; al=0
00429743    884424 31       mov byte ptr ss:[esp+31],al                     ; al=0
00429747    884424 25       mov byte ptr ss:[esp+25],al                     ; al=0
0042974B    884424 0D       mov byte ptr ss:[esp+D],al                      ; al=0
0042974F    8A46 02         mov al,byte ptr ds:[esi+2]                      ; 取KEY[esi+2]=KEY[3]
00429752    3C 24           cmp al,24                                       ; '$'
00429754    885424 24       mov byte ptr ss:[esp+24],dl                     ; dl=KEY[15]
00429758    884C24 0C       mov byte ptr ss:[esp+C],cl                      ; cl=KEY[16]
0042975C    75 52           jnz short pdf2rtf.004297B0                      ; 要求KEY[3]='$',故这里跳则死!
0042975E    8B3D 4C964400   mov edi,dword ptr ds:[<&MSVCRT.atoi>]           ; msvcrt.atoi
00429764    8D5424 0C       lea edx,dword ptr ss:[esp+C]
00429768    52              push edx
00429769    FFD7            call edi
0042976B    8BE8            mov ebp,eax                                     ; eax=atoi(KEY[16])
0042976D    8D4424 1C       lea eax,dword ptr ss:[esp+1C]                   ; KEY[1]
00429771    50              push eax
00429772    FFD7            call edi
00429774    03E8            add ebp,eax                                     ; atoi(KEY[16])+atoi(KEY[1])
00429776    83C4 08         add esp,8
00429779    83FD 0A         cmp ebp,0A                                      ; atoi(KEY[16])+atoi(KEY[1])=0A
0042977C    75 32           jnz short pdf2rtf.004297B0                      ; 这里也不能跳!
0042977E    8D4C24 24       lea ecx,dword ptr ss:[esp+24]                   ; KEY[15]
00429782    51              push ecx
00429783    FFD7            call edi
00429785    8D5424 34       lea edx,dword ptr ss:[esp+34]                   ; KEY[2]
00429789    8BE8            mov ebp,eax
0042978B    52              push edx
0042978C    FFD7            call edi
0042978E    03E8            add ebp,eax
00429790    83C4 08         add esp,8
00429793    83FD 0A         cmp ebp,0A                                      ; atoi(KEY[15])+atoi(KEY[2])=0A
00429796    75 18           jnz short pdf2rtf.004297B0                      ; 这里也不能跳!
00429798    807E 03 24      cmp byte ptr ds:[esi+3],24                      ; 要求KEY[4]='$',故这里跳则死!
0042979C    75 12           jnz short pdf2rtf.004297B0
0042979E    8A4E 05         mov cl,byte ptr ds:[esi+5]                      ; KEY[6]
004297A1    33C0            xor eax,eax
004297A3    80F9 23         cmp cl,23                                       ; 要求KEY[6]='#'
004297A6    5F              pop edi
004297A7    5E              pop esi
004297A8    5D              pop ebp
004297A9    0F94C0          sete al
004297AC    83C4 30         add esp,30
004297AF    C3              retn                                            ; 返回程序

-------------------------------------------------------------------------------------------------------------------------
【算法总结】

注册验证非常简单:

1、注册码长度要求至少为16位,并记为KEY
2、注册码要求 KEY[3]='$'(第3位必须为“$”)
3、注册码要求 KEY[4]='$'(第4位必须为“$”)
4、注册码要求 KEY[6]='#'(第6位必须为“#”)
5、注册码要求 atoi(KEY[16])+atoi(KEY[1])=0A(第16位与第1位的和必须为10)
6、注册码要求 atoi(KEY[15])+atoi(KEY[2])=0A(第15位与第2位的和必须为10)

Email未参加计算,注册码只要符合这个规律即可注册成功。

以规律算出的一组可用注册码:98$$5#3210123421

============================================================================================

【注册信息】:

Email:gb_1227@163.com (任意)

Registration Key:98$$5#3210123421

--------------------------------------------------------------------------------------------


版权所有(C)2005 KuNgBiM[DFCG]         Copyright (C) 2005 KuNgBiM[DFCG]


--------------------------------------------------------------------------------------------
          Cracked By KuNgBiM[DFCG]

                2005-09-08

                01:20:30 AM