|
发表于 2009-7-20 18:50:20
|
显示全部楼层
你可以先了解下DMA。
7 E2 s' Q w/ @8 D2 E( V; t2 G' l8 j6 ^3 W7 c
簡單的說要找base addr,, I& C l8 f( K2 }, d! F7 h8 A
我們只需關注pointer。: l" p i1 @# Z8 N+ \. c# v6 S
以下是原理:& s4 ?* p/ n/ Y) M& }
! s% c) v h( j£ex in x86 asm
4 _) l" K. o9 t7 |1.mov dword ptr ds:[edx+4],edi7 D" w+ k: {2 ^% G. z! W
0 ^% R* @% q; C4 g sif the edx+4 is the dma addr which you want to find.
+ Q2 c; V$ q/ Y* W$ u& ledx is the base addr.4 N) g0 g8 y [" w. x% U4 _
+ ?$ F- V8 f% X# L: J9 U' p% x
2.lea eax, [8*ecx+ecx]
! t$ o1 o0 I+ ~- ?; y; K t& @) Aif the eax is the dma addr which you want to find.8 E \2 a) m" |" g
ecx is the base addr.
s( }( i; j; @, c: O5 N5 {* O
2 I4 Z( x6 Q! U8 _/ a
" N! l/ l7 A% T( e+ L0 |- b£ex in C++:
3 g; u3 `+ V/ [& P! J1 L& TDWORD *BaseAddr,val=0xea937f26;
) |- F) k# H: C" U8 yBaseAddr = new DWORD;0 N8 s8 E( T$ i* s! `2 f
*(BaseAddr+4)=val;
, H" Y2 o# l# v, n# w& c8 ycout<<"OffsetAddr:"<<*(BaseAddr+4)<<endl;6 c5 o1 g) b- c8 F4 e
©2009 VD7 Hacker Team Master- Krizal Chen* h; i+ c& d/ m v* p( I- C& X
0 Z2 n9 D$ {- J6 s0 f1 X n! ?
* l# n2 ^- T0 e- r* y" f- s. f% x' q" [$ D t, \5 [
以上已經涵蓋找出baseaddr需要的原理,
. Z' [( B/ H x接著用debugger分析和追蹤程式碼就要靠自己的努力了,& G, e z4 T' V1 i3 g( C( u
想學更多的話,個人最近沒什麼時間。6 ]! c6 U$ j, R9 Y
7 e) J6 P' m9 V3 \- |3 C# i! b
找龍兒吧,如果他願意教的話,& j7 H1 k; H8 s q: `; d% j6 [2 Y
你可以學到不少。
8 X7 m3 W$ V8 K- M4 s$ q* F4 f) _
[ 本帖最后由 krizal 于 2009-7-20 20:06 编辑 ] |
|