|
|
发表于 2009-7-20 18:50:20
|
显示全部楼层
你可以先了解下DMA。
5 @& Y: g( M1 u- l
5 m$ f# O: n+ b7 T4 z- O簡單的說要找base addr,
1 C+ A& s4 F% o9 H+ M, t我們只需關注pointer。
! v" u" u v7 H9 g以下是原理:
8 V2 G0 U- n8 }) t
8 q& R& V: T3 @! f, J4 X( v* L" |£ex in x86 asm
2 i* L1 h3 U& `& \1.mov dword ptr ds:[edx+4],edi
8 l/ W: o7 Q4 f. t4 W: k( d9 a. U% c; U
if the edx+4 is the dma addr which you want to find.
( [) `$ x& k ], H8 A: h6 Ledx is the base addr.
6 I3 E2 G1 K5 ~: X% ~( ~$ ~7 t
2.lea eax, [8*ecx+ecx]0 l- d. R0 L7 i0 L
if the eax is the dma addr which you want to find.
, [ ~% [9 |+ ]8 l1 t1 necx is the base addr.
7 f6 }' }. Y3 h( W6 T4 z
3 _# C, ~4 F1 R# C7 m! I7 f
# I7 _* W. e3 T& R4 b£ex in C++:
" L/ b8 b9 }! P7 }, gDWORD *BaseAddr,val=0xea937f26; T; q0 {: m7 K: e2 T- T" @7 h+ l
BaseAddr = new DWORD;* n$ {* {* K9 ]9 C. Y
*(BaseAddr+4)=val;) u- O6 r: K# H! ~* X) X
cout<<"OffsetAddr:"<<*(BaseAddr+4)<<endl;& E8 o* `7 v- O- O3 T. W% J8 d4 h
©2009 VD7 Hacker Team Master- Krizal Chen8 o! }3 D) H$ u0 K' v
; `( a2 z. `2 g4 r# A* h
+ S3 S5 X* h) ]7 x% F6 q
" F7 [% U7 W! w8 V2 g
以上已經涵蓋找出baseaddr需要的原理,5 ^) x! \; W5 s6 p# T2 z
接著用debugger分析和追蹤程式碼就要靠自己的努力了,( m. i3 q* M* O! I/ u, T
想學更多的話,個人最近沒什麼時間。
5 l, P1 _2 M* X |( B4 Q$ v( Y+ A2 Q+ Z( g' a0 v+ w
找龍兒吧,如果他願意教的話,2 U0 z k% V f2 n. w
你可以學到不少。
# \$ h: n4 X$ Y8 Z4 g; o, t
4 D( V/ [" z, x[ 本帖最后由 krizal 于 2009-7-20 20:06 编辑 ] |
|