|
|
发表于 2009-7-20 18:50:20
|
显示全部楼层
你可以先了解下DMA。. Q2 z6 k& P, |, v! C8 d
! j, {6 F4 T, s2 k0 A6 y
簡單的說要找base addr,
; b" X8 R2 f8 A) j1 K6 N- F! a我們只需關注pointer。! t8 c3 J5 S! B7 ^+ l5 F
以下是原理:
. h, Y7 c6 o" K$ ?2 @
' C% [) g5 r0 p£ex in x86 asm
5 ^$ H3 t$ R4 f2 D1.mov dword ptr ds:[edx+4],edi
$ L: U- C# b+ W6 [; s! h% Q, u
1 P" y/ B, y: y' c7 k6 d( Hif the edx+4 is the dma addr which you want to find.8 e4 Z1 Y& {( T# I5 i4 ]; z* B
edx is the base addr.! ?0 o6 p0 j- f- ^! F) z* g
) ?: z. u) Y7 K% Q5 h! Y% y# d2.lea eax, [8*ecx+ecx]( h- b3 C/ ?9 ~/ |, A' M) c
if the eax is the dma addr which you want to find.: r8 N: G$ a" P z) a) M. r
ecx is the base addr. y% }0 `- O0 a' P
) U: Z6 L4 h/ i$ C3 A t- F1 m0 r3 V( k+ J" o$ G/ a
£ex in C++:
' y3 h$ X2 X c3 ]# M$ R& zDWORD *BaseAddr,val=0xea937f26;
& {6 x3 d5 q9 w- \3 Z* p! {3 rBaseAddr = new DWORD;( t( W% w& c7 b0 M
*(BaseAddr+4)=val;
5 o7 M8 `" c" F5 `! B# p7 qcout<<"OffsetAddr:"<<*(BaseAddr+4)<<endl;" x' y6 g& Q0 {, F
©2009 VD7 Hacker Team Master- Krizal Chen. B2 H5 g! V- u6 m O
' S( W& }; Z: S; H# s$ U9 ]% _; v
. Z9 a2 h, U4 Q7 s4 ^0 l" N f7 R, g5 _) `4 S2 u: b
以上已經涵蓋找出baseaddr需要的原理,
& s+ e& A# ?0 o, X接著用debugger分析和追蹤程式碼就要靠自己的努力了,9 G) R; J! J& z$ O" I y6 F
想學更多的話,個人最近沒什麼時間。
4 R6 f8 `+ H2 u+ ]1 w% j- {# n; V2 I+ @
找龍兒吧,如果他願意教的話,2 `! _9 o0 U3 k2 @. F7 }7 l
你可以學到不少。5 h7 K o! M r0 n/ Y8 N; I
# a- B6 \$ |* l" w( r1 ]" X. N[ 本帖最后由 krizal 于 2009-7-20 20:06 编辑 ] |
|