|
|
发表于 2009-7-20 18:50:20
|
显示全部楼层
你可以先了解下DMA。2 n' z2 U) d+ _3 ^
8 i( U& H8 r" _" U簡單的說要找base addr,8 z# v% q" _2 D7 V0 R7 g* m7 V
我們只需關注pointer。7 a' D# z' R0 d/ K
以下是原理:
# x( ^! p8 y% G0 L( l; o5 X( v- f( p2 Z1 e
£ex in x86 asm6 t* O- e7 ~2 _
1.mov dword ptr ds:[edx+4],edi4 g, D% J5 Q5 O' b( b1 B
9 U. A0 ?% g) _% nif the edx+4 is the dma addr which you want to find.; b A! d. N! m: y
edx is the base addr.
, P* y! q, i5 }; b, b/ g
% e( Z% W4 U- U2.lea eax, [8*ecx+ecx]
) B& g' l E- ] e0 D& R7 qif the eax is the dma addr which you want to find.
- A% c a% r+ u4 Hecx is the base addr.
4 _( F" u0 V. \, x1 r: y# S4 B, R S9 S5 H; e6 j
3 W/ r/ ^7 A# `3 Z7 s£ex in C++:3 F, k1 K2 {; z! e' ~
DWORD *BaseAddr,val=0xea937f26;
, y+ [: J0 `3 NBaseAddr = new DWORD;& u3 v% N- }6 \
*(BaseAddr+4)=val;7 N& X* `' O* ?1 C% @
cout<<"OffsetAddr:"<<*(BaseAddr+4)<<endl;1 T6 `. V7 [# M3 l* ~
©2009 VD7 Hacker Team Master- Krizal Chen" c5 X* j/ S9 R0 c1 \* K+ M/ ]
( G! C4 r$ D) ?- r. Q
* r' d# Q# T! m) W: N) R
4 {; o- g' ^, t/ D以上已經涵蓋找出baseaddr需要的原理,0 U/ B6 [/ ]% T' G$ J
接著用debugger分析和追蹤程式碼就要靠自己的努力了,
" E& F$ W6 ?; N想學更多的話,個人最近沒什麼時間。
$ x% \& e( E+ k x! O& Y: x3 ?4 ?( n, u, ]
找龍兒吧,如果他願意教的話,
& X% U5 n7 ]. i# ]1 w% W. J你可以學到不少。7 u/ S/ d) u, G- g
3 S! o7 r+ \# x. l[ 本帖最后由 krizal 于 2009-7-20 20:06 编辑 ] |
|