星星电脑技术论坛's Archiver

jinn0702 发表于 2007-7-22 10:03

用汇编语言写QQ任我聊

[url=http://bbs.cfan.com.cn/thread-384930-1-1.html][size=5][color=red]用汇编语言写QQ任我聊[/color][/size][/url]
qsu#x z\$_#_2\1g zP%YH XO$@"?b-R
9Kz4x um2{
[size=4]转自电脑爱好者论坛,作者:zhangke  VZ&[N%|q)Pc_
原帖和可执行文件下载地址: [/size][url=http://bbs.cfan.com.cn/thread-384930-1-1.html][size=4][color=#0000ff]http://bbs.cfan.com.cn/thread-384930-1-1.html[/color][/size][/url][size=4] |X }%JXp
nh_3xP#P Z

B~4F)e1}C [注意]原创,转载请注明!!!E9F(m8C eiAN

WT ?2zZ 呵呵!一个小工具而已,就是没加为好友也可以和别人聊天,临时会话!跟群里的和网站上的那种原理是一样的!
c&tn6~;r(edu [img]http://bbs.cfan.com.cn/bbs-ad/luntan/tiezi/qq.jpg[/img]
KRn+cN8H 原理解析:
2?VbCD 在Tencent的互动服务里面([/size][url=http://imis.qq.com/][size=4][color=#0000ff]http://imis.qq.com/[/color][/size][/url][size=4])可以为你生成网页代码放到自己的网页中,让别人在网站上点一下就可以给你留言!
GW` v&lcjI:S\q 程序就是利用的这个生成的代码,直接在浏览器中输入
q:};@5y!s@ tencent://message/?uin=你想聊天的QQ号码&Site=im.qq.com&Menu=yes
6UzHsl YE~3h!H~+@_ {
2UVP6JD%x4pt1?x 就可以和别人聊天了,取消临时会话的用户不行(这个就是临时会话嘛!)~2vJE&P&l*E&y[(g
下面是汇编程序源代码:
;V2Y3Ov"jo4jv$U&L $Bq N;p5HSmpGtp
.386
'x*`&@-Yo-j n .model flat,stdcall  Nv.SL ca5L)PU
option casemap:none  
:]6I*y ^3TAD-|Tf DlgProc proto :DWORD,:DWORD,:DWORD,:DWORD
F9k3Y:m*OiAE include \masm32\include\windows.incU&{*YO#v h+g.w+N3p
include \masm32\include\kernel32.inc
a$SF;IV*n include \masm32\include\user32.inc
!GlMoH7v include \masm32\include\masm32.inc#D'{4tYJ'|XR
include \masm32\include\shell32.inc ~,N'Hu.?2C4B)rn

E8^:Pw @P&z-ddv includelib \masm32\lib\kernel32.lib
xL_S$O ^5D{ includelib \masm32\lib\user32.lib
eGI,Z2v(t includelib \masm32\lib\masm32.lib
-U5@]"QGI i3kU includelib \masm32\lib\shell32.lib
c$`;FIH3V!b .data?
fZy/U4w#O QQnum db ?
WA%Y&nV+I;Jj&W+ZL hInstance HINSTANCE ?
,l#r nj3v swidth  dd ?
\;Z_+mtqNX sheight dd ?S!\i6u#^K8txw+^f
dwidth  dd ?      
Zi P-kG e4GM8qq dheight dd ?c[NdU6mfu0Lh
rect    RECT <>
WEG4PdHjs mystr db ?(Z#Xy3~,MP9~q4s
szTemp1 db ?
!vp!]^5} szTemp2 db ?
'M^]6A"tgv .data
B*c[:? K6M str1 db "tencent://message/?uin=",07mS}R6iL
str2 db "&Site=im.qq.com&Menu=yes",0
rz&at(a(Ain MainDialog db "MyDialog",0
G-w~F*Vv szMutex db "zhangkesqqtalker",0
)dh6T6F-kSR ErrorText db "Program already run...",0
6e;G:Ad(D-} ErrorTitle db "Warning!!!",0
!KaW/@#b
8{$yh R)G6U+M*~ .const ,v pDW O SV
BTNSTART equ 1003
+_ ^+f2W9M|P c EDITNUM  equ 1002
(R.QJ/jd,\ R(i$T .code$W.aI#^ q{L
m)I V\6r
start:
z ]l}7O!Fy I/k&a1C&Pu \
Main proc'Mxt mFI9m
    invoke GetModuleHandle,NULL
3V`i*bep H     mov hInstance,eax
S~+I7I5J+O/LHS     invoke DialogBoxParam,hInstance,addr MainDialog,NULL,addr DlgProc,NULL
/xZ3y{;Va m     invoke ExitProcess,0:BI)ET FP
Main endp:s0~Q B&TUh
DlgProc proc hWnd:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM
"mJ%]:I"Ydx;v     .if uMsg==WM_INITDIALOG l7U XD%^LJ
        invoke CreateMutex,NULL,FALSE,addr szMutex:K2B Tfs kL}x
        invoke GetLastErrorK1A a'i*JxH5H9A)^
        .IF eax == ERROR_ALREADY_EXISTS6_3^Ot iA&J&Am
            invoke MessageBox,NULL,addr ErrorText,addr ErrorTitle,MB_ICONWARNING
Z"l6c-K\             invoke ExitProcess,NULLbb|c#|
        .ENDIF
"E__&k _         ;上面几行代码的作用的防止程序多开(即只能运行一个实例) |xg,Ik O7bY
        invoke GetSystemMetrics,SM_CXSCREEN     ;#{k6B,i Js k
        mov swidth,eax                          ;$\*ac)@E.u(jCem
        invoke GetSystemMetrics,SM_CYSCREEN     ;[/| V F3u F4~8v
        mov sheight,eax                         ; eXfv:~P
        invoke GetWindowRect,hWnd,addr rect     ;
dp(nN0{O(gv         mov eax,rect.right                      ;这几行是为下面invoke SetWindowPos做准备 opW*@1N__r7j5x
        sub eax,rect.left                       ; RoZDe*[_
        mov dwidth,eax                          ;RIT!a-?6U
        sub swidth,eax                          ;使窗体出现在屏幕中心'S*c"_ JDe]T
        mov eax,rect.bottom                     ;2IP8[2T!`X A3A
        sub eax,rect.top                        ;
z[m w*}n4k$k+j         mov dheight,eax                         ;其中不明白的地方看一下Platform SDK就可以了 *fMwS d]y
        sub sheight,eax                         ;
cg&_Vjq         shr sheight,1                           ;8w(ys+\^ ^1_u
        shr swidth,1                            ;
Te(oZi(ZB6_         invoke SetWindowPos,hWnd,HWND_NOTOPMOST,swidth,sheight,dwidth,dheight,SWP_SHOWWINDOW
/uK;jA7L+kM|N E,V$`     .elseif uMsg==WM_COMMAND
4~#DDln!h\G*?         mov eax,wParam;Ci!Mq0~)CK
          .if ax==BTNSTART
`gL{3Fn#`             invoke szCopy,addr str1,addr mystrMa({L%exCS
              invoke GetDlgItemText,hWnd,EDITNUM,addr QQnum,11
9N:}5Q%ki#}]             invoke szCatStr,addr mystr,addr QQnum
\.~N @!f7Y!j YW               invoke szCatStr,addr mystr,addr str21|w3vlh7gE
              invoke ShellExecute,NULL,NULL,addr mystr,NULL,NULL,SW_HIDE V5{heF8M
        .endif
nZ4e2H2x[~(q-c     .elseif uMsg==WM_CLOSE
p0_ flWBV         invoke EndDialog,hWnd,0W7?bx s!lE&ly
    .else
1Xr8bR_c         mov eax,FALSEB;T ?*};@(f
          retYxZp*u{8X
    .endif
A_1_.D ])p N"s8_     mov eax,TRUE
7Z_j)Cc     ret*i9j/IvxU)j {
DlgProc endp*{%V6^'JkJ2`A y

!k!z;_st*R end start
p+h$twu f6sH!_ sr?~8|
忘了说!补充一句,使用工具为MASM32!!!
O.~R'V9D/~`6ZWTC !R qz4rPI1w
有任何问题请与我联系:zk_invincible@163.com
c~` T(STkA/` [/size]

高猪 发表于 2007-7-31 17:52

[attach]1084[/attach]

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

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