|
发表于 2009-7-20 18:50:20
|
显示全部楼层
你可以先了解下DMA。9 E4 w+ r! M1 X
' h- E+ T- t% m
簡單的說要找base addr,) ^5 w0 w3 X' P* l( r& z* q3 M
我們只需關注pointer。4 w6 g# m% A$ w/ A: W% ~! J
以下是原理:
; w' s% k" [8 C" c# @2 _# ^- h
6 @6 ?* c- H( ]* a1 o) z; W£ex in x86 asm3 Q0 h' `5 b, \+ Q R: o
1.mov dword ptr ds:[edx+4],edi) A6 l/ S2 Y6 q; o# B: x) Y
1 ^5 e7 C0 [( d+ k% e8 l6 ]
if the edx+4 is the dma addr which you want to find.
4 k1 n: A- e& ^/ K+ r5 ledx is the base addr.9 M% f" s+ f# w1 c
/ K9 `! ^' Z( _
2.lea eax, [8*ecx+ecx]
) O% r+ x4 i" h; f, zif the eax is the dma addr which you want to find.
8 s; }& X9 q& ~0 W( x5 i0 K' j: {ecx is the base addr.- `5 c; g0 b2 W& r
/ O, i6 I: b4 z" {
# h! x2 K% H% \£ex in C++:
& a# D4 A+ h* _4 }( RDWORD *BaseAddr,val=0xea937f26;
! \$ _7 _/ G" _7 ^$ N' \0 dBaseAddr = new DWORD;! ? |# N# |1 V5 l1 L, G) d
*(BaseAddr+4)=val;
! }# p. n1 L; H1 v: kcout<<"OffsetAddr:"<<*(BaseAddr+4)<<endl;
1 V, ?* J& m# Q3 v- t4 Z) [ @©2009 VD7 Hacker Team Master- Krizal Chen% O7 b8 @, T& A @0 S& d' x
# E" j( A# ^- [
, `& }( ~$ Y9 b( Q& q9 F: e0 I* L
以上已經涵蓋找出baseaddr需要的原理,3 e5 V% y4 O- Y4 x- K9 P, z5 l& G
接著用debugger分析和追蹤程式碼就要靠自己的努力了,
( J8 F- J/ ~) R7 ?想學更多的話,個人最近沒什麼時間。- l, @; K# Z, i- G
3 |0 d/ f, D4 w' V
找龍兒吧,如果他願意教的話,( a: g4 D- e9 w9 K m! t5 @
你可以學到不少。3 {8 O- X% ]; ]* {
9 O6 c4 v1 V" l7 Y! \$ ^9 Q[ 本帖最后由 krizal 于 2009-7-20 20:06 编辑 ] |
|