转贴: 过神鬼传奇SSDT HOOK 方法

原贴: 手把手教你使用WINDBG KO XXXX游戏驱动保护 vcD'~)G(*  
来源于: http://bbs.pediy.com/showthread.php?t=77952 K#U{<pUP  
0JOju$Bl,  
"] 9_Fv  
【破文标题】手把手教你使用WINDBG KO XXXX游戏驱动保护 k%a?SU< f  
【破文作者】lj8888 z7$}#)Z7  
【作者邮箱】xxxx@163.com \Em-.%c  
【作者主页】- a#6,#Q"  
【破解工具】windbg 6.7 t"#lnG!G  
【破解平台】D版 XP SP3 pJ$(ozV  
【软件名称】 D)RdOldr  
【软件大小】 6;[1Jz]?i  
【原版下载】 z4 nou>  
【保护方式】 !4!S{#<q  
【软件简介】当前正在内测的大型网游 ~ |J*E38  
【破解声明】菜鸟提供一点破解验证另类思路。如有失误之处纯属意外! 请高手直接飘过! }$&);7(w  
------------------------------------------------------------------------ HK=CP0H  
前言: 如果你不会写驱动 不懂内核 没关系 今天 就有我来手把手教你 使用内核调式器WINDBG KO  PerfectProtector.sys 'G3+2hah  
k^~@9F5k  
FDZeIj9uF  
【破解过程】需要工具 windbg 6.7汉化版 RkUnhooker 3.7 (请自行网上下载 资源很多) ;N9n'Sq4  
b"*mi  
首先 安装后windbg 并运行它 与 RkUnhooker (无先后分别) KLj4 LOs  
zLE>kK  
然后运行 神鬼传奇 并将它更新到最新版本 游戏运行完后 停在登陆界面 @|jKO5Y  
Y8{T.\%\+  
切换到 RkUnhooker  点 SCAN  向下看 我们看到 n$}R/*  
nt!NtOpenProcess m1M;'tT@  
nt!NtReadVirtualMemory $4#=#aKW.  
nt!NtWriteVirtualMemory Po2_ 0uX  
jb#1&L 14  
  01.GIF (48.97 KB) tIc0S!H#  
e3oYy#QNk  
2008-12-2 23:22 {7j6$.7J$&  
QSl:=Q '  
这3个函数显示 YES 表示被HOOK 记下Address地址 我们用WINDBG 去看看 @ ~0G$  
A>ug'.  
好切换到WINDBG 菜单-打开-内核调式-本地的-确定 提示是否保存 选是 p4<M|1Z&  
F|h ,a;2  
菜单-查看-命令浏览器  我们打入命令 uf 0xaa096314 (我这里的Address 和你的也许不同 注意看清楚!!) P^uP$D  
a{%52B"  
  02.GIF (116.31 KB) a3(7{,Ew  
Hz;jJ&S  
2008-12-2 23:22 =%#$HQ=  
Sx4UaV~"  
aa096314 PUSH EBP                ] _]6&PZXk  
aa096315 MOV EBP,ESP            ,*O{jc`(  
aa096317 ADD ESP,-28            >8Yrmq  
aa09631a CALL AA096091          L2V $%*6  
aa09631f JMP SHORT AA09633F  S:B- nI  
T/spUlWu  
简单浏览 CALL AA096091 非处理函数 我们直接 入命令 uf AA09633F K:lT-*+S  
k 0Vo  
aa09633f PUSH AA096321          `'WY'\|C  
aa096344 PUSH AA096424          +ke42Jwt  
aa096349 PUSH AA0998D7          lLwQridFXh  
aa09634e PUSH DWORD PTR FS:[0]  z6>ZV6(d2^  
aa096355 MOV FS:[0],ESP          6@_@nlA<1  
aa09635c MOV DWORD PTR [EBP-4],C0000023 Xk9r"RmiOb  
aa096363 MOV DWORD PTR [EBP-C],0 uD*s^  
aa09636a CALL AA099D96          0f}Q~d=QL  
aa09636f MOV [EBP-8],EAX        kBQenMm  
aa096372 CMP DWORD PTR [EBP+8],-1 }W>[OY0^A  
aa096376 JNZ SHORT AA096384      %dWFg<< |  
aa096378 MOV DWORD PTR [EBP-C],-1 `F`'b)  
aa09637f JMP AA09640B            hq[ gj?P  
aa096384 PUSH EDI                ]TZWFL-  
aa096385 LEA EDI,[AA09ACC4]      DP'Dg /D  
aa09638b MOV ECX,50              3ij I2Zy  
aa096390 SHR ECX,2              F p=Q$J|  
aa096393 MOV EAX,[EBP-8]        s{EX ;   
aa096396 CLD                    <XcM c<h~  
aa096397 REPNE SCAS BYTE PTR ES:[EDI] NF.6(PG|  
aa096398 SCAS DWORD PTR ES:[EDI] KGLhl;a  
aa096399 POP EDI                8!`.%)- 4  
aa09639a OR ECX,ECX              X ^ ]$/rI)  
aa09639c JE SHORT AA0963A0      7tO$'q*h  
aa09639e JMP SHORT AA09640B      _N#3lU?  
aa0963a0 LEA EAX,[EBP-10]        #$rT 4N c;  
aa0963a3 PUSH EAX                &>B>+ }'  
aa0963a4 PUSH 18                72.IhBNtT  
aa0963a6 LEA EAX,[EBP-28]        e>9{36~jh  
aa0963a9 PUSH EAX                RKb3=} *C  
aa0963aa PUSH 0                  XFAt\g  
aa0963ac PUSH DWORD PTR [EBP+8]  L k+1r8  
aa0963af CALL AA099CF4          zd]L9 _  
aa0963b4 OR EAX,EAX              p<['FRf"  
aa0963b6 JNZ SHORT AA0963C0      {NqGWkGt*b  
aa0963b8 PUSH DWORD PTR [EBP-18] pg`;)@  
aa0963bb POP DWORD PTR [EBP-C]  q)i(wEdUZ  
aa0963be JMP SHORT AA0963D2      ?kefRev<#h  
aa0963c0 PUSH EAX                Ci:Q Isu*  
aa0963c1 PUSH 1                  ,"R_ve  
aa0963c3 PUSH 83                f#MN-1[67  
aa0963c8 CALL AA093ACB          j"=jK ^  
aa0963cd ADD ESP,C              Y)RikF >  
aa0963d0 JMP SHORT AA09640B      ^/,yZ:  
aa0963d2 CMP DWORD PTR [EBP-C],0 !A0bbJ  
aa0963d6 JNZ SHORT AA0963DA      #<3\}*/  
aa0963d8 JMP SHORT AA09640B      |g+5rVbd  
aa0963da MOV EAX,[EBP-C]        [AwE  
aa0963dd CMP EAX,[EBP-8]        +y(h/NcQ  
aa0963e0 JNZ SHORT AA0963E4      (#`o >G(  
aa0963e2 JMP SHORT AA09640B      |XZf:}q5:  
aa0963e4 PUSH ESI                )YnN9"8  
aa0963e5 MOV EAX,20              qo|iw+0Y  
aa0963ea SHR EAX,2              (#lS?+w)  
aa0963ed MOV ECX,[EBP-C]        Yd'ke,Je  
aa0963f0 LEA ESI,[AA09C118]      O:)@J b2  
aa0963f6 JMP SHORT AA096400      RPwSo.c4  
aa0963f8 CMP [ESI],ECX          (""&$BJQ|  
aa0963fa JE SHORT AA096404      W kE;tC*  
aa0963fc ADD ESI,4              DK;-2K  
aa0963ff DEC EAX                l"CONzm!  
aa096400 OR EAX,EAX              /FY_LM  
aa096402 JNZ SHORT AA0963F8      7 pV3#fQ  
aa096404 POP ESI                AsOI`@FV  
aa096405 OR EAX,EAX              qS>el3G  
aa096407 JE SHORT AA09640B      = 1C9lKm  
aa096409 JMP SHORT AA096424      qI9 BAs1~}  
aa09640b PUSH DWORD PTR [EBP+18] :M16ijkx  
aa09640e PUSH DWORD PTR [EBP+14] 2cL<`  
aa096411 PUSH DWORD PTR [EBP+10] ~Q5HM  
aa096414 PUSH DWORD PTR [EBP+C]  qW*)]s)z  
aa096417 PUSH DWORD PTR [EBP+8]  ?~"RCZ[;.f  
aa09641a MOV EAX,[AA09AD1C]      c)?y3LX  
aa09641f CALL EAX                ?]S*=6  
aa096421 MOV [EBP-4],EAX        zKo,B/Ke4  
aa096424 MOV EAX,[EBP-4]        G 9;WO*  
aa096427 POP DWORD PTR FS:[0]    mSs%gL]g  
aa09642e ADD ESP,C              K\#+;\V  
aa096431 DEC DWORD PTR [AA09ADB8] /n_N`VJ7H  
aa096437 LEAVE                  sNWj+T  
aa096438 RETN 14                u7K0m! jW  
tlE+G@|^  
我们简单的上下看了一下  基本结构很清晰 aa09640b 这里开始 是nt!NtWriteVirtualMemory 5个参数 -70Ut 4B  
3/iGSG`  
aa09641a MOV EAX,[AA09AD1C]  应该指向原始函数地址 我们去看看 I/c* ?  
Y%2<}3P  
  03.GIF (21.28 KB) /p~gm\5Z  
6 LC*X  
2008-12-2 23:22 *+5AN306  
#8cY,%<S]  
菜单-查看-内存 在Virtual中打入 AA09AD1C 看到没有 如果你看不习惯可以这样选long hex 这样很直观了吧? 5E$)Ip  
ACs?m\$Q  
  04.GIF (24.89 KB) mjf U[2  
d+$a5 [^9  
2008-12-2 23:22 ~b*f2UVs  
/_v@YB!0  
805b5394 就是原始 nt!NtWriteVirtualMemory 函数地址 我们记下这个结构 +v/_R{ M  
`8EHhN;  
aa09640b PUSH DWORD PTR [EBP+18] - 3kg,=HU;  
aa09640e PUSH DWORD PTR [EBP+14] #7GbG\  
aa096411 PUSH DWORD PTR [EBP+10] >zVj+  
aa096414 PUSH DWORD PTR [EBP+C]  [;%qxAB/_  
aa096417 PUSH DWORD PTR [EBP+8]  46Vx)xX  
aa09641a MOV EAX,[AA09AD1C]      q<dZy? f  
aa09641f CALL EAX                b$[O^p9x  
@Pb!:HeJE  
完美调用原始函数结构 现在知道了 关键代码 下面我们在回到函数头查看 >8\EdN59{  
 $ac VJI?  
aa096349 PUSH AA0998D7          q3<Pb,Z  
aa09634e PUSH DWORD PTR FS:[0]  -AWL :<  
aa096355 MOV FS:[0],ESP          kWZ?86!  
aa09635c MOV DWORD PTR [EBP-4],C0000023 传入参数C0000023 v2][gn+58  
aa096363 MOV DWORD PTR [EBP-C],0        传入参数0 }&M  $  
aa09636a CALL AA099D96                  初步效验        ~H`~&?  
aa09636f MOV [EBP-8],EAX                返回值赋予局部变量 XR3=Y0YDf  
aa096372 CMP DWORD PTR [EBP+8],-1      比较是否-1也就是 0FFFFFFFFh 8K$q6V%#  
aa096376 JNZ SHORT AA096384            V/"P};n  
aa096378 MOV DWORD PTR [EBP-C],-1 HY|=Z\l"  
p}I ,!~}  
这里我们就直接KO它 改写aa09635c执行流程 让它直接执行到aa09640b M*6}#ST  
|:Q`9;  
JMP aa09640b  这个怎么算的 目标地址-当前地址-5 D_VAtz  
&ZmWR  
好的回到内存窗口 打入aa09635c 切换为BYTE 字节查看 ] /w: 5o#  
H & L  
打入E9 AA 00 00 00 好的流程被改写了 这样这个nt!NtWriteVirtualMemory函数 就被KO了 =GGt:3Kx-  
uv >T8(w  
  05.GIF (19.03 KB) %uA\Le  
\l$gcFXb  
2008-12-2 23:22 y<#?z 8P  
$;@L PE  
怎么样是不是很简单? 我们继续完成后面个函数  切换 windbg 命令窗口 dG {D2~#  
.@7J8FS*  
打入uf 0xaa0961ee 我这里的nt!NtReadVirtualMemory HOOK 地址 /1s|FI$-L  
?<7o\Xk#{  
aa0961ee PUSH EBP                #a : W  
aa0961ef MOV EBP,ESP            @#wBK3Ut^  
aa0961f1 ADD ESP,-28            DH@})TN*O  
aa0961f4 CALL AA096091          1K<4Kz~  
aa0961f9 JMP SHORT AA096218 c(:qid  
o'9K8q\1  
aa096218 PUSH AA0961FB          IO, kGUS  
aa09621d PUSH AA0962FD          G|WO  
aa096222 PUSH AA0998D7          +W=  
aa096227 PUSH DWORD PTR FS:[0]  oN0p$/La  
aa09622e MOV FS:[0],ESP           }YPW@g  
aa096235 MOV DWORD PTR [EBP-4],C0000023 *""JE'wG  
aa09623c MOV DWORD PTR [EBP-C],0 vkQ81PEt  
aa096243 CALL AA099D96          #Kr\"o1]  
aa096248 MOV [EBP-8],EAX        . *9+%FN  
aa09624b CMP DWORD PTR [EBP+8],-1 '/Y D$*,  
aa09624f JNZ SHORT AA09625D      KK}?x6wV0,  
aa096251 MOV DWORD PTR [EBP-C],-1 lu]Z2xSv  
aa096258 JMP AA0962E4             zw13Tu  
aa09625d PUSH EDI                aY/msplC  
aa09625e LEA EDI,[AA09ACC4]      uxbDRlOS  
aa096264 MOV ECX,50              aWp9K+4R$/  
aa096269 SHR ECX,2              y:FxX8S$'e  
aa09626c MOV EAX,[EBP-8]        /(`B;?  
aa09626f CLD                    $O n  
aa096270 REPNE SCAS BYTE PTR ES:[EDI] F vJJpPS  
aa096271 SCAS DWORD PTR ES:[EDI] Je|D]w  
aa096272 POP EDI                LGxQ>f[V  
aa096273 OR ECX,ECX              &4aY5y`8+f  
aa096275 JE SHORT AA096279      |!0R"lv'u  
aa096277 JMP SHORT AA0962E4      _}_lrg}U  
aa096279 LEA EAX,[EBP-10]        wm3fd 7T  
aa09627c PUSH EAX                %h "+J  
aa09627d PUSH 18                #3:;&@#  
aa09627f LEA EAX,[EBP-28]        Q77iMb]  
aa096282 PUSH EAX                ELF,T (  
aa096283 PUSH 0                  UOWOOdWS B  
aa096285 PUSH DWORD PTR [EBP+8]  OG# 7Va  
aa096288 CALL AA099CF4          +6vm4(3?  
aa09628d OR EAX,EAX              G$ l>By  
aa09628f JNZ SHORT AA096299      By3/vb)M5  
aa096291 PUSH DWORD PTR [EBP-18] "s']@Qv  
aa096294 POP DWORD PTR [EBP-C]  b"Hg4i)  
aa096297 JMP SHORT AA0962AB      1goK>=-^  
aa096299 PUSH EAX                cmQLkT"#K  
aa09629a PUSH 1                  / jI>=:z  
aa09629c PUSH 82                Jo1=C.V`Y  
aa0962a1 CALL AA093ACB          6gS<h \h0  
aa0962a6 ADD ESP,C              r4}:t$  
aa0962a9 JMP SHORT AA0962E4      U8?% Dq%i  
aa0962ab CMP DWORD PTR [EBP-C],0 ;0V{^  
aa0962af JNZ SHORT AA0962B3      }U$Yiv  
aa0962b1 JMP SHORT AA0962E4      N|eus3\E  
aa0962b3 MOV EAX,[EBP-C]        wi]|"\  
aa0962b6 CMP EAX,[EBP-8]        #!\g5 ')mC  
aa0962b9 JNZ SHORT AA0962BD      TY"=8}X1  
aa0962bb JMP SHORT AA0962E4      H"4^  
aa0962bd PUSH ESI                ]|[,N>  
aa0962be MOV EAX,20              D@tuu]%p  
aa0962c3 SHR EAX,2               +Io^U  
aa0962c6 MOV ECX,[EBP-C]        _X{i hf  
aa0962c9 LEA ESI,[AA09C118]      Wa~'p+<c~b  
aa0962cf JMP SHORT AA0962D9      5haJPWG|'  
aa0962d1 CMP [ESI],ECX          0|8c2{9X,  
aa0962d3 JE SHORT AA0962DD      ~4o2!!^tI  
aa0962d5 ADD ESI,4              O3#4B!J$E  
aa0962d8 DEC EAX                %'Ebm  
aa0962d9 OR EAX,EAX              D`3m% O (?  
aa0962db JNZ SHORT AA0962D1      [;II2[5 ,  
aa0962dd POP ESI                ZLe@O~f;%  
aa0962de OR EAX,EAX              A:F *Y%ZW  
aa0962e0 JE SHORT AA0962E4      b Mi,z3z  
aa0962e2 JMP SHORT AA0962FD      &; 5QB  
aa0962e4 PUSH DWORD PTR [EBP+18] "ZF:}y  
aa0962e7 PUSH DWORD PTR [EBP+14] aH'Sz'|E  
aa0962ea PUSH DWORD PTR [EBP+10] !'(bwbd  
aa0962ed PUSH DWORD PTR [EBP+C]  =ZjF5,@  
aa0962f0 PUSH DWORD PTR [EBP+8]  H cwqVU  
aa0962f3 MOV EAX,[AA09AD18]      ]&w>p#_C  
aa0962f8 CALL EAX                l'HrU 1_7Y  
aa0962fa MOV [EBP-4],EAX        Zp]{e6J  
aa0962fd MOV EAX,[EBP-4]        xM}lX(V!w  
aa096300 POP DWORD PTR FS:[0]    '}4LHB;:  
aa096307 ADD ESP,C              5hak'#2  
aa09630a DEC DWORD PTR [AA09ADB8] 74hGkf^S  
aa096310 LEAVE                  C4e3Itc9X  
aa096311 RETN 14                ykc$B5*  
w?]k$  
是不是很眼熟啊? 对滴 还记的哪个结构不? Q]Q]kj2  
pB;)H ii\  
aa0962e4 PUSH DWORD PTR [EBP+18] Y}%=:Yt  
aa0962e7 PUSH DWORD PTR [EBP+14] EeC5HgIU'C  
aa0962ea PUSH DWORD PTR [EBP+10] VXlTA>a }  
aa0962ed PUSH DWORD PTR [EBP+C]  HV ab14}E  
aa0962f0 PUSH DWORD PTR [EBP+8]  "?a(JC  
aa0962f3 MOV EAX,[AA09AD18]      7c$;-O  
aa0962f8 CALL EAX  _UKH1qUd4  
.n1]Yk;,1  
这里也和上面一样的操作 我就直接 说结果了 改写 aa096235 JMPaa0962e4 $[txZN  
//*>p  
在内存窗口 打入 打入E9 AA 00 00 00 (连偏移都一样 汗一个) %tiFx:F+  
N 4Yvt&   
打入uf 0xaa096098 我这里的nt!NtOpenProcess HOOK 地址 R06q~ >  
wjYwQ=y5  
aa096098 PUSH EBP                w. exLC  
aa096099 MOV EBP,ESP            r2H_)Oi  
aa09609b ADD ESP,-30            K| #%u2C  
aa09609e CALL AA096091          i~ D,  
aa0960a3 JMP SHORT AA0960BC  p|VoIQ Y  
/pzEL  
aa0960bc PUSH AA0960A5          H@Dj$U  
aa0960c1 PUSH AA0961D7          ;i|V++$_  
aa0960c6 PUSH AA0998D7          diN5*CF'~  
aa0960cb PUSH DWORD PTR FS:[0]  aLapb5VV  
aa0960d2 MOV FS:[0],ESP          l?E7'OEF:  
aa0960d9 PUSH DWORD PTR [EBP+14] fnV^&`BB  
aa0960dc PUSH DWORD PTR [EBP+10] t. B %7e  
aa0960df PUSH DWORD PTR [EBP+C]  -Gjz;/s%XH  
aa0960e2 PUSH DWORD PTR [EBP+8]  rxtp?|v9  
aa0960e5 MOV EAX,[AA09AD14]      < wV?B9j  
aa0960ea CALL EAX                ' ms&ty*T  
aa0960ec MOV [EBP-8],EAX        n]G!@- z  
aa0960ef OR EAX,EAX              H SEfpbh  
aa0960f1 JE SHORT AA0960F8      4A(kM}uRB  
aa0960f3 JMP AA0961D7            - `^594  
aa0960f8 PUSH ECX                )Cl!,m)~  
aa0960f9 MOV ECX,[EBP+C]        e\%emp->  
aa0960fc AND ECX,30               wc# #'u  
aa0960ff OR ECX,ECX              x#z}A&  
aa096101 JNZ SHORT AA096109      ]#>;C:L  
aa096103 POP ECX                9&e=s<6dO  
aa096104 JMP AA0961D7            8z\v|-%Z  
aa096109 POP ECX                NUH;\*]8s  
aa09610a CALL AA099D96          aq/'2U 7  
aa09610f MOV [EBP-C],EAX        X1Vx 6+[  
aa096112 PUSH EDI                \ci'Cbn\o  
aa096113 LEA EDI,[AA09ACC4]      oJ}!qrrH  
aa096119 MOV ECX,50              !bEy~.  
aa09611e SHR ECX,2              ~Y=v@] 2/  
aa096121 MOV EAX,[EBP-C]        >|h$d:~n  
aa096124 CLD                    {s^vAD<~x3  
aa096125 REPNE SCAS BYTE PTR ES:[EDI] Kgev*xg  
aa096126 SCAS DWORD PTR ES:[EDI] *fs'%"w-  
aa096127 POP EDI                8^bc4(H  
aa096128 OR ECX,ECX              t+C9QXY  
aa09612a JE SHORT AA096131      Vgzw['L}  
aa09612c JMP AA0961D7            ~zdHJ8tYp  
aa096131 MOV EAX,[EBP+14]        %"#%/>U4  
aa096134 OR EAX,EAX              L< 3U)Gp  
aa096136 JE SHORT AA09613F      Skm$:`u;  
aa096138 MOV EAX,[EAX]          #Av6BGM|,  
aa09613a MOV [EBP-10],EAX        $nX4!X  
aa09613d JMP SHORT AA096146      6$42 -a%b  
aa09613f MOV DWORD PTR [EBP-10],0 |g o jb  
aa096146 CMP DWORD PTR [EBP-10],0 O0|**Km\+  
aa09614a JNZ SHORT AA09618E      EP!zcp2' C  
aa09614c MOV EAX,[EBP+8]        ED9uKp<Wbv  
aa09614f PUSH DWORD PTR [EAX]    Jxyeh1z qB  
aa096151 POP DWORD PTR [EBP-4]  :wlX`YW+e  
aa096154 LEA EAX,[EBP-14]        T(< [k:`  
aa096157 PUSH EAX                ; W ZA  
aa096158 PUSH 18                =P* YwLb  
aa09615a LEA EAX,[EBP-30]        \W"N{N  
aa09615d PUSH EAX                x2@Q5|a  
aa09615e PUSH 0                  &`` dI,NC  
aa096160 PUSH DWORD PTR [EBP-4]  +4[L_  
aa096163 CALL AA099CF4          k91ctEp9>  
aa096168 OR EAX,EAX              :o!bz>T  
aa09616a JNZ SHORT AA096174      |nfFI  
aa09616c PUSH DWORD PTR [EBP-20] B/P E{ /  
aa09616f POP DWORD PTR [EBP-10]  ROWb:tX}  
aa096172 JMP SHORT AA096186      =(!&8U9  
aa096174 PUSH EAX                Y}G9(Ci&  
aa096175 PUSH 1                  };rxpw>ms  
aa096177 PUSH 81                K^H{B& b8  
aa09617c CALL AA093ACB          80i-)a\n  
aa096181 ADD ESP,C              vDG AC'  
aa096184 JMP SHORT AA0961D7      B@v\tpR  
aa096186 CMP DWORD PTR [EBP-10],0 RnvPqNs  
aa09618a JNZ SHORT AA09618E      .@#GNZe  
aa09618c JMP SHORT AA0961D7      ?{@UB*  
aa09618e MOV EAX,[EBP-10]        {8'f>YP  
aa096191 CMP EAX,[EBP-C]        pzkl;"gK  
aa096194 JNZ SHORT AA096198      A Th<=1  
aa096196 JMP SHORT AA0961D7      h($XR+!#  
aa096198 PUSH ESI                q9cN2|:  
aa096199 MOV EAX,20              /S}4J"  
aa09619e SHR EAX,2              q%G"P*g$(  
aa0961a1 MOV ECX,[EBP-10]        q_5hKipd\b  
aa0961a4 LEA ESI,[AA09C118]      ({"jL*S,q  
aa0961aa JMP SHORT AA0961B4      !$q *~F"S  
aa0961ac CMP [ESI],ECX          rA=iBb3`  
aa0961ae JE SHORT AA0961B8      1 P0)La#  
aa0961b0 ADD ESI,4              GmjTxNU@  
aa0961b3 DEC EAX                Ng1{ NI+S  
aa0961b4 OR EAX,EAX              IB'gY0*  
aa0961b6 JNZ SHORT AA0961AC      p!b_tyJ  
aa0961b8 POP ESI                W7\s=t\  
aa0961b9 OR EAX,EAX              q6A"+w,N  
aa0961bb JE SHORT AA0961D7      cft'%IEs  
aa0961bd PUSH DWORD PTR [EBP-4]  ?}mbp4+j [  
aa0961c0 CALL AA099DAE          \$Jz26 -n  
aa0961c5 MOV EAX,[EBP+8]        ! 4?QR  
aa0961c8 MOV DWORD PTR [EAX],0  UWf@(8  
aa0961ce MOV DWORD PTR [EBP-8],C000000D [M;B 9-2$  
aa0961d5 JMP SHORT AA0961D7      9'{i |xG  
aa0961d7 MOV EAX,[EBP-8]        \DgWp:|  
aa0961da POP DWORD PTR FS:[0]    6 _Cc+}W  
aa0961e1 ADD ESP,C              f@)GiLC'"  
aa0961e4 DEC DWORD PTR [AA09ADB8] Z%_m<Nf8T  
aa0961ea LEAVE                  v}>5!*  
aa0961eb RETN 10                It@1!_tO2  
ywCF{rRd  
这个函数有点不一样哦 我们抓住它的结构不放 9_/dj"5  
/Y7Yy jMi  
aa0960d9 PUSH DWORD PTR [EBP+14] =Felo8+   
aa0960dc PUSH DWORD PTR [EBP+10] IT5a/;J  
aa0960df PUSH DWORD PTR [EBP+C]  w~lxWgaY7  
aa0960e2 PUSH DWORD PTR [EBP+8]  \c .^^8r  
aa0960e5 MOV EAX,[AA09AD14]      ;bh[TmQTJ  
aa0960ea CALL EAX                {CVn&|}J  
ndB [f  
nt!NtOpenProcess 的4个参数 吻合  0+P[0  
iAd3w6  
aa0960ec MOV [EBP-8],EAX        Scfk] DT  
aa0960ef OR EAX,EAX              Ac,Qj`'V  
aa0960f1 JE SHORT AA0960F8       +bC=yR  
aa0960f3 JMP AA0961D7        /OaW4 b$Tz  
Y7L1`<SC  
简单分析下 返回值保存在变量 然后 或运算 想等继续处理 我们查看 aa0960f3 JMP AA0961D7 F/(z3 Kf  
^@a|s Sb  
不相等是如何处理 3ug-cq  
v? VNWK2  
aa0961d7 MOV EAX,[EBP-8]        5[\LQtM  
aa0961da POP DWORD PTR FS:[0]    \A'tV/YAd  
aa0961e1 ADD ESP,C              bf2B  
aa0961e4 DEC DWORD PTR [AA09ADB8] < `/22S"  
aa0961ea LEAVE                  (='e9H!3D  
aa0961eb RETN 10 r: :LQ$  
=SEgv;#KZ~  
取出返回值 过场 这样就完了? 那很明显 直接KO aa0960f1 2个 90 (NOP) 解决 /O$7A7Tl  
%l.5c Sn@  
到这里 驱动保护 3个函数 已经被 KO了  我们可以直接读写他的内存了 ^_^  q(C <w  
}+wvZq +c  
本次教程结束 谢谢观看 /eI]!a  
------------------------------------------------------------------------ <8[y2|UBt  
【破解总结】怀念一下混于ICY群内的日子 ] L E  
!eH9LRp  
内核操作请注意 保存资料 避免死机 蓝屏 损失 jLy3c@Dp  
mTsl"A>  
不懂的看个流程 懂的看个思路 0OrT{jo  
NGYUZ\m

posted @ 2011-09-16 15:49  Max Woods  阅读(763)  评论(0编辑  收藏  举报