|
发表于 2009-7-20 18:50:20
|
显示全部楼层
你可以先了解下DMA。4 O* v# }- `) g; ? P# m
: m+ O0 ?* s# @$ l- c+ G: I
簡單的說要找base addr,: W# t1 X9 L+ P2 E
我們只需關注pointer。, r7 C+ @ S0 F7 [. I. C8 \
以下是原理:
* }7 C! h0 ~. x. }' X! ~; j0 A6 ?9 G! Y% A) B6 X5 B/ i
£ex in x86 asm9 B. n* j3 r" C3 ?1 `% @
1.mov dword ptr ds:[edx+4],edi3 a' \ R) ?! {( a9 v+ e+ D
, s+ D. L2 s' g' n1 T5 Z8 qif the edx+4 is the dma addr which you want to find.' Q7 e$ D9 u" s$ L1 Y" _/ ?
edx is the base addr.
" O, a& ?& c# s3 _, \* H; o% |! }5 c! P; l& Q- m, J
2.lea eax, [8*ecx+ecx]
) H; Z; T X7 w; Dif the eax is the dma addr which you want to find.
2 [! {/ J; D$ P! @, a7 secx is the base addr.! Q$ T. m1 O- A5 r) W( N
/ C" o( h# Z+ T
1 E- s+ {/ \+ r3 _: y% q, r£ex in C++:) P" G2 X- n9 ]+ n0 m# }
DWORD *BaseAddr,val=0xea937f26;4 C, W; a8 ^, M: T4 _( R: J
BaseAddr = new DWORD;/ E( u% ^4 X" Z9 }/ Y2 |* c
*(BaseAddr+4)=val;
s' ^# i7 W H Kcout<<"OffsetAddr:"<<*(BaseAddr+4)<<endl;) {0 Q3 `9 B- w; Z% W/ K
©2009 VD7 Hacker Team Master- Krizal Chen
1 A! [& w! i" D# @7 s* P
$ c; Z! [: ~8 J2 c9 W- R; A' l9 b) `
$ m9 Y$ [/ z; k. Z$ K$ M: a2 f/ M
以上已經涵蓋找出baseaddr需要的原理,: B; H$ k7 L2 @' M) i* i
接著用debugger分析和追蹤程式碼就要靠自己的努力了,
* z8 o- Y- m1 w U想學更多的話,個人最近沒什麼時間。
, T2 ?1 D& @! z- j0 \) J+ Z3 R
找龍兒吧,如果他願意教的話,5 l3 r& H, ?& q" c8 c7 x; T" p( h
你可以學到不少。* s) J. P4 ^! P! P! o/ ^
1 `* y7 V0 N: m0 }) T
[ 本帖最后由 krizal 于 2009-7-20 20:06 编辑 ] |
|