|
|
发表于 2009-7-20 18:50:20
|
显示全部楼层
你可以先了解下DMA。0 f0 Q G: S( s
$ B( k' g* M8 o2 Q$ u( {# l
簡單的說要找base addr,
# [7 J9 b- Y) f- Y8 d- x我們只需關注pointer。9 E! p( d# d. u0 g& K
以下是原理:
% ]' G z3 M/ [* ^- i' }" j( o6 T2 D3 H0 v
£ex in x86 asm
' K T* u% {! ~* e1.mov dword ptr ds:[edx+4],edi" S# O& J+ e3 v3 \
7 i: a. Y3 D3 j1 g" D: T
if the edx+4 is the dma addr which you want to find.
1 ?$ q- K; f$ C* `, t; I! Sedx is the base addr.6 F( T: n3 S U, T
/ z( ~3 |1 |. o0 @2.lea eax, [8*ecx+ecx]
- E9 r& O# ?+ `0 sif the eax is the dma addr which you want to find.
+ ~8 H, \& Q, f8 `' K% f: H Zecx is the base addr.
3 {6 I% j: t8 `( Z6 S- O, k" b( M" M; Y" K2 o3 v
5 i' [- o a0 j6 M# d
£ex in C++: b" V$ n8 \- o! z8 s9 y( \' P: h
DWORD *BaseAddr,val=0xea937f26;
+ ~. y- R: V/ E I' o" j7 o. k8 uBaseAddr = new DWORD;
: x8 S7 Q! _; }$ b*(BaseAddr+4)=val;
" O7 ]! t2 f* I7 B" ecout<<"OffsetAddr:"<<*(BaseAddr+4)<<endl;
0 [' [4 u: C0 D/ a# y4 ]) e©2009 VD7 Hacker Team Master- Krizal Chen# {; t9 G6 o) W) i
0 U9 D3 a: T* x, [8 ?' x8 e
4 |1 w3 S% z3 i- w7 F
7 e# q7 A7 [; i% V. }/ c" b以上已經涵蓋找出baseaddr需要的原理,
4 Q# P7 `9 ?: X+ v6 \接著用debugger分析和追蹤程式碼就要靠自己的努力了,
' C0 j6 |& Q5 T4 D( L$ b( g* e想學更多的話,個人最近沒什麼時間。+ |$ z$ [* ~5 R( q6 M
0 M5 Z4 n4 E+ M# k8 K
找龍兒吧,如果他願意教的話,
: l7 I4 D, u1 h. w你可以學到不少。
* L8 r7 m: B4 Q3 @: U2 h* S' M% P7 ?; E1 L, G
[ 本帖最后由 krizal 于 2009-7-20 20:06 编辑 ] |
|