- UID
- 28352
注册时间2007-2-21
阅读权限40
最后登录1970-1-1
独步武林
TA的每日心情 | 开心 2024-5-1 14:44 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
【破文标题】Ap Document To PDF V2.1算法分析
【破文作者】tianxj
【作者邮箱】[email protected]
【作者主页】WwW.ChiNaPYG.CoM
【破解工具】PEiD,OD
【破解平台】D-Windows XP sp2
【软件名称】Ap Document To PDF V2.1
【软件大小】1.3 MB
【软件语言】英文
【软件类别】国外软件 / 共享软件 / 文字处理
【更新时间】2007-01-18
【原版下载】自己找一下
【保护方式】注册码
【软件简介】文档转换工具。可以将你的文档批量转换成可搜索的PDF文件。允许将任何windows应用程序的文档转换成上百种文件类型,包括可搜索的PDF, DOC, TIFF, JPEG, RTF, HTML等等。只要应用程序支持打印功能,就能转换成PDF文档。对于PDF文档,甚至提供了多种选项:字体嵌入、分辨率、页面尺寸、文档信息、安全书签、自动链接、多语言等。是制作专业级PDF文档的最佳选择。
Picture To Video Converter图片视频转换器的应用被设计为一个易于使用的工具,加入图片一起视频过渡效果。
【破解声明】我是一只小菜鸟,偶得一点心得,愿与大家分享:)
--------------------------------------------------------------
【破解内容】
--------------------------------------------------------------
**************************************************************
一、运行程序,进行注册,输入错误的注册信息进行检测,有提示信息
"Series number error,please check it and try again."
**************************************************************
二、用PEiD对ApDocToPDF.exe查壳,为 ASPack 2.12 -> Alexey Solodovnikov
**************************************************************
三、带壳调试,运行OD,打开ApDocToPDF.exe,输入注册信息,F12暂停,alt+K
调用堆栈 , 项目 14
地址=0012F0D8
堆栈=00409317
程序过程 / 参数=? ApDocToP.004C22F8
调用来自=ApDocToP.00409312
结构=0012F0D4
==============================================================- 004091E4 55 PUSH EBP
- 004091E5 8BEC MOV EBP, ESP
- 004091E7 83C4 D0 ADD ESP, -30
- 004091EA 53 PUSH EBX
- 004091EB 8BD8 MOV EBX, EAX
- 004091ED B8 3C5C4C00 MOV EAX, ApDocToP.004C5C3C
- 004091F2 E8 FDB00A00 CALL ApDocToP.004B42F4
- 004091F7 66:C745 E4 1400 MOV WORD PTR [EBP-1C], 14
- 004091FD 33D2 XOR EDX, EDX
- 004091FF 8955 FC MOV DWORD PTR [EBP-4], EDX
- 00409202 8D55 FC LEA EDX, DWORD PTR [EBP-4]
- 00409205 FF45 F0 INC DWORD PTR [EBP-10]
- 00409208 8B83 F4020000 MOV EAX, DWORD PTR [EBX+2F4]
- 0040920E E8 75E40700 CALL ApDocToP.00487688
- 00409213 66:C745 E4 0800 MOV WORD PTR [EBP-1C], 8
- 00409219 837D FC 00 CMP DWORD PTR [EBP-4], 0
- 0040921D 74 05 JE SHORT ApDocToP.00409224 ; //注册码为空则跳
- 0040921F 8B4D FC MOV ECX, DWORD PTR [EBP-4] ; //试练码
- 00409222 EB 05 JMP SHORT ApDocToP.00409229
- 00409224 B9 645A4C00 MOV ECX, ApDocToP.004C5A64
- 00409229 51 PUSH ECX
- 0040922A 53 PUSH EBX
- 0040922B E8 58FFFFFF CALL ApDocToP.00409188 ; //关键CALL
- 00409230 83C4 08 ADD ESP, 8
- 00409233 3C 01 CMP AL, 1
- 00409235 0F85 C3000000 JNZ ApDocToP.004092FE ; //关键跳转
- 0040923B 6A 40 PUSH 40
- 0040923D 68 BC5A4C00 PUSH ApDocToP.004C5ABC ; ASCII "Registered Version"
- 00409242 68 655A4C00 PUSH ApDocToP.004C5A65 ; ASCII "Thank you register Ap DoumentToPDF software,if you have any problem,contact us please."
- 00409247 8BC3 MOV EAX, EBX
- 00409249 E8 4E4B0800 CALL ApDocToP.0048DD9C
- 0040924E 50 PUSH EAX
- 0040924F E8 A4900B00 CALL ApDocToP.004C22F8 ; JMP 到 USER32.MessageBoxA
- 00409254 8D55 D0 LEA EDX, DWORD PTR [EBP-30]
- 00409257 52 PUSH EDX
- 00409258 68 CF5A4C00 PUSH ApDocToP.004C5ACF ; ASCII "Software\AdultPDF\Doc2PDF"
- 0040925D 68 02000080 PUSH 80000002
- 00409262 E8 97870B00 CALL ApDocToP.004C19FE ; JMP 到 advapi32.RegCreateKeyA
- 00409267 837D D0 00 CMP DWORD PTR [EBP-30], 0
- 0040926B 74 3C JE SHORT ApDocToP.004092A9
- 0040926D 837D FC 00 CMP DWORD PTR [EBP-4], 0
- 00409271 74 05 JE SHORT ApDocToP.00409278
- 00409273 8B45 FC MOV EAX, DWORD PTR [EBP-4]
- 00409276 EB 05 JMP SHORT ApDocToP.0040927D
- 00409278 B8 E95A4C00 MOV EAX, ApDocToP.004C5AE9
- 0040927D 50 PUSH EAX
- 0040927E E8 FDAC0A00 CALL ApDocToP.004B3F80
- 00409283 59 POP ECX
- 00409284 40 INC EAX
- 00409285 50 PUSH EAX
- 00409286 837D FC 00 CMP DWORD PTR [EBP-4], 0
- 0040928A 74 05 JE SHORT ApDocToP.00409291
- 0040928C 8B55 FC MOV EDX, DWORD PTR [EBP-4]
- 0040928F EB 05 JMP SHORT ApDocToP.00409296
- 00409291 BA F15A4C00 MOV EDX, ApDocToP.004C5AF1
- 00409296 52 PUSH EDX
- 00409297 6A 01 PUSH 1
- 00409299 6A 00 PUSH 0
- 0040929B 68 EA5A4C00 PUSH ApDocToP.004C5AEA ; ASCII "Serial"
- 004092A0 8B45 D0 MOV EAX, DWORD PTR [EBP-30]
- 004092A3 50 PUSH EAX
- 004092A4 E8 6D870B00 CALL ApDocToP.004C1A16 ; JMP 到 advapi32.RegSetValueExA
- 004092A9 8B4D D0 MOV ECX, DWORD PTR [EBP-30]
- 004092AC 51 PUSH ECX
- 004092AD E8 46870B00 CALL ApDocToP.004C19F8 ; JMP 到 advapi32.RegCloseKey
- 004092B2 33D2 XOR EDX, EDX
- 004092B4 8B83 08030000 MOV EAX, DWORD PTR [EBX+308]
- 004092BA 8B08 MOV ECX, DWORD PTR [EAX]
- 004092BC FF51 64 CALL DWORD PTR [ECX+64]
- 004092BF 66:C745 E4 2000 MOV WORD PTR [EBP-1C], 20
- 004092C5 BA F25A4C00 MOV EDX, ApDocToP.004C5AF2 ; ASCII "Close"
- 004092CA 8D45 F8 LEA EAX, DWORD PTR [EBP-8]
- 004092CD E8 9A6A0B00 CALL ApDocToP.004BFD6C
- 004092D2 FF45 F0 INC DWORD PTR [EBP-10]
- 004092D5 8B10 MOV EDX, DWORD PTR [EAX]
- 004092D7 8B83 00030000 MOV EAX, DWORD PTR [EBX+300]
- 004092DD E8 D6E30700 CALL ApDocToP.004876B8
- 004092E2 FF4D F0 DEC DWORD PTR [EBP-10]
- 004092E5 8D45 F8 LEA EAX, DWORD PTR [EBP-8]
- 004092E8 BA 02000000 MOV EDX, 2
- 004092ED E8 1E6C0B00 CALL ApDocToP.004BFF10
- 004092F2 C783 4C020000 01000>MOV DWORD PTR [EBX+24C], 1
- 004092FC EB 35 JMP SHORT ApDocToP.00409333
- 004092FE 6A 10 PUSH 10
- 00409300 68 2B5B4C00 PUSH ApDocToP.004C5B2B ; ASCII "Error"
- 00409305 68 F85A4C00 PUSH ApDocToP.004C5AF8 ; ASCII "Series number error,please check it and try again."
- 0040930A 8BC3 MOV EAX, EBX
- 0040930C E8 8B4A0800 CALL ApDocToP.0048DD9C
- 00409311 50 PUSH EAX
- 00409312 E8 E18F0B00 CALL ApDocToP.004C22F8 ; JMP 到 USER32.MessageBoxA
- 00409317 FF4D F0 DEC DWORD PTR [EBP-10]
- 0040931A 8D45 FC LEA EAX, DWORD PTR [EBP-4]
- 0040931D BA 02000000 MOV EDX, 2
- 00409322 E8 E96B0B00 CALL ApDocToP.004BFF10
- 00409327 8B4D D4 MOV ECX, DWORD PTR [EBP-2C]
- 0040932A 64:890D 00000000 MOV DWORD PTR FS:[0], ECX
- 00409331 EB 1A JMP SHORT ApDocToP.0040934D
- 00409333 FF4D F0 DEC DWORD PTR [EBP-10]
- 00409336 8D45 FC LEA EAX, DWORD PTR [EBP-4]
- 00409339 BA 02000000 MOV EDX, 2
- 0040933E E8 CD6B0B00 CALL ApDocToP.004BFF10
- 00409343 8B4D D4 MOV ECX, DWORD PTR [EBP-2C]
- 00409346 64:890D 00000000 MOV DWORD PTR FS:[0], ECX
- 0040934D 5B POP EBX
- 0040934E 8BE5 MOV ESP, EBP
- 00409350 5D POP EBP
- 00409351 C3 RETN
- =========================================================================
- 00409188 55 PUSH EBP
- 00409189 8BEC MOV EBP, ESP
- 0040918B 53 PUSH EBX
- 0040918C 56 PUSH ESI
- 0040918D 57 PUSH EDI
- 0040918E 8B5D 0C MOV EBX, DWORD PTR [EBP+C]
- 00409191 85DB TEST EBX, EBX
- 00409193 74 0C JE SHORT ApDocToP.004091A1
- 00409195 53 PUSH EBX
- 00409196 E8 E5AD0A00 CALL ApDocToP.004B3F80
- 0040919B 59 POP ECX
- 0040919C 83F8 10 CMP EAX, 10
- 0040919F 74 04 JE SHORT ApDocToP.004091A5 ; //注册码长度等于10h则跳
- 004091A1 33C0 XOR EAX, EAX
- 004091A3 EB 39 JMP SHORT ApDocToP.004091DE
- 004091A5 0FBE73 07 MOVSX ESI, BYTE PTR [EBX+7] ; //ESI=注册码的第8个字符ASCII值
- 004091A9 8BC6 MOV EAX, ESI ; //EAX=ESI
- 004091AB 0FBE7B 0A MOVSX EDI, BYTE PTR [EBX+A] ; //EDI=注册码的第11个字符ASCII值
- 004091AF 03C7 ADD EAX, EDI ; //EAX=EAX+EDI
- 004091B1 3D 9B000000 CMP EAX, 9B ; //EAX与9B比较
- 004091B6 75 24 JNZ SHORT ApDocToP.004091DC ; //不等则跳
- 004091B8 8BCE MOV ECX, ESI ; //ECX=ESI=注册码的第8个字符ASCII值
- 004091BA 2BCF SUB ECX, EDI ; //ECX=ECX-EDI
- 004091BC 8BC1 MOV EAX, ECX ; //EAX=ECX
- 004091BE 99 CDQ
- 004091BF 33C2 XOR EAX, EDX ; //EAX=EAX xor EDX
- 004091C1 2BC2 SUB EAX, EDX ; //EAX=EAX-EDX
- 004091C3 83C0 41 ADD EAX, 41 ; //EAX=EAX+41
- 004091C6 0FBE53 03 MOVSX EDX, BYTE PTR [EBX+3] ; //EDX=注册码的第4个字符ASCII值
- 004091CA 3BC2 CMP EAX, EDX ; //EAX与EDX比较
- 004091CC 75 0E JNZ SHORT ApDocToP.004091DC ; //不等则跳
- 004091CE 8B45 08 MOV EAX, DWORD PTR [EBP+8]
- 004091D1 C680 34030000 01 MOV BYTE PTR [EAX+334], 1
- 004091D8 B0 01 MOV AL, 1
- 004091DA EB 02 JMP SHORT ApDocToP.004091DE
- 004091DC 33C0 XOR EAX, EAX
- 004091DE 5F POP EDI
- 004091DF 5E POP ESI
- 004091E0 5B POP EBX
- 004091E1 5D POP EBP
- 004091E2 C3 RETN
复制代码 **************************************************************
【破解总结】
--------------------------------------------------------------
【算法总结】
1、注册码长度必须为16位
2、注册码的第8个字符和第11个字符ASCII值之和必须等于9Bh
3、注册码的第8个字符和第11个字符ASCII值之差加上41h必须等于第4个字符ASCII值
--------------------------------------------------------------
【算法注册机】
VB代码
Private Sub Command1_Click()
C11 = Int(Rnd() * 10)
C8 = Chr(&H9B - Asc(C11))
C4 = Chr(Asc(C8) - Asc(C11) + &H41)
Text1.Text = Int(Rnd() * 10) & Int(Rnd() * 10) & Int(Rnd() * 10) & C4 & Int(Rnd() * 10) & Int(Rnd() * 10) & Int(Rnd() * 10) & C8 & Int(Rnd() * 10) & Int(Rnd() * 10) & C11 & Int(Rnd() * 10) & Int(Rnd() * 10) & Int(Rnd() * 10) & Int(Rnd() * 10) & Int (Rnd() * 10)
End Sub
--------------------------------------------------------------
【注册信息】
一组可用的注册码:288x599i26292519
保存在
[HKEY_LOCAL_MACHINE\SOFTWARE\AdultPDF\Doc2PDF]
--------------------------------------------------------------
感谢飘云老大、猫老大、Nisy老大以及很多前辈们的学习教程以及所有帮助过我的论坛兄弟姐妹们!谢谢
--------------------------------------------------------------
【版权声明】破文是学习的手记,兴趣是成功的源泉;本破文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
_/_/_/ _/ _/ _/_/_/
_/ _/ _/ _/ _/
_/_/_/ _/_/ _/_/_/_/
_/ _/ _/ _/
_/ _/ _/_/_/ _/ tianxj |
|