|
|
发表于 2009-7-20 18:50:20
|
显示全部楼层
你可以先了解下DMA。
9 ?& k: u* |0 g: _$ N% H
: n# w: V/ |8 ?4 |4 A- E簡單的說要找base addr,
: g" ?# \5 |8 }* {- |: a7 Y: H我們只需關注pointer。5 ]5 M$ t9 l# H" Y5 `
以下是原理:
/ \7 N% {1 N+ d* s0 T- O
' y0 W: k6 y; }4 h: w£ex in x86 asm
: {: T9 ]# f5 p0 l( d1.mov dword ptr ds:[edx+4],edi
/ ?# m$ [7 \; Z( u! T7 X
% n+ r6 s6 a2 Gif the edx+4 is the dma addr which you want to find.
5 i& {0 c) H, x2 z) R5 c' N$ H+ dedx is the base addr.
/ x. W5 z4 d8 g
) n* w! B# O4 v+ `/ n2.lea eax, [8*ecx+ecx]% a/ R' f, h/ O9 T
if the eax is the dma addr which you want to find.
* H/ H0 H+ r# U' c/ |' cecx is the base addr.
0 b' i( T& D; l: B+ f# z, a% w: `4 Y5 n- h% i
" h3 T. J& k: J) D l£ex in C++:: C7 J( J Y' g
DWORD *BaseAddr,val=0xea937f26;" T- v- E* F' m2 V9 _5 m) n
BaseAddr = new DWORD;
% r4 F/ ^1 o/ X( J6 k/ `*(BaseAddr+4)=val;
, N. \4 X8 R' U2 R/ A+ ]cout<<"OffsetAddr:"<<*(BaseAddr+4)<<endl;6 F9 C5 X" A6 Y+ o* x: X; ]4 u( p, j4 x
©2009 VD7 Hacker Team Master- Krizal Chen
; n" _" m% p; M% i1 ]/ |4 O5 `1 S ]" ]4 p3 B
0 z3 S. S3 l# _" x! ^
) A6 s+ T( ^. q0 \. i$ p以上已經涵蓋找出baseaddr需要的原理,
) I9 I: }: h: |接著用debugger分析和追蹤程式碼就要靠自己的努力了,, m6 x; n" i4 r6 M, \
想學更多的話,個人最近沒什麼時間。
1 e% X: q$ I# H8 q0 c$ m( z( K) P9 ]8 ?& z1 G3 B
找龍兒吧,如果他願意教的話,
4 i% _, w4 O+ a" n你可以學到不少。
% b3 |5 n. J% u' A* c
" U- Z8 W7 c1 R% T4 U+ d4 d/ A( ]% _[ 本帖最后由 krizal 于 2009-7-20 20:06 编辑 ] |
|