[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,至此软件被成功标志位爆破了! 又当了一次伟大的爆破者,呵呵~~ 我爆破,所以我光荣! 学习下`~~~ 专业爆破,呵呵/:L 努力看懂大大的教學
學習中 不错,通俗易懂,学习一下。 写得很细,最喜欢这种暴破了/:good 不错学习一下!!!!!1谢谢!!!!!!!!1 这个软件很好用! 在确定版本没有问题以后,按照破文上的步骤,走到返回程序领空时地址不正确,反正和教程不符...
我的还没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