星星电脑技术论坛's Archiver

ZPengxin 发表于 2007-7-26 14:05

转帖:用汇编语言写QQ任我聊

[url=http://bbs.cfan.com.cn/thread-384930-1-1.html][size=3][color=red]用汇编语言写QQ任我聊[/color][/size][/url],u.o+e o E5Y

]$z;}u,t"Bei3~ j^,uq5T6g:w#U
转自电脑爱好者论坛,作者:zhangke  
ec|$} |h6[R @%P 原帖和可执行文件下载地址: [url=http://bbs.cfan.com.cn/thread-384930-1-1.html][color=#0000ff]http://bbs.cfan.com.cn/thread-384930-1-1.html[/color][/url] $m/O%t a O,s}uU
nH-h-V'VHj

.Mmg+E-W [注意]原创,转载请注明!!!
q3xDp"i%TL ~s QY
3I`?%G$v s 呵呵!一个小工具而已,就是没加为好友也可以和别人聊天,临时会话!跟群里的和网站上的那种原理是一样的!
\1Xl3aTBiZ OL [img]http://bbs.cfan.com.cn/bbs-ad/luntan/tiezi/qq.jpg[/img]6{z$_,xj6J
原理解析:
pX0i/m8gB$X 在Tencent的互动服务里面([url=http://imis.qq.com/][color=#0000ff]http://imis.qq.com/[/color][/url])可以为你生成网页代码放到自己的网页中,让别人在网站上点一下就可以给你留言!^$g V6oRR i
程序就是利用的这个生成的代码,直接在浏览器中输入l-_o}}+z5b6E
tencent://message/?uin=你想聊天的QQ号码&Site=im.qq.com&Menu=yes
'f1Sv;BvV
FHK YN(a D5I3|o#i} 就可以和别人聊天了,取消临时会话的用户不行(这个就是临时会话嘛!)s}j`Wv
下面是汇编程序源代码:1a.p;|r8OTe$K*F\6n
'@%T v$D+[@
.386mv(c;K\p-R(s2U!Tx
.model flat,stdcall  
Y"Q'b r&s f hVc)\ option casemap:none  G4ya!eg-X4P
DlgProc proto :DWORD,:DWORD,:DWORD,:DWORD
6v+x k(FG"A4dS include \masm32\include\windows.inc
vI0L7o&nd6E(K'Y"o#| include \masm32\include\kernel32.inc
9cW,wZ}!t1~ include \masm32\include\user32.inc2_ig0Q%NA7G
include \masm32\include\masm32.inc6U;^2PeH7e|6u
include \masm32\include\shell32.inc
*a {0]2aYI o5eSJ k3B#esWj{
includelib \masm32\lib\kernel32.libA_-De:b)ok#B
includelib \masm32\lib\user32.lib
4E?}T:xg2m includelib \masm32\lib\masm32.lib)`0s+j*K;Z(GH
includelib \masm32\lib\shell32.lib
ksBO*QM,^ .data?;C},Ys*v'n
QQnum db ?
$f3xPC9t hInstance HINSTANCE ?6Cs O;^-k
swidth  dd ?
raR:O0G+br sheight dd ?e$])C0XNZ j e
dwidth  dd ?      C%N)~)v(_"y$h
dheight dd ?gpw8_5B"qH
rect    RECT <>
4}c5gbM(@gX&M _ mystr db ?
QAF!Kc7WP szTemp1 db ?
D {0v8Qn3r N szTemp2 db ?
!CK4F9c&QsKw .data
7c7G7? W Jx7X/G6| str1 db "tencent://message/?uin=",0
8b*SEF/Y"B@ str2 db "&Site=im.qq.com&Menu=yes",0
Es;@'Ce5x"sX/Z0W:g MainDialog db "MyDialog",0
$a:@a A/pBQGsp szMutex db "zhangkesqqtalker",0
:k&f lFO$kPOw$j_ ErrorText db "Program already run...",0
8?iEkU[W ErrorTitle db "Warning!!!",0
3N Wq{9c$N^8@ I N/{ |(Y G o
.const
T9xGl%Y@ BTNSTART equ 1003
:~-y)uh8I| EDITNUM  equ 1002(a-xW }'q)G;~-w%I
.codecwL;v-\#kZ)U%e`

Y^w LA@],f cK start:1p&H`*\&_"h"a

!I@a$H0N4U8qQ Main proc
SZO3k o     invoke GetModuleHandle,NULL
V$_#v'h1W     mov hInstance,eax
U0M,ce.e @:Sd G%\YX     invoke DialogBoxParam,hInstance,addr MainDialog,NULL,addr DlgProc,NULL
-n%fB0N'p*`2J     invoke ExitProcess,0n C(o @YN T
Main endp
2f({mFd Z8e7kf2PF DlgProc proc hWnd:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM+tb&oJ6T SI
    .if uMsg==WM_INITDIALOG
,O'G4|"P Wzj.zB         invoke CreateMutex,NULL,FALSE,addr szMutexcpU5k![+w0T@
        invoke GetLastError
.t:H3m;q,M9_;uCc         .IF eax == ERROR_ALREADY_EXISTS
4O)y&Vs#{9p;g             invoke MessageBox,NULL,addr ErrorText,addr ErrorTitle,MB_ICONWARNING
iP(Lu-U/i             invoke ExitProcess,NULLjx~/afhxF
        .ENDIF)iSXIf
        ;上面几行代码的作用的防止程序多开(即只能运行一个实例)
k Q4f `m"ex7Ug{4l         invoke GetSystemMetrics,SM_CXSCREEN     ;
'gA]'l0x H5N3d         mov swidth,eax                          ;
pv'wdL J)HL$I         invoke GetSystemMetrics,SM_CYSCREEN     ;
"sD?6D,neL[         mov sheight,eax                         ; !Y7GoX5hHD3G-K
        invoke GetWindowRect,hWnd,addr rect     ;Rv;C4Mlzuq
        mov eax,rect.right                      ;这几行是为下面invoke SetWindowPos做准备9A4|1M&G{-[|N5O.t"{*\
        sub eax,rect.left                       ; ~lpeQ*]
        mov dwidth,eax                          ;.m%O;dlc9J8[
        sub swidth,eax                          ;使窗体出现在屏幕中心
R&L,Z0SiZ'[ sa         mov eax,rect.bottom                     ;W&yL cI2P-E8??I%p
        sub eax,rect.top                        ;
EQ/Nj*sR4d*[         mov dheight,eax                         ;其中不明白的地方看一下Platform SDK就可以了 3hp9[S7wN
        sub sheight,eax                         ;.`9_Fu Oy+G!r
        shr sheight,1                           ;"nZ3j7V,Oa
        shr swidth,1                            ;`K%n*^$d^H6R.?e+k,O
        invoke SetWindowPos,hWnd,HWND_NOTOPMOST,swidth,sheight,dwidth,dheight,SWP_SHOWWINDOW
m ~A.{)k7o     .elseif uMsg==WM_COMMAND
9W6r d$qn         mov eax,wParamh;|/Q-c_
          .if ax==BTNSTART
x FB p+\ W^c             invoke szCopy,addr str1,addr mystr
)Wr n3fuY%g%t               invoke GetDlgItemText,hWnd,EDITNUM,addr QQnum,11
XW~![-YZ+O9z%}             invoke szCatStr,addr mystr,addr QQnum
DKu/^G               invoke szCatStr,addr mystr,addr str2
PE-ag,^               invoke ShellExecute,NULL,NULL,addr mystr,NULL,NULL,SW_HIDE3b3G#E2dj|(L(a
        .endif9RO;N#U;I9X
    .elseif uMsg==WM_CLOSEt E+^(w-wHY0L
        invoke EndDialog,hWnd,0/z`3t RBv6zn
    .else+pd?J2QM{$S+lMJ
        mov eax,FALSE7o ~qx3P
          ret
3{-Gx)G1p_P     .endif
c)E#XI\8@C4kp7@     mov eax,TRUE Tor(Z/p(U
    ret
0F-GK*a!A[;H&|H DlgProc endp
3h``u,KQQ5m j$C6^X2Bm
end start
.V+|2}'YKI U%L!vw %Q%T$UH t9`7z
忘了说!补充一句,使用工具为MASM32!!!i(@&E6cW^

R.I r yk$~:E MWU2k 有任何问题请与我联系:zk_invincible@163.com

页: [1]
手机号码所在地查询:
Google
IP地址:

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.