首页
社区
课程
招聘
[旧帖] [原创] 破解福昕阅读器(申请邀请码) 0.00雪花
发表于: 2010-3-30 12:42 1789

[旧帖] [原创] 破解福昕阅读器(申请邀请码) 0.00雪花

2010-3-30 12:42
1789
【文章标题】: 破解福昕阅读器(申请邀请码)
【文章作者】: 独头蒜
【作者邮箱】: 1025738353@qq.com
【作者QQ号】: 1025738353
【软件名称】: 福昕阅读器
【下载地址】: 自己搜索下载
【保护方式】: 无
【编写语言】: Microsoft Visual C++ 6.0
【使用工具】: OD IDA
【操作平台】: winxp sp3
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  大家好,我是独头蒜
  今天呢,我来破解一个程序:福昕阅读器 ,顺便申请一下论坛的邀请码。
  我们今天用到2个工具,OD 和IDA
  OD  最强大的32位汇编级动态调试工具
  IDA 最强大的静态反汇编工具
  
  第一步:踩点
  我们先运行这个程序,了解一下程序。
  成果:输入错误的时候,出现错误的对话框。
  “对不起,您输入的密码不正确”
  有些朋友或许说,我们直接用od查找相应的字符串就可以了,可是呢,我们不能找到。
  这个字符串,怎么办?~~~~(>_<)~~~~
  不要着急,我们还有办法
  我们用OD载入这个程序,注册,随便输入,当它出现错误信息的时候,我们先不要点击确定,按F12
  ,让程序断下来。
  
  7C92E4F4 >  C3              retn
  7C92E4F5    8DA424 00000000 lea     esp, dword ptr [esp]
  7C92E4FC    8D6424 00       lea     esp, dword ptr [esp]
  7C92E500 >  8D5424 08       lea     edx, dword ptr [esp+8]
  7C92E504    CD 2E           int     2E
  7C92E506    C3              retn
  7C92E507    90              nop
  7C92E508 >  55              push    ebp
  7C92E509    8BEC            mov     ebp, esp
  7C92E50B    9C              pushfd
  
  
  程序自然的断到了这里,这里是系统的函数,我们返回,让他到程序的领空。
  然后呢,出现了错误对话框,我们点击确定
  00870412  |> \53            push    ebx                              ; /Style
  00870413  |.  57            push    edi                              ; |Title
  00870414  |.  FF75 08       push    dword ptr [ebp+8]                ; |Text
  00870417  |.  FF75 F4       push    dword ptr [ebp-C]                ; |hOwner
  0087041A  |.  FF15 F0A6A900 call    dword ptr [<&USER32.MessageBoxA>>; \MessageBoxA (错误信息)
  00870420  |.  85F6          test    esi, esi                         ;  Foxit_Re.00A755D4
  00870422  |.  8BF8          mov     edi, eax
  00870424  |.  74 05         je      short 0087042B
  00870426  |.  8B45 F8       mov     eax, dword ptr [ebp-8]
  00870429  |.  8906          mov     dword ptr [esi], eax
  0087042B  |>  837D FC 00    cmp     dword ptr [ebp-4], 0
  0087042F  |.  74 0B         je      short 0087043C
  00870431  |.  6A 01         push    1                                ; /Enable = TRUE
  00870433  |.  FF75 FC       push    dword ptr [ebp-4]                ; |hWnd
  
  恩,到达程序的领空了,可是呢 这里还是在程序错误的内部函数里面, 我们还要走几次返回
  
  返回几次后,我们来到了比较关键的代码处。
  
  004971F1   .  52            push    edx
  004971F2   .  899C24 B80500>mov     dword ptr [esp+5B8], ebx
  004971F9   .  E8 D1CD0100   call    004B3FCF
  004971FE   .  83C4 24       add     esp, 24
  00497201   .  3BC7          cmp     eax, edi
  00497203   .  75 36         jnz     short 0049723B
  00497205   .  8D4424 10     lea     eax, dword ptr [esp+10]
  00497209   .  68 12F20000   push    0F212
  0049720E   .  50            push    eax
  0049720F   .  E8 FC5EF7FF   call    0040D110
  00497214   .  83C4 08       add     esp, 8
  00497217   .  8B00          mov     eax, dword ptr [eax]
  00497219   .  6A 00         push    0
  0049721B   .  6A 00         push    0
  0049721D   .  50            push    eax
  0049721E   .  C68424 A00500>mov     byte ptr [esp+5A0], 0B
  00497226   .  E8 24923D00   call    0087044F
  0049722B   .  889C24 940500>mov     byte ptr [esp+594], bl
  00497232   .  8D4C24 10     lea     ecx, dword ptr [esp+10]
  00497236   .  E9 FA020000   jmp     00497535
  0049723B   >  B9 10000000   mov     ecx, 10
  00497240   .  33C0          xor     eax, eax
  00497242   .  8D7C24 24     lea     edi, dword ptr [esp+24]
  00497246   .  8D9424 040100>lea     edx, dword ptr [esp+104]
  0049724D   .  F3:AB         rep     stos dword ptr es:[edi]
  0049724F   .  B9 40000000   mov     ecx, 40
  00497254   .  8DBC24 840200>lea     edi, dword ptr [esp+284]
  0049725B   .  F3:AB         rep     stos dword ptr es:[edi]
  0049725D   .  B9 20000000   mov     ecx, 20
  00497262   .  8DBC24 040200>lea     edi, dword ptr [esp+204]
  00497269   .  F3:AB         rep     stos dword ptr es:[edi]
  0049726B   .  B9 10000000   mov     ecx, 10
  00497270   .  8D7C24 64     lea     edi, dword ptr [esp+64]
  00497274   .  F3:AB         rep     stos dword ptr es:[edi]
  00497276   .  B9 40000000   mov     ecx, 40
  0049727B   .  8DBC24 840300>lea     edi, dword ptr [esp+384]
  00497282   .  F3:AB         rep     stos dword ptr es:[edi]
  00497284   .  B9 20000000   mov     ecx, 20
  00497289   .  8DBC24 040100>lea     edi, dword ptr [esp+104]
  00497290   .  F3:AB         rep     stos dword ptr es:[edi]
  00497292   .  B9 20000000   mov     ecx, 20
  00497297   .  8DBC24 840100>lea     edi, dword ptr [esp+184]
  0049729E   .  F3:AB         rep     stos dword ptr es:[edi]
  004972A0   .  8D8C24 840100>lea     ecx, dword ptr [esp+184]
  004972A7   .  8D8424 840300>lea     eax, dword ptr [esp+384]
  004972AE   .  51            push    ecx
  004972AF   .  52            push    edx
  004972B0   .  8D4C24 6C     lea     ecx, dword ptr [esp+6C]
  004972B4   .  50            push    eax
  004972B5   .  8D9424 900200>lea     edx, dword ptr [esp+290]
  004972BC   .  51            push    ecx
  004972BD   .  8D4424 34     lea     eax, dword ptr [esp+34]
  004972C1   .  52            push    edx
  004972C2   .  8D8C24 180200>lea     ecx, dword ptr [esp+218]
  004972C9   .  50            push    eax
  004972CA   .  51            push    ecx
  004972CB   .  68 1C679F00   push    009F671C                         ;  ASCII "FRP"
  004972D0   .  6A 00         push    0
  004972D2   .  E8 D9380300   call    004CABB0
  004972D7   .  83C4 24       add     esp, 24
  004972DA   .  A3 887BA700   mov     dword ptr [A77B88], eax
  004972DF   .  85C0          test    eax, eax
  004972E1   .  75 62         jnz     short 00497345                   ;   关注(如果不跳,就成功啦)
  004972E3   .  8D5424 10     lea     edx, dword ptr [esp+10]
  004972E7   .  68 80080000   push    880
  004972EC   .  52            push    edx
  004972ED   .  E8 1E5EF7FF   call    0040D110
  004972F2   .  83C4 08       add     esp, 8
  004972F5   .  8B00          mov     eax, dword ptr [eax]
  004972F7   .  6A 00         push    0
  004972F9   .  6A 00         push    0
  004972FB   .  50            push    eax
  004972FC   .  C68424 A00500>mov     byte ptr [esp+5A0], 0C
  00497304   .  E8 46913D00   call    0087044F                         ;  注册部分
  00497309   .  8D4C24 10     lea     ecx, dword ptr [esp+10]
  0049730D   .  889C24 940500>mov     byte ptr [esp+594], bl
  00497314   .  E8 B2EC3C00   call    00865FCB
  00497319   .  8B4424 14     mov     eax, dword ptr [esp+14]
  0049731D   .  50            push    eax                              ; /FileName
  0049731E   .  FF15 30A3A900 call    dword ptr [<&KERNEL32.DeleteFile>; \DeleteFileA
  00497324   .  8D4C24 18     lea     ecx, dword ptr [esp+18]
  00497328   .  C68424 940500>mov     byte ptr [esp+594], 1
  00497330   .  E8 96EC3C00   call    00865FCB
  00497335   .  C78424 940500>mov     dword ptr [esp+594], -1
  00497340   .  E9 0D020000   jmp     00497552
  00497345   >  BE 10679F00   mov     esi, 009F6710                    ;  ASCII "2008/01/01"
  0049734A   .  8D8424 840100>lea     eax, dword ptr [esp+184]
  00497351   >  8A10          mov     dl, byte ptr [eax]
  00497353   .  8ACA          mov     cl, dl
  00497355   .  3A16          cmp     dl, byte ptr [esi]
  00497357   .  75 1D         jnz     short 00497376                   ;  是否为新版本
  00497359   .  84C9          test    cl, cl
  0049735B   .  74 12         je      short 0049736F
  0049735D   .  8A50 01       mov     dl, byte ptr [eax+1]
  00497360   .  8ACA          mov     cl, dl
  
   有和我一样的菜鸟或许说,这么复杂我们怎么分析呢?
  这么多关键跳转,我们怎么知道那个是关键跳呢?这里我们就要用强大的IDA去分析了
  当然也需要一些灵感和经验咯
  好,我们用IDA载入后 查找关键地址 004972E1 00497304  00497357
  其实主要也就是这3个地址,其中有2个是跳转,IDA有一个强大的功能:可以显示程序的逻辑线路图,我们根据程序逻辑线路图很容易可以熟悉程序的编写思路
  在这里我们稍微分析一下,就可以找到关键的call咯
  我已经把分析后的结果以注释的形式写到上面了,很显然,004972E1 这里就是最关键的跳转
  如果这个跳转不能实现,那么程序就显示注册失败!!!
  我们改了这个跳转再试试看。
  咦?改了以后怎么还不行呢?显示我是在2008年1月1日之前购买的,
  切!不行!! 我要搞定它,
  我们继续往下看  发现00497357这个跳转(为了更方便,一定要用IDA咯)
  恩,把这里改了以后,就可以成功注册了
  如果改了497478这个地址, 则显示为成功注册零时注册码
  今天就到这里,(*^__^*) 嘻嘻……
  
--------------------------------------------------------------------------------
【版权声明】: 只适合学习之用,不要用于非法用途,否则后果自负!!

                                                       2010年03月30日 12:39:10

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 2105
活跃值: (424)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
为什么不直接bp MessageBox...
2010-3-30 12:54
0
雪    币: 16
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
看来也就能看看了
2010-3-31 19:25
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
下bp messagebox断点后一般的步骤是什么??本人新手,能给个完整步骤吗??或者告诉我在哪能看到相关内容也可....最好告诉我是哪本书第几章.
2010-3-31 21:11
0
雪    币: 30
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
谢谢分享,学习了!
2010-4-1 02:31
0
雪    币: 67
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
先帮你顶一下吧!
2010-4-1 12:28
0
雪    币: 57
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
哎,我要的是支持中文的

大利包我是新手,没KX的啊
2010-4-1 21:03
0
雪    币: 57
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
我们先不要点击确定,按F12
  ,让程序断下来。

这个我断不下来啊,你怎么能段下来的?
2010-4-1 21:14
0
雪    币: 22
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
2010-4-1 21:19
0
雪    币: 421
活跃值: (83)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
10
点击"暂停"按钮停不下来?
2010-4-1 22:24
0
雪    币: 25
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
学习
2010-4-2 13:41
0
雪    币: 3003
活跃值: (464)
能力值: ( LV15,RANK:1395 )
在线值:
发帖
回帖
粉丝
12
不错,学习了…
2010-4-2 14:35
0
游客
登录 | 注册 方可回帖
返回
//