|
|
发表于 2009-7-20 18:50:20
|
显示全部楼层
你可以先了解下DMA。
! |* q, V; i J' N
( f$ O# g4 B, ^0 ]3 c簡單的說要找base addr,+ W' j9 f* T- [8 I, z; Z8 m8 `1 I# }
我們只需關注pointer。
9 k5 w& P& ~' Z ]7 e( {+ z2 o以下是原理:
6 w5 e+ Z4 J) z7 q' J* K) z
+ X: A5 }, a0 P£ex in x86 asm# K3 m4 K1 c( F
1.mov dword ptr ds:[edx+4],edi
, I" c0 p* p9 L9 M' t
. b! v; h. }9 Iif the edx+4 is the dma addr which you want to find.* V$ u! v! O; ? v- [
edx is the base addr., h, K* N. S0 H4 t/ _) o
( K% N+ @8 c3 \% c2.lea eax, [8*ecx+ecx] [& Y$ F d+ w& `7 s: t3 @
if the eax is the dma addr which you want to find.
, U0 V7 p+ H) P$ E3 _( t2 Uecx is the base addr.
: X' I! H( c6 ~ ?& ^7 a* H6 I2 ~6 T4 ^) h9 ]
% E+ v9 F( R+ |, }0 i% l- U( r# d£ex in C++:
- [9 `* |- p" Z8 RDWORD *BaseAddr,val=0xea937f26;; v7 T. n0 g \( H
BaseAddr = new DWORD;: T/ H2 b) `. A3 a- `
*(BaseAddr+4)=val;
- P7 _4 q2 R$ j [: Ucout<<"OffsetAddr:"<<*(BaseAddr+4)<<endl;
+ K) l' A& Z/ u; l; S©2009 VD7 Hacker Team Master- Krizal Chen
' i8 o# u, p& M6 B; w
" z7 _( z5 W4 z. v' M0 [0 `7 Z; @: l
5 _+ Q% K8 ?* k0 L+ L+ q; Z
以上已經涵蓋找出baseaddr需要的原理,* B+ b) C" _, W- \
接著用debugger分析和追蹤程式碼就要靠自己的努力了,/ D( q2 Y% E n/ A5 R1 U* `( Z* F
想學更多的話,個人最近沒什麼時間。
% J% P2 V2 @" L- c& s* \8 s+ N4 e" B/ x1 p- L1 t( \( ^
找龍兒吧,如果他願意教的話,
8 _& ~6 f- D1 ^6 _6 y: H你可以學到不少。
1 B& ?3 y$ T' W# L
; x3 w( n- P6 O( `: g1 O5 _5 V[ 本帖最后由 krizal 于 2009-7-20 20:06 编辑 ] |
|