|
|
发表于 2009-7-20 18:50:20
|
显示全部楼层
你可以先了解下DMA。( a7 l7 k/ Z# f) h& S' M
7 D j% J, D" c, o" u簡單的說要找base addr,9 Z/ O- u* i( j$ `
我們只需關注pointer。/ s. [! [& v- `# ?+ n: K. J
以下是原理:
' n0 k9 |, I& z+ ]3 j- c% l% V" ?- v. w5 n3 t
£ex in x86 asm
" w* v* H2 _ ]9 f q0 g1.mov dword ptr ds:[edx+4],edi
/ c, k Z8 D/ L+ l" N) L
% r$ t+ E" H' ~9 ^ D. t& N5 {if the edx+4 is the dma addr which you want to find.2 F/ Z- u5 S% P* ]: e% E
edx is the base addr.* r& A2 t( B \
8 {' R# p, ~1 T2.lea eax, [8*ecx+ecx]
" K N* ^ |! Oif the eax is the dma addr which you want to find.$ X% l9 i3 ^3 d9 I# g1 D3 p, Z
ecx is the base addr.
5 C$ j, c+ v: Z; I: G: x( U9 }0 m) R3 o
# X+ ?9 E8 p) m£ex in C++:
% @6 ?8 a, O* E4 T2 \" C8 _DWORD *BaseAddr,val=0xea937f26;
\. x) E& N6 E) p+ U# ] ]& `BaseAddr = new DWORD;$ O3 X$ o5 ]6 l7 r
*(BaseAddr+4)=val;
( P# M f: C' l4 F0 _( ocout<<"OffsetAddr:"<<*(BaseAddr+4)<<endl;* i3 H' R4 G9 ?# Y$ p/ y; m+ p
©2009 VD7 Hacker Team Master- Krizal Chen+ p. a# f" f6 H
+ t( r) W3 u" }) V' H( ~" s8 f+ Q
. W; Z8 o- t4 y) R! y- B: t H6 \/ D8 g4 U. S
以上已經涵蓋找出baseaddr需要的原理,
) D; c& n8 x, H# f/ d0 L接著用debugger分析和追蹤程式碼就要靠自己的努力了,( O# l! J9 D5 C
想學更多的話,個人最近沒什麼時間。
4 s0 i# @3 M, I4 x' P' A# V7 w. Q) A" O/ u3 }8 d
找龍兒吧,如果他願意教的話,3 j* [. g" d: t: x4 `& ?
你可以學到不少。* t+ ~7 G5 f) y( {. E- P
1 O, V) F7 _" i: j% ^9 l' \5 u! U
[ 本帖最后由 krizal 于 2009-7-20 20:06 编辑 ] |
|