|
|
发表于 2009-7-20 18:50:20
|
显示全部楼层
你可以先了解下DMA。. {( p9 F/ s. u$ u/ w9 L" U
2 l. L9 b% x0 _簡單的說要找base addr,% b1 q; _) \6 i+ T* q2 d0 m
我們只需關注pointer。& e& L8 t( A# O5 M
以下是原理:1 f D, L+ m6 I5 J" }8 m( E% i. q
+ Z6 d$ L. y$ s" s: G# M: j£ex in x86 asm3 K- j7 I9 Z7 d$ @+ P% _
1.mov dword ptr ds:[edx+4],edi
8 x, j2 M, b5 K4 J+ t w* s, w; W/ X( [; i( i2 u9 v
if the edx+4 is the dma addr which you want to find.
0 @* b& e8 A$ R S. x/ kedx is the base addr.
: }6 y* L" y; _2 Q# B% q
0 c9 y* N( G3 L( W" G2.lea eax, [8*ecx+ecx]1 R, Q# A# Y$ `! \$ \
if the eax is the dma addr which you want to find.
$ O; G; B$ R% `7 F9 G5 j9 jecx is the base addr.! ^. ^9 P1 W# Y4 M
2 M9 ~) D0 ~! A; ~, A, L2 U3 A
9 U6 m# s9 T0 B7 b2 V: b {. a2 |£ex in C++:4 t- z3 A7 c% Q3 ^8 P
DWORD *BaseAddr,val=0xea937f26;8 I: f; s9 V9 A
BaseAddr = new DWORD;8 ?! Q: L6 z; A
*(BaseAddr+4)=val;
; w- m* x* ?) Z; ccout<<"OffsetAddr:"<<*(BaseAddr+4)<<endl;
- i8 ]7 I! Y( c9 v©2009 VD7 Hacker Team Master- Krizal Chen$ k/ B9 z& a* H; F
& o6 k% [5 w* P0 ]1 N/ I! ?
: x) [" h7 ^/ \" w4 s1 `1 s3 Z4 z
以上已經涵蓋找出baseaddr需要的原理,
. S* | y O3 Y: b0 v接著用debugger分析和追蹤程式碼就要靠自己的努力了,4 B2 R" x$ P+ _ r( m4 ]0 k9 g
想學更多的話,個人最近沒什麼時間。
' S7 {/ Z6 y6 T: q N9 G0 c$ b4 v+ J7 T+ T( u/ }
找龍兒吧,如果他願意教的話,
/ W3 ~" T3 j; [4 z你可以學到不少。* ~4 b3 L/ N% `, J
4 |" Z0 H" N' I, e4 |
[ 本帖最后由 krizal 于 2009-7-20 20:06 编辑 ] |
|