|
|
发表于 2009-7-20 18:50:20
|
显示全部楼层
你可以先了解下DMA。8 C' f( ]. m$ @9 o8 z
4 C- Z$ [. A3 n, \
簡單的說要找base addr,
/ S- u1 B- b* K+ n我們只需關注pointer。
9 [* e6 d$ O4 Q2 b0 \以下是原理:
y$ @# b6 P6 {' E- i y
" x& A3 Q2 V1 n9 j, _- T£ex in x86 asm" [1 J2 C* J) [) h
1.mov dword ptr ds:[edx+4],edi5 D% ?5 _2 t3 @- N
8 o1 f4 C; [% o* S. Aif the edx+4 is the dma addr which you want to find.
9 Y+ d( o, w* y c' Tedx is the base addr.
$ U2 @. B3 q7 \7 w7 w# X
7 F4 V1 g9 O* B" R2 n/ j3 N. i, f. r2.lea eax, [8*ecx+ecx]
" p6 v& o6 k7 s9 d, `+ u9 v2 L) Eif the eax is the dma addr which you want to find.$ O! ~, D2 K/ j* X
ecx is the base addr.
1 _8 J8 p6 _& ]$ U; J6 ]3 K2 y4 n' d9 S4 B4 a" a
8 v+ h `. n7 l
£ex in C++:% k: X% P8 m1 d" Q( R( C( G. S4 l! E
DWORD *BaseAddr,val=0xea937f26;' T8 u! B) I P6 b5 P$ v, P
BaseAddr = new DWORD;
# c/ A6 ?: N% b5 E*(BaseAddr+4)=val;
3 s a X3 Q+ S0 _9 @* |8 S6 icout<<"OffsetAddr:"<<*(BaseAddr+4)<<endl;
6 l( m- p& M" U8 `" c©2009 VD7 Hacker Team Master- Krizal Chen) n4 ?( b* Z# n, X6 W( e% S, O
& J/ @: O5 r+ o5 y+ D. n% w) G* s# \0 T: o8 N7 M
% l. c. n5 z( z0 W4 p# `9 s以上已經涵蓋找出baseaddr需要的原理,9 d p+ I% h" U% Y
接著用debugger分析和追蹤程式碼就要靠自己的努力了,
6 W$ O9 {, V* x5 K7 ~想學更多的話,個人最近沒什麼時間。8 Y( y5 U+ |5 a3 M
* f) q: p l9 J' y3 f( v9 @0 G) A找龍兒吧,如果他願意教的話,
9 G7 F% o8 _. R4 ^( u# t j你可以學到不少。8 Q! ~ T. u, r) u6 F: j3 ^
) H- b5 [) ^+ ^& A, k* m
[ 本帖最后由 krizal 于 2009-7-20 20:06 编辑 ] |
|