|
|
发表于 2009-7-20 18:50:20
|
显示全部楼层
你可以先了解下DMA。
1 j# H6 V3 s/ e5 O6 _+ Y
# K' l0 ]$ e. x6 _ V O/ s簡單的說要找base addr,) _' j% }2 E- w6 v9 D% ]
我們只需關注pointer。6 Y( k# u: x; n6 Z! r( E4 G
以下是原理:/ ]* g3 f' v* Z0 P
: \% q$ l2 W9 T6 K$ n
£ex in x86 asm. W H8 d) H' m* p
1.mov dword ptr ds:[edx+4],edi6 b: R. i9 X! }) {& ~
7 Q+ v7 M, Y" o- @; R& O- s- I2 W
if the edx+4 is the dma addr which you want to find.
" y, D: e, R2 |+ b& Kedx is the base addr.9 _% \( n; m: M
! Q* @7 F, D$ Y, J7 z" s" j2.lea eax, [8*ecx+ecx]. Q! s/ U) M) S, r0 `+ T) Z
if the eax is the dma addr which you want to find.
5 M$ n4 S1 C. D w2 Y2 lecx is the base addr.
6 F1 Q0 M2 \9 |+ @1 R$ E
, Y6 o& `; |) v/ \: [% C* ~/ ^" ~9 [
£ex in C++:' p# O5 b5 {( v6 c7 v7 ^1 ?. |
DWORD *BaseAddr,val=0xea937f26;
: d4 m) B' K, _+ a5 eBaseAddr = new DWORD;# \" m* O6 Z" i$ N7 b
*(BaseAddr+4)=val;
8 B& i7 `- Z4 G; U* ecout<<"OffsetAddr:"<<*(BaseAddr+4)<<endl;1 [" B2 Q6 O" c& S* Z
©2009 VD7 Hacker Team Master- Krizal Chen. G( \! Y. _5 M$ z H& x4 `% y& `; V" m
" c5 {" X4 u2 r8 i
, ` Q1 N" E' J: C4 h; S# ]5 h. ]8 p8 `! E7 c
以上已經涵蓋找出baseaddr需要的原理,
f+ P/ X0 R, J; s接著用debugger分析和追蹤程式碼就要靠自己的努力了,
( f, }( R6 B2 B: Q5 r5 u想學更多的話,個人最近沒什麼時間。
1 b$ T/ N: ~8 `% e; p& f+ C+ L% _4 E. [2 @ W" O2 f; J) M. L: a
找龍兒吧,如果他願意教的話,7 ]5 w+ D" N% J! C0 O
你可以學到不少。9 u3 B5 \. k9 T! o9 a6 G0 V& `
, v3 O6 G# L2 L' Z0 t
[ 本帖最后由 krizal 于 2009-7-20 20:06 编辑 ] |
|