# Windows远程控制
**Repository Path**: xintao/remote_control
## Basic Information
- **Project Name**: Windows远程控制
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2020-03-25
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Windows远程控制
### 软件介绍
- 执行CMD命令,下载文件、执行exe、屏幕截图、后台拍照等等。
- 第一次执行exe则隐藏自身,并开机自启,隐藏和修改exe文件。
- 支持邮件白名单和md5签名验证,选择性的接收邮件
- 有界面版:通过界面,来设置相关参数(可做到完全隐藏)。
- 无界面版:无须任何配置,启动exe则完全隐藏界面,后台静默运行。
| 软件 | 版本 | 作用说明 |
| -------- | :-----:| :----: |
| Python | 3.7 | 此版本支持模块较多 |
| PyInstaller | 3.5 | 3.5+才支持upx排除 |
| UPX | 3.9.5(x86_64)| 加壳,压缩exe |
| Gow | 8.0 | 增强CMD命令(bin目录) |
| 自带modules | cp37_amd64 |尽量使用自带模块 |
| 自带x86软件 | curl,7z |经测试,同时兼容x64系统|
| 当前项目 | x86_64 |仅支持x64的windwos系统|
### 相关问题
- UPX加壳注意事项
确实能够压缩exe文件大小,21M的界面程序压缩成15M左右,7M的无界面程序压缩成6M左右
仅3.5及以上才支持upx排除,不自定义upx排除会找不到vcruntime140.dll
需要排除vcruntime140.dll,听说此文件自身有hash校验。
相关参数:`--upx-exclude=vcruntime140.dll`
- 不需要的模块
请问:cmd命令一个参数为数组时如何传参,只能重复写两个参数名吗?
win32ui和mfc140u,相关参数:`--exclude-module=win32ui --exclude-module=mfc140u`
- 查看错误日志方法
相关参数:`-c --debug=all`
并使用cmd控制台的方式打开程序,以便错误信息输出的控制台。
- 资源文件的相对路径
项目的根目录,相对于启动项目的启动路径。如MainUi.py在bin目录下,则就相对于bin目录读取资源
因此,本项目中,启动项目的py代码放在项目的根目录下,以便读取资源文件
- 打包成exe后的资源文件
exe会解压在用户的目录下,资源文件也在此目录。因此读取资源文件时,需要使用绝对路径,否则只会读取exe文件所在路径下的文件
解决方案:根据`getattr(sys, 'frozen', False)`获得项目路径,并设置工作路径:`os.chdir(base_path)`
### PyInstaller
官方文档:https://pyinstaller.readthedocs.io/en/stable/index.html
- upx.exe 需要放到Python环境下
- --exclude-module 排除模块
- --onefile 生成一个文件
- --onedir 生成一个文件夹
- -y 强制删除文件夹,不询问
### 项目难点
- 删除自身
当前先复制自身(now_file)到其他目录(target_file),启动target_file并使用其删除now_file。
这个过程中,now_file需要向target_file传递指令,target_file执行完成后,now_file才能退出,导致now_file无法删除。
当前解决方案为:使用文件传递指令,创建target_file时同时创建参数文件,target_file启动后从文件中读取参数。
- 后台服务截屏
本程序采用注册成后台服务的方式自启。在windows系统中服务无法截屏,必须要登录到用户。
同时启动一个前台服务,由前台服务截屏返回,由后台服务发送数据。
- 以服务方式运行
和登录用户不在同一空间,无法操作用户数据
- 程序重新安装
需要判断是否第一次启动服务,并更新或者安装windows服务。
解决方案:释放文件时,同时释放服务重新安装文件,服务启动时,判断是否有重新安装文件。
暂时未解决服务的运行,且当前无法通过服务管理的方式终止服务。