|
发表于 2009-7-20 18:50:20
|
显示全部楼层
你可以先了解下DMA。
2 b" [; _# G) t' J7 `" c) P7 T7 _( y5 v P* p) v, t( k8 _
簡單的說要找base addr,
: Z4 C, K4 G& q7 o我們只需關注pointer。$ P+ I) d7 \" W& O8 Q( k x
以下是原理:! z3 L, }' N* e
# |" C \' {0 Z5 ~+ ~, m' ?£ex in x86 asm
) g* G6 W& R0 B, [3 ~& k: K) r, @, y1.mov dword ptr ds:[edx+4],edi& b% n, x. x. W0 {1 L
0 o* P9 }% W2 E n5 V/ P4 bif the edx+4 is the dma addr which you want to find.' ^ T X3 Y" J, I4 Y7 A( D
edx is the base addr.* Q5 ?0 T1 @+ F
" n; `8 o* a1 h, f6 a
2.lea eax, [8*ecx+ecx]
0 ~/ j: E0 r$ a1 kif the eax is the dma addr which you want to find." d: R+ C( {" A( }9 f: J
ecx is the base addr.7 j# y- d9 B! S; Z
6 d: Z6 u6 o! s* u( K( d- E! x. |" E
G. n; [0 J; L+ d£ex in C++:
# u5 W/ M% z* N+ e1 R7 ADWORD *BaseAddr,val=0xea937f26;& Y. E; _4 z/ G# k+ M6 z: o" c
BaseAddr = new DWORD;1 X0 {' G1 } ?7 B% i- ~
*(BaseAddr+4)=val;* \& e$ Y: L" z2 Z' e2 n* E, h
cout<<"OffsetAddr:"<<*(BaseAddr+4)<<endl;/ p3 W8 R4 A8 V6 ^, C
©2009 VD7 Hacker Team Master- Krizal Chen! `2 D" q1 }. U* @
$ J1 m8 v: ^- n3 r
4 j; }1 u0 c' o4 @# h
, R5 O2 ?8 J( E7 g/ I% d
以上已經涵蓋找出baseaddr需要的原理,1 ~) ]( a4 R8 |% X _- S
接著用debugger分析和追蹤程式碼就要靠自己的努力了,
$ s9 f( f2 U5 _8 k4 p* ~想學更多的話,個人最近沒什麼時間。
( v/ @+ o' g) V& t2 [' D6 h3 i e1 l. H J* b0 |0 ~' a& m( b
找龍兒吧,如果他願意教的話,
9 i3 b5 Y2 Y( t: U3 }2 v0 l0 f5 p! ]你可以學到不少。
6 U( c) b& b k3 M2 m3 c% U' `% f* F$ F" H0 U
[ 本帖最后由 krizal 于 2009-7-20 20:06 编辑 ] |
|