飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 8681|回复: 6

[原创] PDF2Word(pdf to word) 2.0.08.29.2006  算法分析

[复制链接]
  • TA的每日心情
    开心
    2024-4-24 14:45
  • 签到天数: 188 天

    [LV.7]常住居民III

    发表于 2006-9-10 20:11:50 | 显示全部楼层 |阅读模式
    【破文标题】PDF2Word(pdf to word) 2.0.08.29.2006  算法分析
    【破文作者】cxx17
    【作者邮箱】[email protected]
    【作者主页】www.126sohu.com
    破解工具】peid、od
    【破解平台】Windows XP SP2
    【软件名称】PDF2Word(pdf to word) 2.0.08.29.2006
    【原版下载】http://www.newhua.com/soft/23655.htm
    【软件大小】3367kb
    【保护方式】用户名+注册码
    【软件简介】PDF2Word(pdf to word)让你可以把文本,图片以及其他内容从pdf文档中输出到word文档中,所以你能够重新编辑pdf内容,PDF2Word    将保存文本,版面和图片到生成的word文档中。PDF2Word(pdf to word)是一个独立的软件,所以你不需要安装Microsoft Word,Adobe Acrobat,甚至 Acrobat Reader来运行它。


    ------------------------------------------------------------------------------------------------
    【破解声明】我是一只小菜鸟,偶得一点心得,愿与大家分享:)
    ------------------------------------------------------------------------------------------------
    【破解过程】
    一、安装软件后,运行注册有错误提示。PEiD查壳为:UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo,用
    od载入,esp定律脱之,修复就能正常运行。
    用PEID检查,软件是Microsoft Visual C++ 6.0编写。



    二、OD载入后,运行软件,提示注册,填入注册名:[email protected]   试练码:9876543210abcdefghij
    下断:bp MessageBoxA,点击注册,程序断在:
    77D504EA >  8BFF            MOV EDI,EDI                              ; 190C2E_.00672D94
    77D504EC    55              PUSH EBP
    77D504ED    8BEC            MOV EBP,ESP
    77D504EF    833D BC04D777 0>CMP DWORD PTR DS:[77D704BC],0
    77D504F6    74 24           JE SHORT USER32.77D5051C

    观察右下脚堆栈窗口,看见:
    0012DFF4  |00405DB6  返回到 190C2E_.00405DB6 来自 USER32.MessageBoxA
    0012DFF8  |000402D6
    0012DFFC  |005DF81C  ASCII "Series number error, please check it and try again."
    0012E000  |00000000
    0012E004  |00000010
    0012E008  |0012E150

    取消断点,Ctrl+G,输入要跟随的表达式 00405DB6,点确定后来到:
    00405DB6    68 FB030000     PUSH 3FB
    00405DBB    56              PUSH ESI
    00405DBC    FF15 E8555B00   CALL DWORD PTR DS:[<&user32.GetDlgItem>] ; USER32.GetDlgItem
    00405DC2    50              PUSH EAX
    00405DC3    FF15 EC555B00   CALL DWORD PTR DS:[<&user32.SetFocus>]   ; USER32.SetFocus
    00405DC9    E9 DD010000     JMP 190C2E_.00405FAB

    往上看:
    00405D48    56              PUSH ESI                                 ; 在这里f2下断
    00405D49    F3:AB           REP STOS DWORD PTR ES:[EDI]
    00405D4B    FF15 DC555B00   CALL DWORD PTR DS:[<&user32.GetDlgItemTe>; USER32.GetDlgItemTextA
    00405D51    68 CC2C6700     PUSH 190C2E_.00672CCC                    ; ASCII "9876543210abcdefghij"
    00405D56    E8 95F8FFFF     CALL 190C2E_.004055F0                    ; 关键call,f7进入
    00405D5B    83C4 04         ADD ESP,4
    00405D5E    85C0            TEST EAX,EAX
    00405D60    74 44           JE SHORT 190C2E_.00405DA6                ; 关键跳,跳就失败
    00405D62    6A 40           PUSH 40
    00405D64    68 7CF85D00     PUSH 190C2E_.005DF87C                    ; ASCII "Thank you."
    00405D69    68 50F85D00     PUSH 190C2E_.005DF850                    ; ASCII "Thank you registered VeryPDF PDF2Word v2.0."
    00405D6E    56              PUSH ESI
    00405D6F    FF15 E4555B00   CALL DWORD PTR DS:[<&user32.MessageBoxA>>; USER32.MessageBoxA
    00405D75    51              PUSH ECX
    00405D76    8BCC            MOV ECX,ESP
    00405D78    896424 10       MOV DWORD PTR SS:[ESP+10],ESP
    00405D7C    68 CC2C6700     PUSH 190C2E_.00672CCC                    ; ASCII "9876543210abcdefghij"
    00405D81    E8 3BD11900     CALL 190C2E_.005A2EC1
    00405D86    E8 35FCFFFF     CALL 190C2E_.004059C0
    00405D8B    83C4 04         ADD ESP,4
    00405D8E    C705 942D6700 0>MOV DWORD PTR DS:[672D94],1
    00405D98    6A 01           PUSH 1
    00405D9A    56              PUSH ESI
    00405D9B    FF15 E0555B00   CALL DWORD PTR DS:[<&user32.EndDialog>]  ; USER32.EndDialog
    00405DA1    E9 05020000     JMP 190C2E_.00405FAB
    00405DA6    6A 10           PUSH 10
    00405DA8    6A 00           PUSH 0
    00405DAA    68 1CF85D00     PUSH 190C2E_.005DF81C                    ; ASCII "Series number error, please check it and try again."
    00405DAF    56              PUSH ESI
    00405DB0    FF15 E4555B00   CALL DWORD PTR DS:[<&user32.MessageBoxA>>; USER32.MessageBoxA
    00405DB6    68 FB030000     PUSH 3FB
    00405DBB    56              PUSH ESI
    00405DBC    FF15 E8555B00   CALL DWORD PTR DS:[<&user32.GetDlgItem>] ; USER32.GetDlgItem
    00405DC2    50              PUSH EAX
    00405DC3    FF15 EC555B00   CALL DWORD PTR DS:[<&user32.SetFocus>]   ; USER32.SetFocus
    00405DC9    E9 DD010000     JMP 190C2E_.00405FAB


    00405DC3    FF15 EC555B00   CALL DWORD PTR DS:[<&user32.SetFocus>]   ; USER32.SetFocus
    00405DC9    E9 DD010000     JMP 190C2E_.00405FAB

    f7进入后来到这里:
    004055F0    83EC 18         SUB ESP,18                               ; f7来到这里
    004055F3    83C9 FF         OR ECX,FFFFFFFF
    004055F6    33C0            XOR EAX,EAX
    004055F8    53              PUSH EBX
    004055F9    56              PUSH ESI
    004055FA    8B7424 24       MOV ESI,DWORD PTR SS:[ESP+24]            ; 假码
    004055FE    57              PUSH EDI
    004055FF    8BFE            MOV EDI,ESI
    00405601    F2:AE           REPNE SCAS BYTE PTR ES:[EDI]
    00405603    F7D1            NOT ECX
    00405605    49              DEC ECX
    00405606    83F9 14         CMP ECX,14                               ; 这里是注册码为数比较 注册码是20位
    00405609    74 07           JE SHORT 190C2E_.00405612                ; 不跳就失败
    0040560B    5F              POP EDI
    0040560C    5E              POP ESI
    0040560D    5B              POP EBX
    0040560E    83C4 18         ADD ESP,18
    00405611    C3              RETN
    00405612    8A06            MOV AL,BYTE PTR DS:[ESI]                 ; 注册码第1位  9
    00405614    8A4E 01         MOV CL,BYTE PTR DS:[ESI+1]               ; 注册码第2位 8
    00405617    8D5424 0C       LEA EDX,DWORD PTR SS:[ESP+C]
    0040561B    32DB            XOR BL,BL
    0040561D    52              PUSH EDX
    0040561E    884424 1C       MOV BYTE PTR SS:[ESP+1C],AL
    00405622    885C24 1D       MOV BYTE PTR SS:[ESP+1D],BL
    00405626    884C24 10       MOV BYTE PTR SS:[ESP+10],CL
    0040562A    885C24 11       MOV BYTE PTR SS:[ESP+11],BL
    0040562E    E8 4E811800     CALL 190C2E_.0058D781
    00405633    8BF8            MOV EDI,EAX
    00405635    8D4424 1C       LEA EAX,DWORD PTR SS:[ESP+1C]
    00405639    50              PUSH EAX
    0040563A    E8 42811800     CALL 190C2E_.0058D781
    0040563F    03F8            ADD EDI,EAX
    00405641    83C4 08         ADD ESP,8
    00405644    83FF 0A         CMP EDI,0A
    00405647    74 09           JE SHORT 190C2E_.00405652                ; 注册码前两位的和是10  不是就出错
    00405649    5F              POP EDI
    0040564A    5E              POP ESI
    0040564B    33C0            XOR EAX,EAX
    0040564D    5B              POP EBX
    0040564E    83C4 18         ADD ESP,18
    00405651    C3              RETN
    00405652    8A4E 12         MOV CL,BYTE PTR DS:[ESI+12]              ; 注册码第19位 i
    00405655    8A56 13         MOV DL,BYTE PTR DS:[ESI+13]              ; 注册码第20位 j
    00405658    8D4424 0C       LEA EAX,DWORD PTR SS:[ESP+C]
    0040565C    884C24 18       MOV BYTE PTR SS:[ESP+18],CL
    00405660    50              PUSH EAX
    00405661    885C24 1D       MOV BYTE PTR SS:[ESP+1D],BL
    00405665    885424 10       MOV BYTE PTR SS:[ESP+10],DL
    00405669    885C24 11       MOV BYTE PTR SS:[ESP+11],BL
    0040566D    E8 0F811800     CALL 190C2E_.0058D781
    00405672    8D4C24 1C       LEA ECX,DWORD PTR SS:[ESP+1C]
    00405676    8BF8            MOV EDI,EAX
    00405678    51              PUSH ECX
    00405679    E8 03811800     CALL 190C2E_.0058D781
    0040567E    03F8            ADD EDI,EAX
    00405680    83C4 08         ADD ESP,8
    00405683    83FF 0E         CMP EDI,0E                               ; 注册码最后两位的和为14
    00405686    74 09           JE SHORT 190C2E_.00405691                ; 不跳就出错
    00405688    5F              POP EDI
    00405689    5E              POP ESI
    0040568A    33C0            XOR EAX,EAX
    0040568C    5B              POP EBX
    0040568D    83C4 18         ADD ESP,18
    00405690    C3              RETN
    00405691    8A56 05         MOV DL,BYTE PTR DS:[ESI+5]               ; 注册码第6位 4
    00405694    8A46 0D         MOV AL,BYTE PTR DS:[ESI+D]               ; 注册码第14位 d
    00405697    8D4C24 0C       LEA ECX,DWORD PTR SS:[ESP+C]
    0040569B    885424 18       MOV BYTE PTR SS:[ESP+18],DL
    0040569F    51              PUSH ECX
    004056A0    885C24 1D       MOV BYTE PTR SS:[ESP+1D],BL
    004056A4    884424 10       MOV BYTE PTR SS:[ESP+10],AL
    004056A8    885C24 11       MOV BYTE PTR SS:[ESP+11],BL
    004056AC    E8 D0801800     CALL 190C2E_.0058D781
    004056B1    8D5424 1C       LEA EDX,DWORD PTR SS:[ESP+1C]
    004056B5    8BF8            MOV EDI,EAX
    004056B7    52              PUSH EDX
    004056B8    E8 C4801800     CALL 190C2E_.0058D781
    004056BD    03F8            ADD EDI,EAX
    004056BF    83C4 08         ADD ESP,8
    004056C2    83FF 09         CMP EDI,9                                ; 第六位和十四位的和为9
    004056C5    74 09           JE SHORT 190C2E_.004056D0                ; 不等就出错
    004056C7    5F              POP EDI
    004056C8    5E              POP ESI
    004056C9    33C0            XOR EAX,EAX
    004056CB    5B              POP EBX
    004056CC    83C4 18         ADD ESP,18
    004056CF    C3              RETN
    004056D0    807E 0C 44      CMP BYTE PTR DS:[ESI+C],44               ; 第13位 c  真码为D
    004056D4    74 09           JE SHORT 190C2E_.004056DF                ; 不是就出错
    004056D6    5F              POP EDI
    004056D7    5E              POP ESI
    004056D8    33C0            XOR EAX,EAX
    004056DA    5B              POP EBX
    004056DB    83C4 18         ADD ESP,18
    004056DE    C3              RETN
    004056DF    8A4E 0E         MOV CL,BYTE PTR DS:[ESI+E]
    004056E2    33C0            XOR EAX,EAX
    004056E4    80F9 43         CMP CL,43                                ; 第15位 e  真码为C
    004056E7    5F              POP EDI
    004056E8    5E              POP ESI
    004056E9    5B              POP EBX
    004056EA    0F94C0          SETE AL
    004056ED    83C4 18         ADD ESP,18
    004056F0    C3              RETN

    以上在调试时不等的地方通过修改寄存器来跳过出错的地方。

    算法总结:
    注册码=20位,
    前二位代数和为10
    第19和20位代数和为14
    第6位和14位代数和为9
    第13位为D
    第15位为C
    其余各位任意

    提供一组注册码:
    用户名:[email protected](任意)
    KEY:9176543210abD5Cfgh95

    VB KeyGen

    +++++++++++
    Private Sub Command1_Click()
    Do
    s1 = Int(Rnd() * 10)
    s2 = Int(Rnd() * 10)
    s3 = Int(Rnd() * 10)
    s4 = Int(Rnd() * 10)
    s5 = Int(Rnd() * 10)
    s6 = Int(Rnd() * 10)
    s7 = Int(Rnd() * 10)
    s8 = Int(Rnd() * 10)
    s9 = Int(Rnd() * 10)
    s10 = Int(Rnd() * 10)
    s11 = Int(Rnd() * 10)
    s12 = Int(Rnd() * 10)
    s13 = "D"
    s14 = Int(Rnd() * 10)
    s15 = "C"
    s16 = Int(Rnd() * 10)
    s17 = Int(Rnd() * 10)
    s18 = Int(Rnd() * 10)
    s19 = Int(Rnd() * 10)
    s20 = Int(Rnd() * 10)
    Loop Until (s1 + s2 = 10) And (s6 + s14 = 9) And (s19 + s20 = 14)
    Text2.Text = s1 & s2 & s3 & s4 & s5 & s6 & s7 & s8 & s9 & s10 & s11 & s12 & s13 & s14 & s15 & s16 & s17 & s18 & s19 & s20

    End Sub


    ------------------------------------------------------------------------------------------------
    【版权声明】本破文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!

    ------------------------------------------------------------------------------------------------
    zhuceji.gif
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2016-1-14 00:02
  • 签到天数: 138 天

    [LV.7]常住居民III

    发表于 2006-9-10 21:44:53 | 显示全部楼层
    不错!!这个软件与固定注册码差不多!!分析的不错!!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-9-10 23:21:54 | 显示全部楼层
    :P :P :P
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-9-11 07:53:03 | 显示全部楼层
    不错,学习。。。。。
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-9-17 19:17:14 | 显示全部楼层
    学习+支持 ~~
    PYG19周年生日快乐!
    wxh9833 该用户已被删除
    发表于 2006-9-18 07:23:10 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-10-7 22:44:10 | 显示全部楼层
    谢谢!支持一把
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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