|
|
发表于 2009-7-20 18:50:20
|
显示全部楼层
你可以先了解下DMA。* m3 C; F5 g, J5 v
' P0 @& r9 L7 P3 o簡單的說要找base addr,
* Q. {! j% V0 q, C2 a" [5 e我們只需關注pointer。
/ R) J$ e6 S5 T2 l- L( s. h" i以下是原理:
( P' C3 b$ U8 p0 a3 t$ f; j
$ ?4 b2 ~0 ^- E1 |! s£ex in x86 asm
9 Z1 x) A7 |& v5 N) W4 I9 u1.mov dword ptr ds:[edx+4],edi- w4 S1 u8 L* U# a8 c# u5 m) D% a5 I
l7 U# `" J/ `6 @, W
if the edx+4 is the dma addr which you want to find.
! ^. \; e' K" y% I4 q* A! |( ?edx is the base addr.
( [/ m, e8 K" u: |: [
5 B! t0 E' N: D& w2.lea eax, [8*ecx+ecx]1 \, E% p, P# g
if the eax is the dma addr which you want to find.
4 X, k9 h9 w& y0 m9 d, A6 j; ?ecx is the base addr.$ N- w. g4 {5 J
9 s. |* j" J2 d. a: h9 L1 h& u
- i$ \7 T7 \6 }% r' q( Q8 ~: {
£ex in C++:; r! f0 F1 H8 W
DWORD *BaseAddr,val=0xea937f26;$ C7 x1 Q) z) J- _( K" D% D
BaseAddr = new DWORD;
- s. {$ m1 Q$ H% h6 @7 f8 M*(BaseAddr+4)=val;* ^; j# i1 P& R) \& G/ H
cout<<"OffsetAddr:"<<*(BaseAddr+4)<<endl;
- d! H, J4 u" ?©2009 VD7 Hacker Team Master- Krizal Chen/ g* [' F' I& {4 E
, z7 y' h; _8 `! C
" E2 T1 T* o% A
: ?" a! k; k+ D3 t以上已經涵蓋找出baseaddr需要的原理," m: Q' W! [( c& F: q
接著用debugger分析和追蹤程式碼就要靠自己的努力了,; j6 k. ]6 O m, d
想學更多的話,個人最近沒什麼時間。# o$ O; o2 ]7 p4 B# |# w- G, f
) ]8 D" k' d3 M找龍兒吧,如果他願意教的話,7 n1 M, i- K+ F3 @
你可以學到不少。/ w( h# ^) g1 {# o4 S9 P8 B7 d8 j1 }
6 `- }& }' b+ A5 n; k: \[ 本帖最后由 krizal 于 2009-7-20 20:06 编辑 ] |
|