|
|
发表于 2009-7-20 18:50:20
|
显示全部楼层
你可以先了解下DMA。' }* \2 W' i" e- K+ G
, z. a, X7 P1 W0 t5 @+ H簡單的說要找base addr,# A7 k, q. U$ [# D1 y* _! j
我們只需關注pointer。
0 n$ [7 c, g( h以下是原理:$ `. K. e: w U/ e ^ A0 g
, i, s" V3 p: T2 q
£ex in x86 asm
5 e5 f6 F7 F6 B% u5 W/ Y1.mov dword ptr ds:[edx+4],edi
) y8 q6 W! K j* W0 g& ] Z0 M1 y! _5 m) ~* U3 W* L; t
if the edx+4 is the dma addr which you want to find.
# Y4 l' x* Q" U2 W( Dedx is the base addr.4 T( H$ \& T9 w. h
2 @' M" g7 E& u$ d/ k4 u1 `2.lea eax, [8*ecx+ecx]! H# k' F; Z) Z
if the eax is the dma addr which you want to find.
9 s! I0 U( \3 |# R; Q5 v: S3 Decx is the base addr.6 T/ O6 @. T+ s* ]$ p' v1 C
2 X& l7 i4 r- @; l0 u2 L4 z z. @/ F" C& Y [
£ex in C++:
% V0 m2 Z3 Y1 NDWORD *BaseAddr,val=0xea937f26; X" h7 f3 p" ^, H3 p7 c
BaseAddr = new DWORD;
& q4 l7 [8 H1 Q- ?8 u# S/ Q: ~5 r*(BaseAddr+4)=val;& A. J/ e6 n4 C
cout<<"OffsetAddr:"<<*(BaseAddr+4)<<endl;8 B$ G/ D5 j: t) n: h4 }( D
©2009 VD7 Hacker Team Master- Krizal Chen
' C' r) v8 S) q* t( k
8 u$ ]& A; b8 i' M' U4 u( H9 |) g& O6 B0 @) h( H
+ y! x' e) v5 z, y( |1 Y2 U4 s" \7 z以上已經涵蓋找出baseaddr需要的原理,: D' h3 x# B7 d+ e p
接著用debugger分析和追蹤程式碼就要靠自己的努力了,
0 L9 T3 r6 Y# q# M$ w7 t/ O [$ q. Z1 w想學更多的話,個人最近沒什麼時間。- p, l1 s9 e P5 O3 E, q$ j
8 {! P }" B9 r* ^+ H
找龍兒吧,如果他願意教的話,+ q4 j4 \) ?8 k, `) Z) ?& P: ^: f
你可以學到不少。5 x' q$ S+ O5 V
( f$ Y5 m1 O, y3 z+ B! r[ 本帖最后由 krizal 于 2009-7-20 20:06 编辑 ] |
|