教程 · 2021年8月20日 0

如何用脚本消灭maya病毒那句“你的文件贼健康~我就说一声没有别的意思”

自从maya病毒开始传播,也有一年多的时间了,当年第一次见到脚本栏出现那句“你的文件贼健康~我就说一声没有别的意思”,还以为是万年懒惰的IT突然给我们一个惊喜呢。

去年我们采用的方法是根据自动桌子官方论坛的帖子,当时只有前几条:https://forums.autodesk.com/t5/maya-forum/saving-file-creates-a-warning-in-chinese-characters/td-p/9731549

具体步骤再回顾下:

在windows系统的%USERPROFILE%\Documents\maya\scripts目录中,删除以下三个文件:
vaccine.py
vaccine.pyc
userSetup.py

这些文件,是在保存受感染场景时,由恶意代码生成的。

如果打开或保存maya文档时出现了“你的文件贼健康~我就说一声没有别的意思”这行黄字的提示,在大纲搜索并删除vaccine_gene这个节点,或者运行以下python脚本:

jobs = cmds.scriptJob(lj=True)
for job in jobs:
    if "leukocyte.antivirus()" in job:
        id = job.split(":")[0]
        if id.isdigit():
            cmds.scriptJob(k=int(id), f=True)
 
script_nodes = cmds.ls("vaccine_gene", type="script")
if script_nodes:
    cmds.delete(script_nodes)

 

另外一个方法是使用自动桌子提供的脚本软件:https://knowledge.autodesk.com/support/maya/troubleshooting/caas/sfdcarticles/sfdcarticles/Chinese-warning-message-when-saving-a-scene-in-Maya.html

==================我是骄傲的分割线==================

本以为有官方的神助,就可以高枕无忧完全不在乎这恶意代码的破坏性了,结果这几天发给印度的外包公司制作文件时,各种提示纹理贴图错误,yeti节点一片空白,渲染mask丢失等神奇问题……

经过对方TD的筛查,才发现病毒代码依然存在,估计是当时服务器上几万个maya文件没有逐一清理干净,以及没有使用最新的MayaScanner版本导致的。

那么在安装软件需要申请权限的情况下,最快手动解决的方案就是使用文本编辑器直接编辑.ma文件,删除恶意代码部分。

首先用记事本等文本编辑软件,打开需要清理的.ma文件,分别搜索以下两行文本:

createNode script -n “vaccine_gene”

createNode script -n “breed_gene”

找到这两行文本后,删除他们以及之后的5行文本。因为文本非常长,这里只列举出每行开头的内容,它们长得如下:

createNode script -n “vaccine_gene”;
rename -uid “359C899E-48A0-5564-D7F1-60BFC33E0FBD”;
addAttr -ci true -sn “nts” -ln “notes” -dt “string”;
setAttr “.b” -type “string” “a lot of code here”
setAttr “.st” 1;
setAttr “.stp” 1;
setAttr “.nts” -type “string” “a lot of code here”

以及

createNode script -n “breed_gene”;
rename -uid “2713E645-49E9-21E1-A556-4B92D69E7F4A”;
setAttr “.b” -type “string” “a lot of code here”;
setAttr “.st” 1;
setAttr “.stp” 1;

删除这些内容后,保存,搞定!

肯定有朋友会说了,知乎上不是有从maya的Expression Editor表达式编辑器里删除代码的图示吗?不比文本操作更简单直观?

然而,weindy这台工作机的maya 2016版并不能打开Expression Editor的界面,清空所有maya配置文件也不行,真的是十分崩溃,所以还是做份记录分享下吧。