|
|
发表于 2009-7-20 18:50:20
|
显示全部楼层
你可以先了解下DMA。' p: i) W1 O4 \! r5 H0 |9 ~" N
; _ ]2 _6 k Y2 d" C簡單的說要找base addr,! \" ?' c: z5 c* R6 f2 y
我們只需關注pointer。( D. X7 G) n* j; v
以下是原理:" v3 [0 i# R, q
9 k& u' x7 h1 r8 L) s$ F! c- D: U
£ex in x86 asm
i: d5 l& h" T3 w) e1.mov dword ptr ds:[edx+4],edi
& h! p4 I; ^1 K' y$ L; z5 B/ ?& n, ~3 b* V6 I& `% w) v
if the edx+4 is the dma addr which you want to find.. K1 C% e: q" _; ^- T
edx is the base addr.
4 u. Z, `; ~$ Z& i
5 ]+ p1 V! O, T2.lea eax, [8*ecx+ecx]
% n, J: M5 y% f/ y nif the eax is the dma addr which you want to find. K5 g* ?* F; ?. t S" ^) ?! H
ecx is the base addr.
4 U8 t6 p/ ]! Y, A% G, G6 Y+ A A
$ E# n4 }) @) p% G1 t5 l8 |& U% m/ _+ W" R
£ex in C++:
5 g" H3 z0 n4 I7 U# E7 t, J0 l- p& dDWORD *BaseAddr,val=0xea937f26;
5 b+ l; ]$ n$ H! p% BBaseAddr = new DWORD;
' O9 S, a+ a0 K( O2 L*(BaseAddr+4)=val;( T. ? W) E) E: j6 O. D: V
cout<<"OffsetAddr:"<<*(BaseAddr+4)<<endl;/ F+ X6 B/ S Y7 @7 ~# m' B
©2009 VD7 Hacker Team Master- Krizal Chen# D: p- k, o# O8 @1 T+ c) s+ L
& M$ a+ l w- S* g- X
1 y9 P; _ [: [& z
7 t* I5 r% y6 T j/ e4 h w以上已經涵蓋找出baseaddr需要的原理,+ g6 S7 C% g3 y( D/ L2 C, ~
接著用debugger分析和追蹤程式碼就要靠自己的努力了,1 n' x$ h# i) y. v2 ^0 E$ y, R
想學更多的話,個人最近沒什麼時間。
6 }+ ~% C! H: u8 H$ a+ L1 r% i: a' {: K, {( a* {: f0 u+ W
找龍兒吧,如果他願意教的話,
, _0 [2 j/ X2 E, ?你可以學到不少。6 k1 Z8 y E/ F4 c9 p0 X8 U
, ]$ m: f. d+ Z3 q6 V! l( t. m( }
[ 本帖最后由 krizal 于 2009-7-20 20:06 编辑 ] |
|