|
发表于 2009-7-20 18:50:20
|
显示全部楼层
你可以先了解下DMA。
! U( w2 P/ W' J% x! z
. q8 s) ]- n* P: f) z簡單的說要找base addr,/ k, {6 S/ o1 m- e& f5 V
我們只需關注pointer。" r) D+ r( C8 L q, z
以下是原理:
- x; e& J' e9 g5 z8 |, N3 B
- L I2 }: S9 f3 c£ex in x86 asm
1 z, K1 `" s. S5 ]1.mov dword ptr ds:[edx+4],edi7 `% ]" o; {2 H
+ F; H: }& {9 U# f
if the edx+4 is the dma addr which you want to find.
+ y8 I: T! m+ A1 [8 {edx is the base addr.- t5 _0 K6 {# ^. ^9 W$ P
3 {7 r/ R: P, B. h- y
2.lea eax, [8*ecx+ecx]
9 f J/ u$ |4 a3 F# k _if the eax is the dma addr which you want to find.5 {8 M( r. j# {
ecx is the base addr.
5 p9 f( e' X" U, U8 f9 f
X5 }/ l5 ]7 f
# p9 T# M7 D. k: e£ex in C++:/ V7 @/ ] n: a3 [5 a
DWORD *BaseAddr,val=0xea937f26;
% D+ N! J" S9 |/ F# w& O/ y1 J0 gBaseAddr = new DWORD;( j' L& p( p9 g. e4 k
*(BaseAddr+4)=val;; L( Z! V+ M: k3 Z
cout<<"OffsetAddr:"<<*(BaseAddr+4)<<endl;( Z, \+ u0 y$ \. @0 B
©2009 VD7 Hacker Team Master- Krizal Chen0 h. V7 I* S( c4 d7 X- l1 ]3 }$ C
, `% E# j) ^, A6 d0 K
0 j6 X+ i. M& Q+ u$ T( }" D" J! q5 R: k7 j" G7 U2 D, L
以上已經涵蓋找出baseaddr需要的原理,
3 }. Z* z# _1 o" p接著用debugger分析和追蹤程式碼就要靠自己的努力了,
" T3 _+ h2 x, O8 |$ \) k- J想學更多的話,個人最近沒什麼時間。
8 b9 K6 O7 }6 [8 `7 [
: A' J; U! y6 m% z( ~6 ~3 \$ k找龍兒吧,如果他願意教的話,
1 X) }1 g% q6 j2 @你可以學到不少。% a6 k8 b5 c0 t: B. ^9 k* U
- n/ \- \4 J: L( A, h[ 本帖最后由 krizal 于 2009-7-20 20:06 编辑 ] |
|