好友
阅读权限10
听众
最后登录1970-1-1
|
[sell=3,money]
首先用OD载入原程序,(用ESP定律法来脱)首先用F8单步执行一下,来到关键句的下一个Call,然后到寄存器窗口在ESP值那边点击右键选择:
在数据家口中跟随,然后在地直窗口中找到那个值,右键:断点--->设置硬件访问断点--->Word 再按F9运行来到:
005973B0 /75 08 jnz short FastTV11.005973BA
005973B2 |B8 01000000 mov eax,1
005973B7 |C2 0C00 retn 0C
005973BA \68 E8385100 push FastTV11.005138E8
005973BF C3 retn
这里,大家可以看到很快就到OEP了,然后再按F8单步运行来到:
005138E8 55 push ebp
005138E9 8BEC mov ebp,esp
005138EB B9 06000000 mov ecx,6
005138F0 6A 00 push 0
005138F2 6A 00 push 0
005138F4 49 dec ecx
005138F5 ^ 75 F9 jnz short FastTV11.005138F0
005138F7 53 push ebx
005138F8 56 push esi
005138F9 57 push edi
到OEP了,接下来就脱壳了,用OD自带的插件脱也可以,也可以用其它工具,我在这里就不多说了.呵呵!脱壳成功可以运行!
接下来就开始瀑破了,跟着下面的步骤做就可以了.
首先OD载入脱壳后的程序,然后找到下边这段,可以你们的机器跟我的有些区别,但是只要对照好call后面的00404BA0这个应该是一样的不变的.
找到后F2下断点,再按F9运行,然后会断下来,断到下面这个Call这里,然后用F8单步运行.
0050D11D |. E8 7E7AEFFF call FastTV22.00404BA0 ; callFastTV22.00404BA0 找到这行,F2下断.然后F9运行
0050D122 |. 83E8 0A sub eax,0A ; Switch (cases A..10)
0050D125 |. 74 62 je short FastTV22.0050D189
0050D127 |. 83E8 02 sub eax,2
0050D12A |. 74 17 je short FastTV22.0050D143
0050D12C |. 83E8 02 sub eax,2
0050D12F |. 0F84 18010000 je FastTV22.0050D24D
0050D135 |. 83E8 02 sub eax,2
0050D138 |. 0F84 D3010000 je FastTV22.0050D311 ;这个是个关键跳,(跳向钻石,输入24位假码)一定要让它实现,
;脱壳后的这里没有实现跳转我们要让他实现改成下面这句
0050D138 . /E9 D4010000 jmp FastTV.0050D311 ; 这句是已经实现跳转的,其实就把JE改成JMP就可以了.
0050D13E |. E9 A5030000 jmp FastTV22.0050D4E8
0050D143 |> 68 CCC15100 push FastTV22.0051C1CC ; Case C of switch 0050D122
0050D482 |. E8 6578EFFF call FastTV22.00404CEC ;
0050D487 |. 75 5F jnz short FastTV22.0050D4E8 ; 关键跳(叛断注册码是否正确)脱壳后的程序是实现跳转了,
0050D489 |. C683 6C050000 01 mov byte ptr ds:[ebx+56C],1 ; 如果跳了就无法判断,所以要把他NOP掉不让他实现跳转.
0050D490 |. 833D D4C15100 01 cmp dword ptr ds:[51C1D4],1
0050D497 |. 74 07 je short FastTV22.0050D4A0
0050D499 |. C683 6D050000 01 mov byte ptr ds:[ebx+56D],1
0050D4A0 |> B8 D0C15100 mov eax,FastTV22.0051C1D0
0050E710 . E8 6711FBFF call FastTV22.004BF87C ;关键Call缓冲很慢可能是网络验证我们先把他NOP掉
0050E715 . 33C0 xor eax,eax
0050E717 . 55 push ebp
0050E718 . 68 B0E75000 push FastTV22.0050E7B0
0050E71D . 64:FF30 push dword ptr fs:[eax]
0050E720 . 64:8920 mov dword ptr fs:[eax],esp
0050E723 . 8B45 FC mov eax,dword ptr ss:[ebp-4]
0050E726 . 8B88 64050000 mov ecx,dword ptr ds:[eax+564]
0050E72C . 8D45 D4 lea eax,dword ptr ss:[ebp-2C]
0050E72F . BA CCE85000 mov edx,FastTV22.0050E8CC ; ASCII "http://www.jesen.cn/fasttv/check/isdaolian.asp?id="
0050E739 . 8B45 D4 mov eax,dword ptr ss:[ebp-2C]
0050E73C . 8D55 D8 lea edx,dword ptr ss:[ebp-28]
0050E73F . E8 C434FDFF call FastTV22.004E1C08 ;关键Call有些OD会跑飞掉,缓冲也比较慢,所以这个也可能是网络验证的代码
0050E744 . 8B45 D8 mov eax,dword ptr ss:[ebp-28]
0050E747 . 8D55 F4 lea edx,dword ptr ss:[ebp-C]
0050E74A . E8 7DAAEFFF call FastTV22.004091CC
0050E74F . A1 B0A95100 mov eax,dword ptr ds:[51A9B0]
0050E754 . 8B00 mov eax,dword ptr ds:[eax]
0050E756 . E8 BDCBF6FF call FastTV22.0047B318
0050E75B . 8B45 F4 mov eax,dword ptr ss:[ebp-C]
0050E75E . BA 08E95000 mov edx,FastTV22.0050E908 ; 已过期
0050E763 . E8 8465EFFF call FastTV22.00404CEC
0050E768 . 75 0A jnz short FastTV22.0050E774
0050E76A . 8B45 FC mov eax,dword ptr ss:[ebp-4]
0050E76D . E8 5AE4FFFF call FastTV22.0050CBCC
0050E772 . EB 32 jmp short FastTV22.0050E7A6
0050E774 > 8B45 F4 mov eax,dword ptr ss:[ebp-C]
0050E777 . BA 18E95000 mov edx,FastTV22.0050E918 ; 1
0050E77C . E8 6B65EFFF call FastTV22.00404CEC
0050E781 . 75 0C jnz short FastTV22.0050E78F
0050E783 . 8B45 FC mov eax,dword ptr ss:[ebp-4]
0050E786 . C680 6D050000 00 mov byte ptr ds:[eax+56D],0
0050E78D . EB 17 jmp short FastTV22.0050E7A6
0050E78F > 8B45 F4 mov eax,dword ptr ss:[ebp-C]
0050E792 . BA 24E95000 mov edx,FastTV22.0050E924 ; !已注册
好大功告成,可以把修改的程序全部保存了,这样破解就达到了瀑破,开起程序后会发现已经是钻版本了,可以看所有的节目
还有大家可以在跟踪上面这些代码的时候可以跟踪注册码出来的.这里就不再讲了,大家去跟踪一下吧.
第一次写破文希望大家多多支持,写的不对的地方请大家多多指教.谢谢![/sell] |
|