|
发表于 2009-7-20 18:50:20
|
显示全部楼层
你可以先了解下DMA。" |+ y }$ E& q$ B
" u3 K) c l3 ~0 Y. }
簡單的說要找base addr,
/ n1 o; p5 L: a& w/ i, g我們只需關注pointer。
) e: u8 P. m8 |0 r以下是原理:9 U' E" O6 [3 i' G! c; D
8 w y+ ?9 y% p6 e) d' h
£ex in x86 asm% d1 J: ?) x, }+ ~. ~
1.mov dword ptr ds:[edx+4],edi
6 c& g: o) Z# P& o- a
7 m2 J, Y7 T- y+ uif the edx+4 is the dma addr which you want to find.
) k9 x3 X0 h4 @) N2 c9 \0 [. dedx is the base addr.1 v; \- P8 ?( M1 o2 v
. I$ e2 p7 N4 T& H9 n2 {' |
2.lea eax, [8*ecx+ecx]& }* Z W: M, L. f) V- D$ \! v0 K
if the eax is the dma addr which you want to find.
8 N# ~8 x0 T+ J7 aecx is the base addr.
5 x M4 [' y+ y# Z6 q Z* w! }4 f' Z I4 V6 p l, s
/ E) q: ]7 N- n4 y' |8 w7 P4 k4 n
£ex in C++:7 m1 @. I8 j1 ^ J
DWORD *BaseAddr,val=0xea937f26;! v8 @, z8 U2 `7 Q; e' y
BaseAddr = new DWORD;5 l- C! ^5 }1 L$ g( j$ F4 h
*(BaseAddr+4)=val;
]+ V D) C. ~: x6 rcout<<"OffsetAddr:"<<*(BaseAddr+4)<<endl;( y: h& S) ~; k7 r
©2009 VD7 Hacker Team Master- Krizal Chen
% G, O. F7 Y7 ~6 @! _ y" C/ m/ @
- r( h3 T6 i9 S5 K* e8 t( J1 v5 v t5 v; n4 z; A
- P+ {2 t7 L) C0 J3 q" A: h
以上已經涵蓋找出baseaddr需要的原理,- Z9 }* a3 R5 K! } F. A0 z
接著用debugger分析和追蹤程式碼就要靠自己的努力了,
& s, d3 |, @ d! h, g& Q* S, K想學更多的話,個人最近沒什麼時間。
# y9 i; ]& O0 r! G1 `' G# k* L+ f1 r: P% X3 V; } |+ y. T+ `
找龍兒吧,如果他願意教的話,/ h, Z8 q; k6 M
你可以學到不少。
, T. I( a" k% A
. W: q) ^ O/ x" A1 }1 |[ 本帖最后由 krizal 于 2009-7-20 20:06 编辑 ] |
|