|
发表于 2009-7-20 18:50:20
|
显示全部楼层
你可以先了解下DMA。 \& t# \+ ]$ ]: A5 h
5 J. ]" {- Y8 p
簡單的說要找base addr,3 i( o/ z6 S$ C$ v$ A
我們只需關注pointer。# h3 V: q0 a! V7 e3 V
以下是原理:0 u' A; F, ?$ ]" u" }4 O
' y, e6 ] A, O- ^- g£ex in x86 asm
% h$ S7 ]+ \$ @, L7 Y2 J' ?) Z1.mov dword ptr ds:[edx+4],edi: A# L2 C4 z$ Z" u- h
( J7 k* {( e+ ?! R) ]if the edx+4 is the dma addr which you want to find.. O: T/ b- v8 U" v3 T
edx is the base addr.# D, m2 R" h/ ]8 T7 S- _
/ _$ _* } a% L9 ]6 s' e5 l- V% f2.lea eax, [8*ecx+ecx]
k! D" F9 C) t* vif the eax is the dma addr which you want to find.
% d) C- z5 F" Becx is the base addr.
% s0 P, @" e6 i( k( L- T' ~8 j# r- |* T- H. R1 X7 ]- {
; B0 u2 p0 }* V' T+ D( ~£ex in C++:9 i) R7 e8 Z4 r; N' j
DWORD *BaseAddr,val=0xea937f26;% T9 x4 U) u* B" y% r+ k* i9 P
BaseAddr = new DWORD;
9 i" W0 A1 V$ B& h*(BaseAddr+4)=val;1 n6 }; U. r" |& U$ f
cout<<"OffsetAddr:"<<*(BaseAddr+4)<<endl;7 J* I2 J1 n! d5 _0 C8 D* X( O
©2009 VD7 Hacker Team Master- Krizal Chen0 f/ I$ K$ A$ I& Z' h5 r& j
4 ?7 _" t3 v8 F9 u
4 G. q5 K- f+ ^
5 C2 T- N! G! Z" T! N
以上已經涵蓋找出baseaddr需要的原理,6 k% n* A! h2 a' C5 B
接著用debugger分析和追蹤程式碼就要靠自己的努力了,
, A, k& V( U& [+ Y! O想學更多的話,個人最近沒什麼時間。
6 G: @1 g7 j6 z' h1 v! g; F4 J, j8 A" A, F* g- ^
找龍兒吧,如果他願意教的話,
9 b- V& F! ~/ t: T) Y你可以學到不少。
& f6 w9 i3 _( ~( W( Y& |' a" [1 E$ K7 K: f
[ 本帖最后由 krizal 于 2009-7-20 20:06 编辑 ] |
|