|
|
发表于 2009-7-20 18:50:20
|
显示全部楼层
你可以先了解下DMA。
7 Y8 I+ c" b5 A) R# \3 c- @! \' p+ D
簡單的說要找base addr,
$ I0 a5 P3 k7 M9 s我們只需關注pointer。. q6 Y7 g; B$ u7 u3 ? y3 R6 _' T; s
以下是原理:2 n# y+ m* C( J: J
" `( [6 ~( y+ U1 V) W/ U£ex in x86 asm% N5 j3 B- q; x( c4 b$ O) ?' a
1.mov dword ptr ds:[edx+4],edi
7 _' d/ }% V4 S) t4 l) G3 I$ U( S8 E
if the edx+4 is the dma addr which you want to find.3 N/ T! O3 V! c* y/ h+ z
edx is the base addr.
7 E& U$ a3 y( I3 |) O! l" }( j* n( C l2 i' {
2.lea eax, [8*ecx+ecx]. _2 s! u# m% Z) Y! C# g' A3 @1 ]
if the eax is the dma addr which you want to find.
3 ]6 P; O( @, }. |) zecx is the base addr.
0 v z5 b2 ~: n5 n& H' O( M" } {" l7 J1 {
# l) X: j! k# B£ex in C++:
9 U/ h5 H/ H# j ?+ g! xDWORD *BaseAddr,val=0xea937f26;7 U% t2 Z9 M) n7 P( D
BaseAddr = new DWORD;) I5 p) d5 r* \5 a7 @
*(BaseAddr+4)=val;
+ o! }6 B& W7 f; L8 O) I# f% Tcout<<"OffsetAddr:"<<*(BaseAddr+4)<<endl;4 P3 @# t T2 I' K* G
©2009 VD7 Hacker Team Master- Krizal Chen; S; `4 b4 s1 m* ?( Z+ `4 t6 u: f
$ ~; y7 r; k5 m3 U% x
2 f' U, z& ^, z* S# ~# g% o4 i* l; W, L; ^3 a2 w
以上已經涵蓋找出baseaddr需要的原理,6 }# c/ ~5 t' {
接著用debugger分析和追蹤程式碼就要靠自己的努力了, F5 H% a2 C. @" S2 G2 ?
想學更多的話,個人最近沒什麼時間。
6 t% x& D, w% \1 l4 d& z! o
6 x7 F7 c4 ^4 s3 Z% y找龍兒吧,如果他願意教的話,
$ A" j m, l/ Y, s8 }5 B! }$ t你可以學到不少。
, w' S% K3 w4 z5 H/ c+ d1 t/ L% t \) {+ _4 z3 l
[ 本帖最后由 krizal 于 2009-7-20 20:06 编辑 ] |
|