|
|
发表于 2009-7-20 18:50:20
|
显示全部楼层
你可以先了解下DMA。
" V% |) C' ^$ ]0 c. h" [
8 g5 |$ ~6 G2 U9 m% H簡單的說要找base addr,
: m% R0 y& C' P. t7 J- y我們只需關注pointer。
2 }% y) ?* G' w, x) \$ X/ n以下是原理:, {9 g6 ?, n* k7 [
2 y" y9 E/ c, e! @3 ^7 P£ex in x86 asm! ]: }3 C/ R! o; _ z% R1 u
1.mov dword ptr ds:[edx+4],edi
+ K6 @6 a: ?6 X6 t4 ]8 s5 ^
+ H0 Z4 A7 d, H* J& q9 b. cif the edx+4 is the dma addr which you want to find." ?8 a. j, u; o; I$ |) z
edx is the base addr.
/ y& @6 `7 Z1 _! t* s! p* l6 u& w: R; W: ?7 z
2.lea eax, [8*ecx+ecx]! x& D, t) J7 A5 C0 H
if the eax is the dma addr which you want to find.
6 G& p- p3 d6 G( Vecx is the base addr.- n! d# p7 P' b/ A" ~4 c/ E3 \
% Q% ?6 c: d9 h. C. `# y+ ?
3 r! `- K. o- W£ex in C++:
h7 \% R6 W/ v. g- `# M7 uDWORD *BaseAddr,val=0xea937f26;
! |; x9 `0 K% B9 b+ y5 f0 @4 ]BaseAddr = new DWORD;$ U6 p5 R% n& l4 V* i9 s! s
*(BaseAddr+4)=val;
0 \/ v$ ~. V" M1 icout<<"OffsetAddr:"<<*(BaseAddr+4)<<endl;% A- w9 }. ]' h- {- V- p
©2009 VD7 Hacker Team Master- Krizal Chen% l* |; i1 p6 ~" k
! p# _, d" Q' N1 T+ J5 P# {; ~1 d) u# A! u. @4 l3 j6 m
( t; V; [" \+ G3 J7 i以上已經涵蓋找出baseaddr需要的原理,+ ?# d- y" l3 P9 F; P+ \
接著用debugger分析和追蹤程式碼就要靠自己的努力了,3 h) i/ l& T6 y* T( y: P
想學更多的話,個人最近沒什麼時間。7 Q: {1 P Z& W$ \; c. _# n. A5 I
5 A! W, o7 f" x$ s
找龍兒吧,如果他願意教的話,
, V8 E4 w& D# g+ T2 i9 h7 z你可以學到不少。
, t( K8 R5 N' a! }2 Z
& e1 p ?- G2 s X( h[ 本帖最后由 krizal 于 2009-7-20 20:06 编辑 ] |
|