cxx17 发表于 2006-9-10 20:11:50

PDF2Word(pdf to word) 2.0.08.29.2006  算法分析

【破文标题】PDF2Word(pdf to word) 2.0.08.29.2006  算法分析
【破文作者】cxx17
【作者邮箱】cxx17@126.com
【作者主页】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载入后,运行软件,提示注册,填入注册名:cxx17@126.com   试练码: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:,0
77D504F6    74 24         JE SHORT USER32.77D5051C

观察右下脚堆栈窗口,看见:
0012DFF4|00405DB6返回到 190C2E_.00405DB6 来自 USER32.MessageBoxA
0012DFF8|000402D6
0012DFFC|005DF81CASCII "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:
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
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:,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:            ; 假码
004055FE    57            PUSH EDI
004055FF    8BFE            MOV EDI,ESI
00405601    F2:AE         REPNE SCAS BYTE PTR ES:
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:               ; 注册码第1位9
00405614    8A4E 01         MOV CL,BYTE PTR DS:               ; 注册码第2位 8
00405617    8D5424 0C       LEA EDX,DWORD PTR SS:
0040561B    32DB            XOR BL,BL
0040561D    52            PUSH EDX
0040561E    884424 1C       MOV BYTE PTR SS:,AL
00405622    885C24 1D       MOV BYTE PTR SS:,BL
00405626    884C24 10       MOV BYTE PTR SS:,CL
0040562A    885C24 11       MOV BYTE PTR SS:,BL
0040562E    E8 4E811800   CALL 190C2E_.0058D781
00405633    8BF8            MOV EDI,EAX
00405635    8D4424 1C       LEA EAX,DWORD PTR SS:
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:            ; 注册码第19位 i
00405655    8A56 13         MOV DL,BYTE PTR DS:            ; 注册码第20位 j
00405658    8D4424 0C       LEA EAX,DWORD PTR SS:
0040565C    884C24 18       MOV BYTE PTR SS:,CL
00405660    50            PUSH EAX
00405661    885C24 1D       MOV BYTE PTR SS:,BL
00405665    885424 10       MOV BYTE PTR SS:,DL
00405669    885C24 11       MOV BYTE PTR SS:,BL
0040566D    E8 0F811800   CALL 190C2E_.0058D781
00405672    8D4C24 1C       LEA ECX,DWORD PTR SS:
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:               ; 注册码第6位 4
00405694    8A46 0D         MOV AL,BYTE PTR DS:               ; 注册码第14位 d
00405697    8D4C24 0C       LEA ECX,DWORD PTR SS:
0040569B    885424 18       MOV BYTE PTR SS:,DL
0040569F    51            PUSH ECX
004056A0    885C24 1D       MOV BYTE PTR SS:,BL
004056A4    884424 10       MOV BYTE PTR SS:,AL
004056A8    885C24 11       MOV BYTE PTR SS:,BL
004056AC    E8 D0801800   CALL 190C2E_.0058D781
004056B1    8D5424 1C       LEA EDX,DWORD PTR SS:
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:,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:
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
其余各位任意

提供一组注册码:
用户名:cxx17@126.com(任意)
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


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

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

bfqyygy 发表于 2006-9-10 21:44:53

不错!!这个软件与固定注册码差不多!!分析的不错!!

快雪时晴 发表于 2006-9-10 23:21:54

:P :P :P

caterpilla 发表于 2006-9-11 07:53:03

不错,学习。。。。。

matin 发表于 2006-9-17 19:17:14

学习+支持 ~~

wxh9833 发表于 2006-9-18 07:23:10

hbgyz2003 发表于 2006-10-7 22:44:10

谢谢!支持一把
页: [1]
查看完整版本: PDF2Word(pdf to word) 2.0.08.29.2006  算法分析