# 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服务。
解决方案:释放文件时,同时释放服务重新安装文件,服务启动时,判断是否有重新安装文件。
暂时未解决服务的运行,且当前无法通过服务管理的方式终止服务。