过年回家写的远控
先上图未连接
连接后
学着黑防的远控写着,慢慢改成自己所想要的形式。
记录下远近软件设计思路:
传输命令结构
typedef struct
{
int ID; //表示执行命令 可用#define ... 0x..定义
BYTE lparam[2048];
}COMMAND;
列举几个功能的实现思路:
1.执行文件步骤:
客户端:传送COMMAND结构,ID为定义的可执行id,lparam参数表示文件在目标机器上的绝对路径
服务端:监听并接收处理到ID为执行文件标志时,跳到相应的执行函数,取出lparam参数表示的绝对路径,得取进程的执行权限执行函数。
2.远程关机、注销、重启
客户端:发送COMMAND id为定义的关机或注销或重启等标识
服务端 接收COMMAND 提升本地的执行权限,取得本进程的令牌(Token),接着才能执行函数ExitWindowsEx(EWX_SHUTDOWN,NULL);//可实现注销,关机,重启 ,只在于参数的不同而以
3.文件上传下载
传输过程注重文件大小的处理
要定义文件的信息结构
typedef struct
{
char FileName[MAX_PATH];
int FileLen;
char Time[50];
BOOL IsDir;
BOOL Error;
HICON hIcon;
}FILEINFO;
因为对于接收方来说,要先获取文件大小,文件名,是否出现错误等信息,文件大小在于接收时可知道接收的次数以及最后一次接收时判断文件的大小,文件名在于传到接收方后可以在文件中创建对应用文件名的文件。
定义每次传送文件的大小#define Chun_SIZE (...)
传送方:1.获取传输文件大小size
2.size/chun_size 为传送次数(count)
3.if(size%chun_size !=0) count++ 对于最后一次传送的处理
4.for(int i=0;i<count;i++)遍历传送次数,依次从文件读取chun_size大小的字节流,最后一次记的要用size-chun_size*(count-1)的大小。
接收方:一个逆过程
4.屏幕查看功能
客户端--》读取本地临时文件screen.bmp 《--传输--《--目标主机里临时文件screen.bmp《--目标主机(服务端)不断的读取桌面信息生成bmp位图写入到临时文件screen.bmp
暂时先写这么多。。。。还有些功能需要修改