关于PDF2Word v3.0简单算法的疑问
我其实刚刚接触算法 好多东西都不是很明白最近正在看《飘云阁论坛07版破解基础教程 》的算法部分 找了个简单的试试手PDF2Word v3.0简单算法 开始就碰到了问题 按作者提供的注册码注册竟然提示注册失败用OD脱壳后又无法运行 以为碰到自效验的软件了
刚想放手不过我用Import REConstructor v1.6 修复后竟然成功了 Microsoft Visual C++ 6.0写的 这里我碰到第一个问题 注册时有错误提示
但是用OD查字符却查不出来只能按作者说的下这个断点 BP MessageBoxA在堆栈窗口看到如下数据
0012E134 00405E35/CALL 到 MessageBoxA 来自 1_.00405E2F
0012E138 003004E8|hOwner = 003004E8 ('Please register VeryPDF PDF2W...',class='#32770',parent=00450332)
0012E13C 011A0058|Text = "Your registration key is wrong, please double check following issues:",LF,"1. Please copy and paste your registration key into PDF2Word to avoid spelling mistake.",LF,"2. You are using an old version of PDF2Word product, please downloa"...
0012E140 005E181C|Title = "Wrong License Key"
0012E144 00000010\Style = MB_OK|MB_ICONHAND|MB_APPLMODAL
0012E148 0012E290
0012E134 00405E35/CALL 到 MessageBoxA 来自 1_.00405E2F 这里遇到第二个问题 在这个地方 右键 竟然没有反汇编中跟随 这个选象在这里又耽误了好长时间我以前破解过一个类似的软件 在窗口里 有那个选象 直接就来到程序的领空了 这里没有 这是为什么呢 ??
我只好记下00405E2F这个地址 跟过去后 找到了作者开始讲解的地方 我发现了一处问题 看下面代码
00405620 83EC 18 sub esp, 18
00405623 83C9 FF or ecx, FFFFFFFF
00405626 33C0 xor eax, eax
00405628 53 push ebx
00405629 56 push esi
0040562A 8B7424 24 mov esi, dword ptr
0040562E 57 push edi
0040562F 8BFE mov edi, esi
00405631 F2:AE repne scas byte ptr es:
00405633 F7D1 not ecx
00405635 49 dec ecx
00405636 83F9 14 cmp ecx, 14
00405639 74 07 je short 00405642
0040563B 5F pop edi
0040563C 5E pop esi
0040563D 5B pop ebx
0040563E 83C4 18 add esp, 18
00405641 C3 retn
00405642 8A06 mov al, byte ptr
00405644 8A4E 01 mov cl, byte ptr
00405647 8D5424 0C lea edx, dword ptr
0040564B 32DB xor bl, bl
0040564D 52 push edx
0040564E 884424 1C mov byte ptr , al
00405652 885C24 1D mov byte ptr , bl
00405656 884C24 10 mov byte ptr , cl
0040565A 885C24 11 mov byte ptr , bl
0040565E E8 AE9E1800 call 0058F511
00405663 8BF8 mov edi, eax
00405665 8D4424 1C lea eax, dword ptr
00405669 50 push eax
0040566A E8 A29E1800 call 0058F511
0040566F 03F8 add edi, eax
00405671 83C4 08 add esp, 8
00405674 83FF 0B cmp edi, 0B
00405677 74 09 je short 00405682
00405679 5F pop edi
0040567A 5E pop esi
0040567B 33C0 xor eax, eax
0040567D 5B pop ebx
0040567E 83C4 18 add esp, 18
00405681 C3 retn
00405682 8A4E 12 mov cl, byte ptr
00405685 8A56 13 mov dl, byte ptr
00405688 8D4424 0C lea eax, dword ptr
0040568C 884C24 18 mov byte ptr , cl
00405690 50 push eax
00405691 885C24 1D mov byte ptr , bl
00405695 885424 10 mov byte ptr , dl
00405699 885C24 11 mov byte ptr , bl
0040569D E8 6F9E1800 call 0058F511
004056A2 8D4C24 1C lea ecx, dword ptr
004056A6 8BF8 mov edi, eax
004056A8 51 push ecx
004056A9 E8 639E1800 call 0058F511
004056AE 03F8 add edi, eax //第19位和第20位相加怎么知道这是19 20位而不是其他位呢
004056B0 83C4 08 add esp, 8
004056B3 83FF 0D cmp edi, 0D //作者这里上OE而我的是OD难道软件已经做了修改??
004056B6 74 09 je short 004056C1
004056B8 5F pop edi
004056B9 5E pop esi
004056BA 33C0 xor eax, eax
004056BC 5B pop ebx
004056BD 83C4 18 add esp, 18
004056C0 C3 retn
004056C1 8A56 05 mov dl, byte ptr
004056C4 8A46 0D mov al, byte ptr
004056C7 8D4C24 0C lea ecx, dword ptr
004056CB 885424 18 mov byte ptr , dl
004056CF 51 push ecx
004056D0 885C24 1D mov byte ptr , bl
004056D4 884424 10 mov byte ptr , al
004056D8 885C24 11 mov byte ptr , bl
004056DC E8 309E1800 call 0058F511
004056E1 8D5424 1C lea edx, dword ptr
004056E5 8BF8 mov edi, eax
004056E7 52 push edx
004056E8 E8 249E1800 call 0058F511
004056ED 03F8 add edi, eax
004056EF 83C4 08 add esp, 8
004056F2 83FF 09 cmp edi, 9
004056F5 74 09 je short 00405700
004056F7 5F pop edi
004056F8 5E pop esi
004056F9 33C0 xor eax, eax
004056FB 5B pop ebx
004056FC 83C4 18 add esp, 18
004056FF C3 retn
00405700 807E 0C 56 cmp byte ptr , 56
00405704 74 09 je short 0040570F
00405706 5F pop edi
00405707 5E pop esi
00405708 33C0 xor eax, eax
0040570A 5B pop ebx
0040570B 83C4 18 add esp, 18
0040570E C3 retn
0040570F 807E 0E 33 cmp byte ptr , 33
00405713 74 09 je short 0040571E
00405715 5F pop edi
00405716 5E pop esi
00405717 33C0 xor eax, eax
00405719 5B pop ebx
0040571A 83C4 18 add esp, 18
0040571D C3 retn
把最后的86该成85后就注册成功了
发现注册信息保存在同文件下的config文件里 内容如下
FontCount=3
DefaultFontName=Times New Roman
PdfFontName1=Helvetica
OsFontName1=Times New Roman
PdfFontName2=Times-Roman
OsFontName2=Times New Roman
PdfFontName3=BickleyScriptLetPlain
OsFontName3=Script
Used=6
Regcode=381116111111V3311185
清楚后又可注册
思路很乱 我写下我遇到的难题
1.注册时有错误提示但是用OD查字符却查不出来 ??
2这里遇到第二个问题 在这个地方 右键 竟然没有反汇编中跟随 这个选象在这里又耽误了好长时间我以前破解过一个类似的软件 在窗口里 有那个选象 直接就来到程序的领空了 这里没有 这是为什么呢 ??
3.作者这里上OE而我的是OD难道软件已经做了修改??
4.第19位和第20位相加 怎么知道这是19和20位而不是其他位呢??
希望得到大家的指点特别是第四个 谢谢
[ 本帖最后由 千里之外 于 2007-5-11 21:53 编辑 ]
回复 #1 千里之外 的帖子
不知答得对不对,也请大家指证1.注册时有错误提示但是用OD查字符却查不出来 ??
答:a对于这种软件,有可能作者在处理关健的程序代码时做了加密手脚,也就是加密重要源代码
b对于VB程序,由于是双字节处理方式,要用unicode方式才能查看到
c加了壳,有时虽然在EPID上看到好像是没壳的,例如明明显示vC++ 但是实际上程序还是加了壳,对于如何判断,也只能在调试时才能却定
2这里遇到第二个问题 在这个地方 右键 竟然没有反汇编中跟随 这个选象在这里又耽误了好长时间我以前破解过一个类似的软件 在窗口里 有那个选象 直接就来到程序的领空了 这里没有 这是为什么呢 ??
答:这个我没遇到过,不知???还请各位解答!
3.作者这里上OE而我的是OD难道软件已经做了修改??
答:有可能,但也不一定,如果作者的数是按一机一码来给的话,就同就很正常了
4.第19位和第20位相加 怎么知道这是19和20位而不是其他位呢??
希望得到大家的指点特别是第四个 谢谢
答:这个只有在跟入每个call前,从入口参数以及出口参数来却定call的功能了,多跟些软件就能一眼就能看出
不知说对没有,请指正,同共学习 2.可以alt+f9或ctrl+f9返回,或者直接ctrl+g输入地址下断返回
4.往上看代码,反汇编为十六进制
00405682 8A4E 12 mov cl, byte ptr //ptr 19位
00405685 8A56 13 mov dl, byte ptr //ptr 20位 谢谢两位兄弟的帮助/:09 2楼兄弟说的好啊, 不错
学习了/:018 /:018 /:018
页:
[1]