|
|
发表于 2009-7-20 18:50:20
|
显示全部楼层
你可以先了解下DMA。/ r3 n: Q7 B( [( ~8 d- {/ ?
* T5 G! e5 ]7 @( c1 E6 ?2 O# p5 a簡單的說要找base addr,& M3 l' O# u* K9 F
我們只需關注pointer。1 W2 ^ K8 p* I) N
以下是原理:
, y8 M" _* |; C8 ?1 }% M
4 `2 r& Q' S7 I# m# y- ]£ex in x86 asm' I6 E: O# ]0 H0 R' }. ~+ f B
1.mov dword ptr ds:[edx+4],edi- P4 I" C, E. }- x4 s n- w
" g# X0 Q( O* }
if the edx+4 is the dma addr which you want to find.' R, p$ a' [: Z2 H0 l
edx is the base addr.* L9 o% w( O& o/ E6 T1 ?0 i8 d
, i+ m) x0 F; o6 {% F6 }$ f
2.lea eax, [8*ecx+ecx]
' @# ?9 h' Z' M3 f+ A* sif the eax is the dma addr which you want to find.
* `3 f% e8 C: O2 X2 \ecx is the base addr.
5 [& `/ e6 C0 S. Z: R) Q
' |1 _2 H7 ?! x E; ~. ?: M8 C; s- V( j/ f0 N' c$ k
£ex in C++:
. ]6 }/ c- j, G$ l# e1 @DWORD *BaseAddr,val=0xea937f26;$ h# T7 {6 H: w6 S0 G2 K: I( ^
BaseAddr = new DWORD;
# l' q* _" D5 F! ?2 M/ Y$ }2 L; p3 l*(BaseAddr+4)=val;
# a. D. S7 i% t5 f2 L% S% G; [3 Acout<<"OffsetAddr:"<<*(BaseAddr+4)<<endl;
; P5 N# e z; u K% p: d9 ]©2009 VD7 Hacker Team Master- Krizal Chen
- ]4 O! `/ c" V6 c# \0 q1 ?+ ?$ \- |$ Q1 d! w1 I
0 W* s- k, M$ S2 l: W
" k; v# K3 ?0 s1 z9 d以上已經涵蓋找出baseaddr需要的原理,
: m- N9 t$ C1 m接著用debugger分析和追蹤程式碼就要靠自己的努力了,
6 J& P7 T4 r Q f4 K7 d" h- ~0 W想學更多的話,個人最近沒什麼時間。$ T$ ^! d# j0 D: h0 o
0 V* r3 C+ { _: {/ s找龍兒吧,如果他願意教的話,
, J" N- _" W. l0 k你可以學到不少。) R& h: u( `2 E* m, f
) J- u* ?8 B2 Y7 ?) N
[ 本帖最后由 krizal 于 2009-7-20 20:06 编辑 ] |
|