ytt

V1

2022/07/20阅读:39主题:橙心

使用易语言开发一款远控软件

使用易语言开发一款远控软件

界面/功能实现

远控为C/S结构,主要功能实现都在服务端,而客户端则根据收到的指令进行对应的操作,👇下面是本文要实现的功能;

1. 服务端

  1. 主机信息

  2. 命令执行

  3. 端口扫描

  4. 键盘记录

  5. 开机启动

  6. 文件上传

  7. 屏幕监控

2. 客户端

根据服务端指令进行相应操作

功能实现

先把大体界面画出来,用到以下组件:选择夹、超级列表框、服务器、客户、状态栏等等

主机信息

客户端:

2022-07-18-14-06-45-image.png
2022-07-18-14-06-45-image.png

客户端上线后发送数据 "加入连接+主机名" 到服务端,如:加入连接admin;便于服务端取数据进行数据操作区分

上线

服务端:使用超级列表框组件对上线主机进行展示,并添加一个服务器组件

当服务端数据到达时取回数据,并以每个汉字2字节的大小来提取标志位✅,也就是8字节的“加入连接”来判断客户端发送来的数据,从而进行主机名提取;最后按照顺序,以id,ip,主机名、时间上、状态等方式插入表

离线

当客户离开时将离开的ip与列表框的ip一列进行遍历对比,如果一致则将该ip的状态修改成离线。

效果 ,剩下的就是一些细节日志问题了,自行添加;   

命令执行

整体实现逻辑: 取用户右键单击☑️选中位置,弹出命令执行菜单;当用户点击”命令执行“时取所选中列表项的IP,并跳转选择夹到命令执行栏,当点击执行时候,服务端发送标志头和命令给客户端,客户端取回响应数据并返回给服务端。

QQ20220718-145847-HD.gif
QQ20220718-145847-HD.gif

服务端:

首先创建菜单,在主窗口右键选择菜单编辑器

添加功能选项,将可视打勾

设置在表单中右击弹出菜单

让右击后取鼠标位置弹出菜单

单击命令执行选项,添加被点击后的功能

画一个命令执行界面

“执行” 按钮被点击服务器发送编辑框的内容到被选择的主机上

客户端:

把命令执行的标志头取出来后,剩下的就是要执行的命令了,这里用到了一个封装好的模块,取DOS返回文本1() ,也可以使用运行()方法将cmd结果写入文本,然后再读文件返回给服务器。

端口扫描

这里先考虑同步扫描,就是循环端口范围,使用复制窗口组件函数对客户1进行复制,然后再使用复制的客户进行循环连接判断,设置标志当用户点击停止时候停止循环连接。

效果:

QQ20220718-221231-HD.gif
QQ20220718-221231-HD.gif

多线程实现:

效果:

QQ20220718-221710.gif
QQ20220718-221710.gif

键盘记录

键盘记录在hook类中内置了

客户端:

首先创建一个hook全局变量,类型为类_钩子 ,当客户端收到监控键盘指令时候安装键盘监控,安装转换为可读值加上标志位发送给服务端,服务端进行展示。

服务端:

开机启动

这里只简单写到C:\Users\USERNAME\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\ 这个启动路径下这一种方式

服务端:

发送设置开机启动指令

客户端:

接收到指令后取当前用户文件名进行路径拼接写文件

文件上传

文件上传使用分包发送,也就是将上传文件读到变量中以固定字节大小进行切割发送,客户端再根据数据包大小判断是否为最后一个数据包,进行拼接写文件。

服务端:

这里以10000字节为一个包发送

客户端:

客户端收到的数据包小于1w时,就认为是最后一个分包,直接写入文件。

屏幕监控

屏幕监控用幻灯片模式,客户端一张张截图拼凑发送给服务端展示,截图更替速度快就能实现gif的效果,还是取决于网速,相当于文件上传功能,只不过是一直在循环。

服务端:

为了方便为我选择在服务、客户端添加各添加两个组件,一个负责普通的操作;另一个是用于屏幕监控准备,因为要断开监控必须将客户端踢出。

客户端:

使用时钟事件进行循环

服务端操作判断

效果

分类:

后端

标签:

计算机网络

作者介绍

ytt
V1