|
|
发表于 2009-7-20 18:50:20
|
显示全部楼层
你可以先了解下DMA。
; x' h: H4 ]+ {; w; Z( a1 }
8 }. x5 D m, r! |8 |簡單的說要找base addr,
7 y0 m; a1 B7 I( F& U. i+ I我們只需關注pointer。
0 r% H7 @% h0 ?以下是原理:! ^- a; {2 X0 S' w4 J1 J
% i& h) i+ _: z5 _) R5 Y
£ex in x86 asm
s6 D1 O0 ~: t0 H1 o6 R" O1.mov dword ptr ds:[edx+4],edi! v) Q+ \9 d5 V5 v8 K' c
: M7 E' R2 g& f' R7 M
if the edx+4 is the dma addr which you want to find.' B! v. L, P9 X3 \2 h
edx is the base addr.& k1 Q+ ~ I: B. \& e
/ A+ P: p/ m3 a2.lea eax, [8*ecx+ecx]
1 q7 S) A7 `0 j1 x: D% W7 z' o1 Kif the eax is the dma addr which you want to find.
+ ^ l J1 U; R' fecx is the base addr.. `( F; |) H# b3 p
1 t5 y+ B$ w" j. p
: e5 u% B& q, F2 R* y) v+ `£ex in C++:
( o( x' ]6 u1 B: J- pDWORD *BaseAddr,val=0xea937f26;
2 S& g5 h, G& F1 _# t% ?$ E' ~+ EBaseAddr = new DWORD;
& R% a" u* d4 E*(BaseAddr+4)=val;/ h9 ^5 w; [! A. I3 n
cout<<"OffsetAddr:"<<*(BaseAddr+4)<<endl;
2 k9 ^- [0 Z- Q; Z©2009 VD7 Hacker Team Master- Krizal Chen7 B1 l" H) l7 U6 m0 N
0 ], j. Z" U l* u
4 E$ A B& L. t0 s6 u: A1 x5 ~" s( J; t5 {. W2 z% O" s
以上已經涵蓋找出baseaddr需要的原理,
4 K; i3 Q4 Z+ ]0 s, O, n7 [接著用debugger分析和追蹤程式碼就要靠自己的努力了,3 j; x" L( r, B! x1 g
想學更多的話,個人最近沒什麼時間。
. P ^2 H( }! B1 D; Y r
* `# O" N5 `% D" k( A, @7 Y6 l: O找龍兒吧,如果他願意教的話,
' k" [& c$ V4 o) f; e你可以學到不少。9 m: U2 f& Q, S8 u( U* y9 |; W
' O1 }, t9 I1 z8 B3 N5 J4 T- Z[ 本帖最后由 krizal 于 2009-7-20 20:06 编辑 ] |
|