安全机制
这一页把我们的做法全部摊开,包括我们做不到的部分。
先说做不到的
我们不能保证 100% 安全,任何人都做不到。AI 写的代码会出错,人写的代码也会有 bug。
我们能做的是:把风险控制在你看得见的地方,并且我们审核的东西和你下载的东西保证是同一份。
核心机制:只收源码,平台自己编译
这是整个平台的地基,也是我们和大多数「上传 exe」的做法最大的区别。
别人怎么做(不安全)
上传者给一份源码让你审
↓
实际分发的 exe 由他自己编译
两者可以完全不同
源码干净,exe 里藏后门——你查不出来
我们怎么做
你审的这份源码
↓
我们在隔离环境里编译
↓
分发的 exe 必然来自这份源码
审什么,就发什么
构建环境的三道闸门
知道「审什么发什么」之后,真正的风险变成了:编译过程本身就会执行提交者的代码。
Python 在安装依赖时会跑 setup.py,打包时会导入模块——这一步很反直觉,
但确实是在你的构建机上运行别人写的代码。所以必须有下面三道闸门。
闸门一 · 断网构建 + 依赖白名单
构建机器完全没有网络,只能用我们预装好的白名单库。
这样即使提交的代码想往外发数据,也发不出去;想装个带后门的第三方库,也装不上。
当前白名单(都是官方开源库,都有公开源码):
Pillow 图像处理 · pypdf PDF 读写 · reportlab PDF 生成 ·
qrcode 二维码 · opencc 简繁词典 · pillow-heif HEIC 解码 · tkinter 界面(标准库自带)
闸门二 · 危险调用扫描 + 人工复核
自动扫出这几类操作,逐条列出,并人工确认每一处是否合理:
- 联网:requests、urllib 网络连接、socket、http.client、smtplib 等
- 写注册表:winreg、修改启动项、创建系统服务
- 写系统目录:Program Files、system32、开机启动目录
- 执行外部命令:subprocess、os.system、popen
- 动态执行代码:eval()、exec()、__import__、pickle 反序列化
- 读取用户隐私:键盘监听、剪贴板劫持、摄像头偷拍
闸门三 · 统一打包脚本
提交者只能提供源码和几个参数(工具名、图标、版本号),
不能提交自己的打包脚本。因为 PyInstaller 的配置文件本质上就是可执行的 Python 代码,
允许自定义配置文件就等于把构建机的执行权交出去了。
仍然挡不住的一层
Python 是动态语言,恶意代码可以藏得很深。下面这些是自动扫描和规则都很难拦住的:
- 多层编码隐藏:字符串先 base64 再拆成碎片拼起来,最后才 exec。肉眼看过去完全无害。
- ctypes 调系统 API:不 import socket,也能直接调用 Windows API 联网。
- 正当功能的滥用:一个"文本工具"读了某个文件并把内容拼进报错信息弹窗,行为上很难判定。
- 正常的 bug 造成破坏:代码没恶意,但处理畸形文件时崩了、删错文件了。
所以我们的做法是:每一份源码都有人逐行读过,不是只跑扫描器。
扫描器的作用是「把可疑的地方圈出来让人去看」,不是「扫过就安全」。
另外,你下载的每一个工具都有源码可查,你自己也能读一遍——这才是这个平台真正的价值。
我们自己的 6 个工具
按上面同样的标准做过核查。结果如下,你可以自己去下载源码对:
| 联网代码 | 零 —— 所有处理在本机完成,不发任何网络请求 |
| 读写注册表 | 零 |
| 写系统目录 | 零 —— 只往你自己指定的文件夹写结果文件 |
| 开机自启 | 零 |
| 后台常驻 | 零 —— 关掉窗口就彻底退出 |
| 卸载残留 | 零 —— 删掉 exe 就等于卸载干净 |
| 杀毒误报 | 可能发生 —— 未购买数字签名证书(2000~4000 元/年),已提供 SHA256 供核对 |
查看全部工具与源码
发现安全问题怎么办
如果你发现任何一个工具有问题,请发邮件到 security@getgreentool.com,
附上复现步骤。我们会在核实后下架该工具,并在工具页标注。
报告有效的话,我们会把你加进致谢名单。