好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 pj2020 于 2017-3-24 21:22 编辑
【文章标题】:PDF to Word Converter 3.1 算法分析+注册机[新手作品]
【文章作者】:pj2020
【软件名称】:PDF to Word Converter3.1
【软件大小】:5.81M
【保护方式】:注册码
【下载地址】:http://www.verypdf.com/app/pdf-to-word/index.html
【加壳方式】:无壳
【编写工具】:Microsoft Visual C++6.0
【破解工具】:PEID、OD
【操作平台】:盗版XP3
【作者声明】:只是感兴趣,没有其他目的
【软件简介】用于将PDF电子书转换成WORD办公文档格式.不仅能导出PDF中的文本,还包括图片及其它PDF中的内容。并且,不会因为转换而导致文本段落、图片错位,转换为Word文档后,几乎与PDF原样相同。
【思路方法】:
一、查壳:无壳
二、试用版本只有100次使用机会。试注册:
邮箱:abcde@163.com
假码:1234567890abcdefghij(调试得知注册码必须为20位)
试注册错误提示:Your registration key is wrong, pleasedouble check following issues:……
三、直接进到关键代码:
[Asm] 纯文本查看 复制代码 004066C6 . E8 95F8FFFF call pdf2word.00405F60 ; //F7进入算法CALL
004066CB . 83C4 04 add esp,0x4
004066CE . 85C0 test eax,eax
004066D0 . /74 44 je short pdf2word.00406716 ; //关键跳转,爆破点
[Asm] 纯文本查看 复制代码 00405F60 /$ 83EC 18 sub esp,0x18 ; //F7进到这里
00405F63 |. 83C9 FF or ecx,-0x1
00405F66 |. 33C0 xor eax,eax
00405F68 |. 53 push ebx
00405F69 |. 56 push esi
00405F6A |. 8B7424 24 mov esi,dword ptr ss:[esp+0x24] ; //假码给ESI
00405F6E |. 57 push edi ; pdf2word.007F62B8
00405F6F |. 8BFE mov edi,esi
00405F71 |. F2:AE repne scas byte ptr es:[edi] ; //取第1位ASC码
00405F73 |. F7D1 not ecx
00405F75 |. 49 dec ecx ; //ECX=ECX-1,这才是真正的注册码长度
00405F76 |. 83F9 14 cmp ecx,0x14 ; //注册码须为20位
00405F79 |. 74 07 je short pdf2word.00405F82 ; //此跳必须跳
00405F7B |. 5F pop edi ; pdf2word.007F0039
00405F7C |. 5E pop esi ; pdf2word.007F0039
00405F7D |. 5B pop ebx ; pdf2word.007F0039
00405F7E |. 83C4 18 add esp,0x18
00405F81 |. C3 retn
00405F82 |> 8A06 mov al,byte ptr ds:[esi] ; //取假码第1位ASC码值给al
00405F84 |. 8A4E 01 mov cl,byte ptr ds:[esi+0x1] ; //取假码第2位ASC码值给cl
00405F87 |. 8D5424 0C lea edx,dword ptr ss:[esp+0xC]
00405F8B |. 32DB xor bl,bl
00405F8D |. 52 push edx
00405F8E |. 884424 1C mov byte ptr ss:[esp+0x1C],al
00405F92 |. 885C24 1D mov byte ptr ss:[esp+0x1D],bl
00405F96 |. 884C24 10 mov byte ptr ss:[esp+0x10],cl
00405F9A |. 885C24 11 mov byte ptr ss:[esp+0x11],bl
00405F9E |. E8 B4A61800 call pdf2word.00590657
00405FA3 |. 8BF8 mov edi,eax
00405FA5 |. 8D4424 1C lea eax,dword ptr ss:[esp+0x1C]
00405FA9 |. 50 push eax
00405FAA |. E8 A8A61800 call pdf2word.00590657
00405FAF |. 03F8 add edi,eax ; //eax=00000002,edi=00000009,即第1位+第2位
00405FB1 |. 83C4 08 add esp,0x8
00405FB4 |. 83FF 0B cmp edi,0xB ; //edi=edi+eax=9+2=11,即第1位+第2位=11
00405FB7 |. 74 09 je short pdf2word.00405FC2
00405FB9 |. 5F pop edi ; pdf2word.007F0039
00405FBA |. 5E pop esi ; pdf2word.007F0039
00405FBB |. 33C0 xor eax,eax
00405FBD |. 5B pop ebx ; pdf2word.007F0039
00405FBE |. 83C4 18 add esp,0x18
00405FC1 |. C3 retn
00405FC2 |> 8A4E 12 mov cl,byte ptr ds:[esi+0x12] ; //取假码第19位ASC码值给cl
00405FC5 |. 8A56 13 mov dl,byte ptr ds:[esi+0x13] ; //取假码第20位ASC码值给dl
00405FC8 |. 8D4424 0C lea eax,dword ptr ss:[esp+0xC]
00405FCC |. 884C24 18 mov byte ptr ss:[esp+0x18],cl
00405FD0 |. 50 push eax
00405FD1 |. 885C24 1D mov byte ptr ss:[esp+0x1D],bl
00405FD5 |. 885424 10 mov byte ptr ss:[esp+0x10],dl
00405FD9 |. 885C24 11 mov byte ptr ss:[esp+0x11],bl
00405FDD |. E8 75A61800 call pdf2word.00590657
00405FE2 |. 8D4C24 1C lea ecx,dword ptr ss:[esp+0x1C]
00405FE6 |. 8BF8 mov edi,eax
00405FE8 |. 51 push ecx
00405FE9 |. E8 69A61800 call pdf2word.00590657
00405FEE |. 03F8 add edi,eax
00405FF0 |. 83C4 08 add esp,0x8
00405FF3 |. 83FF 0D cmp edi,0xD ; //算法跟上面一样,即第19位+第20位=13
00405FF6 |. 74 09 je short pdf2word.00406001
00405FF8 |. 5F pop edi ; pdf2word.007F0039
00405FF9 |. 5E pop esi ; pdf2word.007F0039
00405FFA |. 33C0 xor eax,eax
00405FFC |. 5B pop ebx ; pdf2word.007F0039
00405FFD |. 83C4 18 add esp,0x18
00406000 |. C3 retn
00406001 |> 8A56 05 mov dl,byte ptr ds:[esi+0x5] ; //取假码第6位ASC码值给dl
00406004 |. 8A46 0D mov al,byte ptr ds:[esi+0xD] ; //取假码第14位ASC码值给al
00406007 |. 8D4C24 0C lea ecx,dword ptr ss:[esp+0xC]
0040600B |. 885424 18 mov byte ptr ss:[esp+0x18],dl
0040600F |. 51 push ecx
00406010 |. 885C24 1D mov byte ptr ss:[esp+0x1D],bl
00406014 |. 884424 10 mov byte ptr ss:[esp+0x10],al
00406018 |. 885C24 11 mov byte ptr ss:[esp+0x11],bl
0040601C |. E8 36A61800 call pdf2word.00590657
00406021 |. 8D5424 1C lea edx,dword ptr ss:[esp+0x1C]
00406025 |. 8BF8 mov edi,eax
00406027 |. 52 push edx
00406028 |. E8 2AA61800 call pdf2word.00590657
0040602D |. 03F8 add edi,eax
0040602F |. 83C4 08 add esp,0x8
00406032 |. 83FF 09 cmp edi,0x9 ; //算法跟上面一样,即第6位+第14位=9
00406035 |. 74 09 je short pdf2word.00406040
00406037 |. 5F pop edi ; pdf2word.007F0039
00406038 |. 5E pop esi ; pdf2word.007F0039
00406039 |. 33C0 xor eax,eax
0040603B |. 5B pop ebx ; pdf2word.007F0039
0040603C |. 83C4 18 add esp,0x18
0040603F |. C3 retn
00406040 |> 807E 0C 56 cmp byte ptr ds:[esi+0xC],0x56 ; //第13位为大写字母V
00406044 |. 74 09 je short pdf2word.0040604F
00406046 |. 5F pop edi ; pdf2word.007F0039
00406047 |. 5E pop esi ; pdf2word.007F0039
00406048 |. 33C0 xor eax,eax
0040604A |. 5B pop ebx ; pdf2word.007F0039
0040604B |. 83C4 18 add esp,0x18
0040604E |. C3 retn
0040604F |> 807E 0E 33 cmp byte ptr ds:[esi+0xE],0x33 ; //第15位为数字3
00406053 |. 74 09 je short pdf2word.0040605E
00406055 |. 5F pop edi ; pdf2word.007F0039
00406056 |. 5E pop esi ; pdf2word.007F0039
00406057 |. 33C0 xor eax,eax
00406059 |. 5B pop ebx ; pdf2word.007F0039
0040605A |. 83C4 18 add esp,0x18
0040605D |. C3 retn
0040605E |> 8A4E 0F mov cl,byte ptr ds:[esi+0xF] ; //第16位,ds:[007F61FF]=66 ('f')
00406061 |. 33C0 xor eax,eax
00406063 |. 80F9 32 cmp cl,0x32 ; //第16位=2
00406066 |. 5F pop edi ; pdf2word.007F0039
00406067 |. 5E pop esi ; pdf2word.007F0039
00406068 |. 5B pop ebx ; pdf2word.007F0039
00406069 |. 0F94C0 sete al ;
0040606C |. 83C4 18 add esp,0x18
0040606F \. C3 retn
【算法总结】:
注册码必须为20位,与注册名无关(与3.0版本一样)
第1位+第2位=11(与3.0版本一样)
第19位+第20位=13(3.0版本为14)
第6位+第14位=9(与3.0版本一样)
第13位为ASC码为56=V(与3.0版本一样)
第15位为ASC码为33=3(与3.0版本一样)
第16位为ASC码为32=2(3.0版本无这个限制)
一组注册码格式为:47***0******V932**58
注册码保存在安装文件夹里:\VeryPDFPDF2Word v3.1\config.ini
【体会】:
一、本程序虽为非明码比较,但算法部分比较清晰,没有过多的干扰代码,适合吾等新手练习。
二、本软件的3.0版本以前有人破解过,本文分析的是3.1版本。3.0版本的注册方法有些改动。本文是一个新手小白分析思路,仅供如吾等之小白参考。刚刚在本坛注册成功,先奉献这点小小心得。
三、附上一组注册码:
邮箱:pj2020
注册码:29P468Lygs8fV132fN85
PDF to Word Converter 3.1 算法注册机.rar
(79.07 KB, 下载次数: 304)
|
免费评分
-
查看全部评分
|