acafeel 发表于 2007-11-26 14:38:30

[PDF阅读工具]Foxit Reader v2.2 Build2129 的标志位方式爆破

Foxit Reader v2.2 Build2129 的标志位方式爆破

软件下载: http://www.foxitsoftware.com/
注册限制: 非Pro版本使用工具菜单下的最后4项功能时,会在你的PDF文件中加入它的广告水印。
软件介绍: 一款超一流的PDF浏览、简易修改工具。

将Foxit_Reader.exe文件拖入到OD中后,F9键运行,然后点击菜单中的这一项,在弹出的注册窗口中随便输入点信息,点击按钮,弹出了注册错误的对话框。

OK,就从弹出的对话框这里入手,下 BP MessageBoxA 断点后,再次重复上面的步骤,这时程序被断在了User32的领空下,Alt+F9键后,返回到了其自身的领空下,使用F8键走出 3 个call子程序后,便回到了这里:

>>>>>>
(前面代码省略)
00459EBB   .E8 D0E10200       call    Foxit_Re.00488090            ;这个call决定了eax的结果
00459EC0   .83C4 40         add   esp, 40
00459EC3   .A3 482B8D00       mov   dword ptr , eax
00459EC8   .85C0            test    eax, eax                     ;eax and eax = 0 ?
00459ECA   .75 1F             jnz   short Foxit_Re.00459EEB      ;不为0,则成功,跳走
00459ECC   .83CB FF         or      ebx, FFFFFFFF
00459ECF   .53                push    ebx
00459ED0   .50                push    eax
00459ED1   .68 80080000       push    880
00459ED6   .E8 38F02F00       call    Foxit_Re.00758F13
00459EDB   .8B4C24 10         mov   ecx, dword ptr       ;走完3个子call后,来到了这里:
00459EDF   .51                push    ecx                        ; /FileName
00459EE0   .FF15 14E57A00   call    dword ptr [<&KERNEL32.Delete>; \DeleteFileA
00459EE6   .E9 35010000       jmp   Foxit_Re.0045A020
00459EEB   >BE 58E38400       mov   esi, Foxit_Re.0084E358       ;来到这里:
(后面代码省略)
>>>>>>

从上面,可以一面了然的发现00459EBB处的call    Foxit_Re.00488090很关键,在这里F2键下断后,再次重复上面的步骤,便被断在了这里,然后F7键进入,这时在OD的[信息窗口]中发现调用这个注册Call的地方有两处,即为:[本地调用来自 00423D7E, 00459EBB],而00459EBB这处已经知道,于是转到00423D7E这处,再看看:

>>>>>>
(前面代码省略)
00423D7E|.E8 0D430600       call    Foxit_Re.00488090            ;就是这个call ;在这里同样F2键下断点
00423D83|.83C4 24         add   esp, 24
00423D86|.A3 482B8D00       mov   dword ptr , eax      ;是关键,存放注册是否成功的标志
00423D8B|.85C0            test    eax, eax                     ;若注册成功,不为0
00423D8D|.5F                pop   edi
00423D8E      74 55             je      short Foxit_Re.00423DE5      ;为0,则跳走
00423D90|.53                push    ebx
00423D91|.56                push    esi
00423D92|.BE 58E38400       mov   esi, Foxit_Re.0084E358       ;ASCII "2006/09/29"
00423D97|.8D8424 88000000   lea   eax, dword ptr
00423D9E|>8A10            /mov   dl, byte ptr           ;读入key文件中的日期
00423DA0|.8A1E            |mov   bl, byte ptr           ;2006/09/29
00423DA2|.8ACA            |mov   cl, dl
00423DA4|.3AD3            |cmp   dl, bl                      ;两日期比较
00423DA6      75 1E             jnz   short Foxit_Re.00423DC6      ;不等,跳走(不能跳)
00423DA8|.84C9            |test    cl, cl                      ;cl and cl = 0 ?
00423DAA|.74 16             |je      short Foxit_Re.00423DC2   ;为0,跳走(必须跳)
00423DAC|.8A50 01         |mov   dl, byte ptr
00423DAF|.8A5E 01         |mov   bl, byte ptr
00423DB2|.8ACA            |mov   cl, dl
00423DB4|.3AD3            |cmp   dl, bl
00423DB6|.75 0E             |jnz   short Foxit_Re.00423DC6
00423DB8|.83C0 02         |add   eax, 2
00423DBB|.83C6 02         |add   esi, 2
00423DBE|.84C9            |test    cl, cl
00423DC0|.^ 75 DC             \jnz   short Foxit_Re.00423D9E
00423DC2|>33C0            xor   eax, eax
00423DC4|.EB 05             jmp   short Foxit_Re.00423DCB
00423DC6|>1BC0            sbb   eax, eax
00423DC8|.83D8 FF         sbb   eax, -1
(后面代码省略)
>>>>>>

同样,在00423D7E处F2键下断点,然后Ctrl+F2键,让OD重新载入该程序,这时便被断在了上面的这个call处,F7键进入后,来到这里:



>>>>>>
00488090      8B4C24 04         mov   ecx, dword ptr
00488094      81EC 04010000   sub   esp, 104
(后面代码省略)
>>>>>>

将上面的代码修改为如下(即位标志位修改):

>>>>>>
00488090      B8 FFFFFFFF       mov   eax, -1
00488095      C3                retn
00488096      90                nop
00488097      90                nop
00488098      90                nop
00488099      90                nop
(后面保持一样)
>>>>>>



然后两次F8键走出这个call后,回来:

>>>>>>
(前面代码省略)
00423D7E|.E8 0D430600       call    Foxit_Re.00488090            ;已被修改为上面的代码▲
00423D83|.83C4 24         add   esp, 24
00423D86|.A3 482B8D00       mov   dword ptr , eax      ;是关键,存放注册是否成功的标志
00423D8B|.85C0            test    eax, eax                     ;若注册成功,不为0
(中间代码省略)
00423DA6      75 1E             jnz   short Foxit_Re.00423DC6      ;这里还要作一定修改
00423DA8|.84C9            |test    cl, cl
00423DAA|.74 16             |je      short Foxit_Re.00423DC2   ;这是跳向成功的地方
(后面代码省略)
>>>>>>



将上面的00423DA6处的: jnz   short Foxit_Re.00423DC6

修改为:               nop
                     nop
或者是:               jmp   short Foxit_Re.00423DC2

到此,便成功的让软件注册为Pro版本了! 可在bout窗口中发现不同哟~!



如果,你还想在点击注册窗口中的注册按钮时,也随时显示注册成功对话框,还需将:

>>>>>>
00459EBB   .E8 D0E10200       call    Foxit_Re.00488090            ;已被标志位修改的这个call
00459EC0   .83C4 40         add   esp, 40
00459EC3   .A3 482B8D00       mov   dword ptr , eax
00459EC8   .85C0            test    eax, eax                     ;eax and eax = 0 ?
00459ECA   .75 1F             jnz   short Foxit_Re.00459EEB      ;不为0,则成功,跳走
00459ECC   .83CB FF         or      ebx, FFFFFFFF
00459ECF   .53                push    ebx
00459ED0   .50                push    eax
00459ED1   .68 80080000       push    880
00459ED6   .E8 38F02F00       call    Foxit_Re.00758F13
00459EDB   .8B4C24 10         mov   ecx, dword ptr       ;弹出注册错误对话框的地方
00459EDF   .51                push    ecx
00459EE0   .FF15 14E57A00   call    dword ptr [<&KERNEL32.Delete>
00459EE6   .E9 35010000       jmp   Foxit_Re.0045A020
00459EEB   >BE 58E38400       mov   esi, Foxit_Re.0084E358       ;跳来到这里
00459EF0   .8D8424 FC000000   lea   eax, dword ptr
00459EF7   >8A10            mov   dl, byte ptr
00459EF9   .83CB FF         or      ebx, FFFFFFFF
00459EFC   .8ACA            mov   cl, dl
00459EFE   .3A16            cmp   dl, byte ptr
00459F00      75 1C             jnz   short Foxit_Re.00459F1E      ;这里还要作一定修改
00459F02   .84C9            test    cl, cl
00459F04   .74 14             je      short Foxit_Re.00459F1A      ;这是跳向成功的地方
>>>>>>



将上面的00459F00处的: jnz   short Foxit_Re.00459F1E

修改为:               nop
                     nop
或者是:               jmp   short Foxit_Re.00459F1A



然后,再在这个关键地方(因为:这就是存放注册成功与否的标志)下[内存写入断点],将软件完整运行一次后,发现其结果并没有被修改,确定软件没有暗桩,OK,至此软件被成功标志位爆破了! 又当了一次伟大的爆破者,呵呵~~   我爆破,所以我光荣!

天涯之海 发表于 2007-11-26 15:12:22

学习下`~~~

tianxj 发表于 2007-11-26 18:53:06

专业爆破,呵呵/:L

晓之晓 发表于 2007-11-26 20:21:10

topcity2001 发表于 2007-11-26 22:55:31

努力看懂大大的教學
學習中

柳韵荷风 发表于 2007-11-26 23:14:29

不错,通俗易懂,学习一下。

wan 发表于 2007-11-27 00:47:39

写得很细,最喜欢这种暴破了/:good

ttt0001 发表于 2007-11-27 15:57:05

不错学习一下!!!!!1谢谢!!!!!!!!1

mdd4293029 发表于 2007-11-27 23:29:37

这个软件很好用!

blitz 发表于 2007-11-29 21:44:38

在确定版本没有问题以后,按照破文上的步骤,走到返回程序领空时地址不正确,反正和教程不符...

我的还没3个字程序就RETN跑了..郁闷..





00758EAC|.85F6          TEST ESI,ESI                           ;Foxit_Re.008D273C
00758EAE|.8BF8          MOV EDI,EAX
00758EB0|.74 05         JE SHORT Foxit_Re.00758EB7
00758EB2|.8B45 F8       MOV EAX,DWORD PTR SS:
00758EB5|.8906          MOV DWORD PTR DS:,EAX
00758EB7|>837D FC 00    CMP DWORD PTR SS:,0
00758EBB|.74 0B         JE SHORT Foxit_Re.00758EC8
00758EBD|.6A 01         PUSH 1                                 ; /Enable = TRUE
00758EBF|.FF75 FC       PUSH DWORD PTR SS:                ; |hWnd
00758EC2|.FF15 20E87A00 CALL DWORD PTR DS:[<&USER32.EnableWindow>; \EnableWindow
00758EC8|>8B4D F0       MOV ECX,DWORD PTR SS:
00758ECB|.6A 01         PUSH 1
00758ECD|.E8 F4FEFFFF   CALL Foxit_Re.00758DC6
00758ED2|.8BC7          MOV EAX,EDI
00758ED4|.5F            POP EDI
00758ED5|.5E            POP ESI
00758ED6|.5B            POP EBX
00758ED7|.C9            LEAVE
00758ED8\.C2 0C00       RETN 0C
页: [1] 2
查看完整版本: [PDF阅读工具]Foxit Reader v2.2 Build2129 的标志位方式爆破