pyinstaller打包软件实现自动升级360报毒问题排查

  • A+
所属分类:编程语言

百度网盘批量处理助手使用了很久,每次更新升级都非常麻烦,用户需要通过百度网盘的下载地址或者蓝奏的下载地址更新下载,解压后运行,想着搞个自动升级的方式一劳永逸,无奈自动下载消耗服务器流量巨大,也容易受到网络攻击,同时多次打包后360总是报毒。特别是软件打包后360报毒问题,这就导致用户望而生畏。其实本来没什么问题,但是没有交过路费,硬是整得感觉是有问题。申诉也不管用,还得从源代码着手让软件完全符合360的审查。

一、软件升级的过程

软件升级主要流程是先请求服务器检测最新版本号是否大于当前软件的版本号,如果有最新的就下载最新压缩包,然后启动更新程序结束当前软件,由更新程序解压后覆盖原来的,然后启动新的软件。这涉及到主程序和更新程序两者的来回退出和调用。当然也可以直接由主程序生成bat批处理文件然后启动批处理,由批处理复制新程序启动新程序。

二、360报毒问题查找

为图简便爱在灵灵久站长首先采用了bat升级的方式,然而执行bat就会被360提示存在危险操作提示框,打包出来的主程序也会被报毒。因此不得不采用主程序+更新程序的方式,但是依然会有各种安全风险提示,如复制了VCRUNTIME140.dll 等重要的文件,各种想不到的提示框,就是不能安安静静的好好升级。直接排除不复制该文件或者移动该文件一样也会提示,最后检测发现只要使用了shutil模块中的移动或者复制函数,然后os执行文件,编写好的代码通过pyinstaller打包后刚开始360是没有提示报毒,但是一旦具体执行起相关软件的自动更新升级后都会报毒。最后只能采用覆写的方式,不涉及移动或复制就没毛病了。

三、360报毒原因分析

复制、移动和执行exe文件可能涉及到自动下载升级等敏感操作类似病毒特征,因此正常程序的升级也被当成了病毒。360安全卫士就直接宁可错杀一千也不能放过一个。另外,跨进程的操作运行其他exe程序也是一大风险。还有一些编程语言如:易语言本身也被360当成了自带原罪。总之是一言难尽,没法改变规则就只能适应规则,这里面无数次的尝试、排查、反复和折腾只有试过才知道。

weinxin
我的微信公众号
爱真理,得永生!          爱在灵灵久博客,网罗天下,福利大家!