|
|
发表于 2009-7-20 18:50:20
|
显示全部楼层
你可以先了解下DMA。( g( E. q G" w, }# \0 C' f
+ c0 l* G/ p( ^6 d簡單的說要找base addr,
1 c X/ u# M7 R6 e* r8 U我們只需關注pointer。+ H" d3 g' ^2 O3 D% q, ]+ }* u
以下是原理:" u: j* ^! I0 N+ u% j
5 Z$ n. H* w$ g! E# w# m
£ex in x86 asm. {* l8 h6 i3 H: z: b+ x$ ]
1.mov dword ptr ds:[edx+4],edi' Q2 A2 T. ?! Q, K5 H/ W' q1 ?
! E2 J( S: W q' iif the edx+4 is the dma addr which you want to find.
4 F9 F% \7 h+ Y. fedx is the base addr.* e* G) L( P! i2 [0 Q
5 C+ D/ q i H2 j' {' H& b2.lea eax, [8*ecx+ecx]2 x8 K( _) ^3 ]3 z$ p5 n
if the eax is the dma addr which you want to find.
+ ?) c# V5 v- B& A! J- vecx is the base addr.* ~5 f- s! Z- W* x# u' y) p) g
7 G/ m. a( C" N" }" @
1 ?: X! f5 ^# h7 ]& T£ex in C++:3 U( W5 {3 [+ x% W
DWORD *BaseAddr,val=0xea937f26;
) t* O0 C& u% O" DBaseAddr = new DWORD;
+ V3 X9 a* ?( E" |# D*(BaseAddr+4)=val;
6 p2 W5 C" Z3 Bcout<<"OffsetAddr:"<<*(BaseAddr+4)<<endl;# i7 F8 S" B k/ X" ]2 u3 w- h
©2009 VD7 Hacker Team Master- Krizal Chen
& ]* {$ a( f5 n0 m# K$ k: j9 }$ {! A% {; \( c, q @
! f6 ]! h C# R. Q
" v* o. R0 `! l) V% c以上已經涵蓋找出baseaddr需要的原理,
J8 i* ]! r; a0 V W, r3 M( _接著用debugger分析和追蹤程式碼就要靠自己的努力了,
, d. X+ c9 o6 a想學更多的話,個人最近沒什麼時間。
7 Z( R+ V6 ?5 E
3 ~4 h/ w# p, t ?7 p1 M找龍兒吧,如果他願意教的話,
. e! K! B" i2 _2 u你可以學到不少。! f9 m9 C! Z4 A% K7 d
( p- Y9 \7 N# k" P; i/ ]- O
[ 本帖最后由 krizal 于 2009-7-20 20:06 编辑 ] |
|