Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
06638a8cdc | ||
|
|
42d8a8fde0 | ||
|
|
e2997fbbce | ||
|
|
5dd671eb4a | ||
|
|
59aff0f196 | ||
|
|
548def29b3 | ||
|
|
84d59eb7d4 | ||
|
|
1cc3b599a9 |
No files matched your search
@@ -1,6 +1,6 @@
|
||||
import os, sys, time, json, psutil
|
||||
import os, gc, sys, time, json, psutil
|
||||
import ctypes, requests, subprocess
|
||||
import win32file, win32api, win32con
|
||||
import win32file, win32api, win32con, win32gui
|
||||
import xml.etree.ElementTree as ET
|
||||
from hashlib import md5, sha1, sha256
|
||||
from pefile import PE, DIRECTORY_ENTRY
|
||||
@@ -25,6 +25,7 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
self.init_config_ui()
|
||||
self.init_config_mbr()
|
||||
self.init_whitelist()
|
||||
self.init_blocklist()
|
||||
self.init_tray_icon()
|
||||
self.setup_control()
|
||||
self.init_protect()
|
||||
@@ -42,13 +43,16 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
self.protect_threading_init_3()
|
||||
self.protect_threading_init_4()
|
||||
self.protect_threading_init_5()
|
||||
self.block_window_threading_init()
|
||||
|
||||
def init_config(self):
|
||||
self.Safe = True
|
||||
self.Virus_Scan = False
|
||||
self.block_window = True
|
||||
self.pyas_opacity = 0
|
||||
self.ui.Theme_White.setChecked(True)
|
||||
self.pyas = str(sys.argv[0]).replace("\\", "/")
|
||||
self.sflist = [".exe",".dll",".com",".msi",".js",".jar",".vbs",".ps1",".xls",".xlsx",".doc",".docx"]
|
||||
self.md5_key = self.pyas_key()
|
||||
self.pyasConfig = self.init_config_json()
|
||||
self.init_config_lang()
|
||||
@@ -56,25 +60,32 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
|
||||
def writeConfig(self, config):
|
||||
try:
|
||||
with open("Library/PYAS.json", "w", encoding="utf-8") as f:
|
||||
with open("C:/Windows/SysWOW64/PYAS/PYAS.json", "w", encoding="utf-8") as f:
|
||||
f.write(json.dumps(config, indent=4, ensure_ascii=False))
|
||||
except Exception as e:
|
||||
self.pyas_bug_log(e)
|
||||
|
||||
def create_library(self):
|
||||
try:
|
||||
if not os.path.exists("Library"):
|
||||
os.makedirs("Library")
|
||||
if not os.path.exists("C:/Windows/SysWOW64/PYAS"):
|
||||
os.makedirs("C:/Windows/SysWOW64/PYAS")
|
||||
except Exception as e:
|
||||
self.pyas_bug_log(e)
|
||||
|
||||
def init_whitelist(self):
|
||||
try:
|
||||
with open("Library/Whitelist.file", "r", encoding="utf-8") as f:
|
||||
with open("C:/Windows/SysWOW64/PYAS/Whitelist.txt", "r", encoding="utf-8") as f:
|
||||
self.whitelist = [line.strip() for line in f.readlines()]
|
||||
except:
|
||||
self.whitelist = []
|
||||
|
||||
def init_blocklist(self):
|
||||
try:
|
||||
with open("C:/Windows/SysWOW64/PYAS/Blocklist.txt", "r", encoding="utf-8") as f:
|
||||
self.blocklist = [line.strip() for line in f.readlines()]
|
||||
except:
|
||||
self.blocklist = []
|
||||
|
||||
def init_config_mbr(self):
|
||||
try:
|
||||
with open(r"\\.\PhysicalDrive0", "r+b") as f:
|
||||
@@ -83,9 +94,9 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
self.mbr_value = None
|
||||
|
||||
def init_config_json(self):
|
||||
if not os.path.exists("Library/PYAS.json"):
|
||||
if not os.path.exists("C:/Windows/SysWOW64/PYAS/PYAS.json"):
|
||||
self.writeConfig({"language":"en_US","high_sensitivity":0,"cloud_services":1})
|
||||
with open("Library/PYAS.json", "r", encoding="utf-8") as f:
|
||||
with open("C:/Windows/SysWOW64/PYAS/PYAS.json", "r", encoding="utf-8") as f:
|
||||
return json.load(f)
|
||||
|
||||
def init_config_lang(self):
|
||||
@@ -132,8 +143,8 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
self.ui.Setting_Back.clicked.connect(self.Setting_Back)
|
||||
self.ui.Repair_System_Files_Button.clicked.connect(self.Repair_System_Files)
|
||||
self.ui.Clean_System_Files_Button.clicked.connect(self.Clean_System_Files)
|
||||
self.ui.Enable_Safe_Mode_Button.clicked.connect(self.Enable_Safe_Mode)
|
||||
self.ui.Disable_Safe_Mode_Button.clicked.connect(self.Disable_Safe_Mode)
|
||||
self.ui.Window_Block_Button.clicked.connect(self.Get_Software_Window)
|
||||
self.ui.Repair_System_Network_Button.clicked.connect(self.Repair_System_Network)
|
||||
self.ui.Process_list.setContextMenuPolicy(Qt.CustomContextMenu)
|
||||
self.ui.Process_list.customContextMenuRequested.connect(self.Process_list_Menu)
|
||||
self.ui.Protection_switch_Button.clicked.connect(self.protect_threading_init)
|
||||
@@ -249,12 +260,12 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
self.ui.System_Process_Manage_Button.setText(self.text_Translate("系統進程管理"))
|
||||
self.ui.Repair_System_Files_Button.setText(self.text_Translate("系統檔案修復"))
|
||||
self.ui.Clean_System_Files_Button.setText(self.text_Translate("系統垃圾清理"))
|
||||
self.ui.Enable_Safe_Mode_Button.setText(self.text_Translate("啟用安全模式"))
|
||||
self.ui.Disable_Safe_Mode_Button.setText(self.text_Translate("禁用安全模式"))
|
||||
self.ui.Window_Block_Button.setText(self.text_Translate("軟體彈窗攔截"))
|
||||
self.ui.Repair_System_Network_Button.setText(self.text_Translate("系統網路修復"))
|
||||
self.ui.About_Back.setText(self.text_Translate("返回"))
|
||||
self.ui.PYAS_Version.setText(self.text_Translate(f"PYAS V{pyas_version} {self.md5_key}"))
|
||||
self.ui.GUI_Made_title.setText(self.text_Translate("介面製作:"))
|
||||
self.ui.GUI_Made_Name.setText(self.text_Translate("87owo"))
|
||||
self.ui.GUI_Made_Name.setText(self.text_Translate("mtkiao"))
|
||||
self.ui.Core_Made_title.setText(self.text_Translate("核心製作:"))
|
||||
self.ui.Core_Made_Name.setText(self.text_Translate("87owo"))
|
||||
self.ui.Testers_title.setText(self.text_Translate("測試人員:"))
|
||||
@@ -518,14 +529,15 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
|
||||
def closeEvent(self, event):
|
||||
if QMessageBox.warning(self,self.text_Translate("警告"),self.text_Translate("您確定要退出 PYAS 和所有防護嗎?"),QMessageBox.Yes|QMessageBox.No) == 16384:
|
||||
self.block_window = False
|
||||
self.proc_protect = False
|
||||
self.file_protect = False
|
||||
self.mbr_protect = False
|
||||
self.reg_protect = False
|
||||
self.enh_protect = False
|
||||
self.hideWindow()
|
||||
self.tray_icon.hide()
|
||||
app.quit()
|
||||
self.hideWindow()
|
||||
self.quit()
|
||||
event.ignore()
|
||||
|
||||
def pyas_bug_log(self, e):
|
||||
@@ -624,20 +636,27 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
QPushButton:hover{background-color:rgba(20,20,20,50);}""")
|
||||
|
||||
def add_white_list(self):
|
||||
file, filetype= QFileDialog.getOpenFileName(self,self.text_Translate("增加到白名單"),"C:/","All File *.*")
|
||||
try:
|
||||
if file != "":
|
||||
if QMessageBox.warning(self,self.text_Translate("警告"),self.text_Translate("您確定要增加到白名單嗎?"),QMessageBox.Yes|QMessageBox.No) == 16384:
|
||||
if str(file.replace("\\", "/")) not in self.whitelist:
|
||||
file, filetype= QFileDialog.getOpenFileName(self,self.text_Translate("增加到白名單"),"C:/","All File *.*")
|
||||
if file not in ["", "PYAS"]:
|
||||
if str(file.replace("\\", "/")) not in self.whitelist:
|
||||
if QMessageBox.warning(self,self.text_Translate("警告"),self.text_Translate("您確定要增加到白名單嗎?"),QMessageBox.Yes|QMessageBox.No) == 16384:
|
||||
try:
|
||||
self.whitelist.append(str(file.replace("\\", "/")))
|
||||
with open("Library/Whitelist.file", "a+", encoding="utf-8") as f:
|
||||
with open("C:/Windows/SysWOW64/PYAS/Whitelist.txt", "a+", encoding="utf-8") as f:
|
||||
f.write(str(file.replace("\\", "/"))+'\n')
|
||||
QMessageBox.information(self,self.text_Translate("成功"),self.text_Translate(f"成功增加到白名單: ")+str(file.replace("\\", "/")),QMessageBox.Ok)
|
||||
except:
|
||||
self.pyas_bug_log('增加到白名單失敗')
|
||||
else:
|
||||
self.pyas_bug_log('檔案已增加到白名單')
|
||||
elif QMessageBox.warning(self,self.text_Translate("警告"),self.text_Translate(f"您確定要取消增加到白名單嗎?"),QMessageBox.Yes|QMessageBox.No) == 16384:
|
||||
try:
|
||||
self.whitelist.remove(str(file.replace("\\", "/")))
|
||||
with open("C:/Windows/SysWOW64/PYAS/Whitelist.txt", "w", encoding="utf-8") as f:
|
||||
for file in self.whitelist:
|
||||
f.write(f'{file}\n')
|
||||
QMessageBox.information(self,self.text_Translate("成功"),self.text_Translate(f"成功取消增加到白名單: ")+str(file.replace("\\", "/")),QMessageBox.Ok)
|
||||
except:
|
||||
self.pyas_bug_log('取消增加到白名單失敗')
|
||||
except Exception as e:
|
||||
self.pyas_bug_log(e)
|
||||
|
||||
@@ -658,7 +677,11 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
pass
|
||||
|
||||
def Virus_Scan_Break(self):
|
||||
self.Virus_Scan = False
|
||||
try:
|
||||
self.ui.Virus_Scan_Break_Button.hide()
|
||||
self.Virus_Scan = False
|
||||
except:
|
||||
pass
|
||||
|
||||
def Virus_Solve(self):
|
||||
try:
|
||||
@@ -728,14 +751,12 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
self.ui.Virus_Scan_output.setModel(self.Virus_List_output)
|
||||
self.ui.Virus_Scan_Solve_Button.show()
|
||||
self.ui.Virus_Scan_choose_Button.show()
|
||||
self.ui.Virus_Scan_Break_Button.hide()
|
||||
self.Virus_Scan = False
|
||||
self.Virus_Scan_Break()
|
||||
self.system_unsafe()
|
||||
text = self.text_Translate(f"當前發現 {len(self.Virus_List)} 個病毒")
|
||||
else:
|
||||
self.ui.Virus_Scan_Break_Button.hide()
|
||||
self.ui.Virus_Scan_choose_Button.show()
|
||||
self.Virus_Scan = False
|
||||
self.Virus_Scan_Break()
|
||||
self.system_safe()
|
||||
text = self.text_Translate("當前未發現病毒")
|
||||
self.ui.Virus_Scan_text.setText(text)
|
||||
@@ -770,6 +791,7 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
if self.api_scan(file) or self.pe_scan(file):
|
||||
self.write_scan(file)
|
||||
self.answer_scan()
|
||||
gc.collect()
|
||||
else:
|
||||
self.ui.Virus_Scan_text.setText(self.text_Translate("請選擇掃描方式"))
|
||||
except Exception as e:
|
||||
@@ -793,8 +815,9 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
self.ui.Virus_Scan_choose_Button.hide()
|
||||
self.ui.Virus_Scan_Break_Button.show()
|
||||
QApplication.processEvents()
|
||||
self.traverse_path(path,[".exe",".dll",".com",".msi",".js",".vbs",".xls",".xlsx",".doc",".docx"])
|
||||
self.traverse_path(path)
|
||||
self.answer_scan()
|
||||
gc.collect()
|
||||
else:
|
||||
self.ui.Virus_Scan_text.setText(self.text_Translate("請選擇掃描方式"))
|
||||
except Exception as e:
|
||||
@@ -818,57 +841,57 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
self.ui.Virus_Scan_output.setModel(self.Virus_List_output)
|
||||
for d in range(26):
|
||||
try:
|
||||
self.traverse_path(f"{chr(65+d)}:/",[".exe",".dll",".com",".msi",".js",".vbs",".xls",".xlsx",".doc",".docx"])
|
||||
self.traverse_path(f"{chr(65+d)}:/")
|
||||
except:
|
||||
pass
|
||||
self.answer_scan()
|
||||
gc.collect()
|
||||
except Exception as e:
|
||||
self.pyas_bug_log(e)
|
||||
self.ui.Virus_Scan_text.setText(self.text_Translate("請選擇掃描方式"))
|
||||
self.ui.Virus_Scan_choose_Button.show()
|
||||
self.ui.Virus_Scan_Break_Button.hide()
|
||||
|
||||
def traverse_path(self,path,sflist):
|
||||
def traverse_path(self,path):
|
||||
for fd in os.listdir(path):
|
||||
try:
|
||||
fullpath = str(os.path.join(path,fd)).replace("\\", "/")
|
||||
if self.Virus_Scan == False:
|
||||
self.ui.Virus_Scan_Break_Button.hide()
|
||||
break
|
||||
elif fullpath in self.whitelist or ":/$Recycle.Bin" in fullpath or ":/Windows" in fullpath:
|
||||
continue
|
||||
elif os.path.isdir(fullpath):
|
||||
self.traverse_path(fullpath,sflist)
|
||||
self.traverse_path(fullpath)
|
||||
else:
|
||||
self.ui.Virus_Scan_text.setText(self.text_Translate(f"正在掃描: ")+fullpath)
|
||||
QApplication.processEvents()
|
||||
if self.high_sensitivity == 0 and self.sign_scan(fullpath):
|
||||
if str(os.path.splitext(fd)[1]).lower() in sflist:
|
||||
if str(os.path.splitext(fd)[1]).lower() in self.sflist:
|
||||
if self.api_scan(fullpath) or self.pe_scan(fullpath):
|
||||
self.write_scan(fullpath)
|
||||
elif self.high_sensitivity == 1:
|
||||
if self.api_scan(fullpath) or self.pe_scan(fullpath):
|
||||
self.write_scan(fullpath)
|
||||
gc.collect()
|
||||
except:
|
||||
continue
|
||||
|
||||
def Repair_System_Files(self):
|
||||
try:
|
||||
if QMessageBox.warning(self,self.text_Translate("修復系統檔案"),self.text_Translate("您確定要修復系統檔案嗎?"),QMessageBox.Yes|QMessageBox.No) == 16384:
|
||||
if QMessageBox.warning(self,self.text_Translate("警告"),self.text_Translate("您確定要修復系統檔案嗎?"),QMessageBox.Yes|QMessageBox.No) == 16384:
|
||||
self.repair_system_wallpaper()
|
||||
self.repair_system_explorer()
|
||||
self.repair_system_restrictions()
|
||||
self.repair_system_file_type()
|
||||
self.repair_system_img()
|
||||
self.repair_system_image()
|
||||
self.repair_system_icon()
|
||||
QMessageBox.information(self,self.text_Translate("完成"),self.text_Translate("修復系統檔案成功"),QMessageBox.Ok)
|
||||
QMessageBox.information(self,self.text_Translate("成功"),self.text_Translate("修復系統檔案成功"),QMessageBox.Ok)
|
||||
except Exception as e:
|
||||
self.pyas_bug_log(e)
|
||||
|
||||
def repair_system_icon(self):
|
||||
try:
|
||||
for file_type in ['exefile', 'comfile', 'txtfile', 'dllfile', 'inifile', 'VBSfile']:
|
||||
time.sleep(0.001)
|
||||
try:
|
||||
key = win32api.RegOpenKey(win32con.HKEY_CLASSES_ROOT, file_type, 0, win32con.KEY_ALL_ACCESS)
|
||||
win32api.RegSetValue(key, 'DefaultIcon', win32con.REG_SZ, '%1')
|
||||
@@ -882,13 +905,12 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
except:
|
||||
pass
|
||||
|
||||
def repair_system_img(self):
|
||||
def repair_system_image(self):
|
||||
try:
|
||||
key = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options',0,win32con.KEY_ALL_ACCESS | win32con.WRITE_OWNER)
|
||||
count = win32api.RegQueryInfoKey(key)[0]
|
||||
while count >= 0:
|
||||
try:
|
||||
time.sleep(0.001)
|
||||
subKeyName = win32api.RegEnumKey(key, count)
|
||||
win32api.RegDeleteKey(key, subKeyName)
|
||||
except:
|
||||
@@ -905,12 +927,10 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
('.txt', 'txtfile'),('txtfile', 'Text Document'),('.ini', 'inifile'),('inifile', 'Configuration Settings')]
|
||||
key = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE, 'SOFTWARE\Classes', 0, win32con.KEY_ALL_ACCESS)# HKEY_LOCAL_MACHINE
|
||||
for ext, value in data:
|
||||
time.sleep(0.001)
|
||||
win32api.RegSetValue(key, ext, win32con.REG_SZ, value)
|
||||
win32api.RegCloseKey(key)
|
||||
key = win32api.RegOpenKey(win32con.HKEY_CURRENT_USER, 'SOFTWARE\Classes', 0, win32con.KEY_ALL_ACCESS)# HKEY_CURRENT_USER
|
||||
for ext, value in data:
|
||||
time.sleep(0.001)
|
||||
win32api.RegSetValue(key, ext, win32con.REG_SZ, value)
|
||||
try:
|
||||
keyopen = win32api.RegOpenKey(key, ext + r'\shell\open', 0, win32con.KEY_ALL_ACCESS)
|
||||
@@ -922,12 +942,10 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
key = win32api.RegOpenKey(win32con.HKEY_CURRENT_USER, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts', 0, win32con.KEY_ALL_ACCESS)# HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts
|
||||
extensions = ['.exe', '.zip', '.dll', '.sys', '.bat', '.txt', '.msc']
|
||||
for ext in extensions:
|
||||
time.sleep(0.001)
|
||||
win32api.RegSetValue(key, ext, win32con.REG_SZ, '')
|
||||
win32api.RegCloseKey(key)
|
||||
key = win32api.RegOpenKey(win32con.HKEY_CLASSES_ROOT, None, 0, win32con.KEY_ALL_ACCESS)# HKEY_CLASSES_ROOT
|
||||
for ext, value in data:
|
||||
time.sleep(0.001)
|
||||
win32api.RegSetValue(key, ext, win32con.REG_SZ, value)
|
||||
if ext in ['.cmd', '.vbs']:
|
||||
win32api.RegSetValue(key, ext + 'file', win32con.REG_SZ, 'Windows Command Script')
|
||||
@@ -970,7 +988,6 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
for key in keys:
|
||||
for i in Permission:
|
||||
try:
|
||||
time.sleep(0.001)
|
||||
win32api.RegDeleteValue(key,i)
|
||||
except:
|
||||
pass
|
||||
@@ -999,12 +1016,12 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
|
||||
def Clean_System_Files(self):
|
||||
try:
|
||||
if QMessageBox.warning(self,self.text_Translate("清理系統垃圾"),self.text_Translate("您確定要清理系統垃圾嗎?"),QMessageBox.Yes|QMessageBox.No) == 16384:
|
||||
if QMessageBox.warning(self,self.text_Translate("警告"),self.text_Translate("您確定要清理系統垃圾嗎?"),QMessageBox.Yes|QMessageBox.No) == 16384:
|
||||
self.total_deleted_size = 0
|
||||
self.traverse_temp_files(f"C:/Users/{os.getlogin()}/AppData/Local/Temp")
|
||||
self.traverse_temp_files(f"C:/Windows/Temp")
|
||||
self.traverse_temp_files(f"C:/$Recycle.Bin")
|
||||
QMessageBox.information(self,self.text_Translate("完成"),self.text_Translate(f"成功清理了 {self.total_deleted_size} 位元的系統垃圾"),QMessageBox.Ok)
|
||||
QMessageBox.information(self,self.text_Translate("成功"),self.text_Translate(f"成功清理了 {self.total_deleted_size} 位元的系統垃圾"),QMessageBox.Ok)
|
||||
except Exception as e:
|
||||
self.pyas_bug_log(e)
|
||||
|
||||
@@ -1022,20 +1039,56 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
except:
|
||||
continue
|
||||
|
||||
def Enable_Safe_Mode(self):
|
||||
def Get_Software_Window(self):
|
||||
try:
|
||||
if QMessageBox.warning(self,self.text_Translate("啟用安全模式"),self.text_Translate("您確定要啟用安全模式嗎?"),QMessageBox.Yes|QMessageBox.No) == 16384:
|
||||
subprocess.run("bcdedit /set {default} safeboot minimal", check=True)
|
||||
if QMessageBox.warning(self,self.text_Translate("重啟"),self.text_Translate("使用此選項需要重啟,您確定要重啟嗎?"),QMessageBox.Yes|QMessageBox.No) == 16384:
|
||||
subprocess.run("shutdown -r -t 0", check=True)
|
||||
self.block_window = False
|
||||
if QMessageBox.warning(self,self.text_Translate("警告"),self.text_Translate("請選擇要攔截的軟體彈窗"),QMessageBox.Yes|QMessageBox.No) == 16384:
|
||||
while self.block_window == False:
|
||||
window_name = str(win32gui.GetWindowText(win32gui.GetForegroundWindow()))
|
||||
QApplication.processEvents()
|
||||
if window_name not in ["", "PYAS"]:
|
||||
if window_name not in self.blocklist:
|
||||
if QMessageBox.warning(self,self.text_Translate("警告"),self.text_Translate(f"您確定要攔截 {window_name} 嗎?"),QMessageBox.Yes|QMessageBox.No) == 16384:
|
||||
try:
|
||||
self.blocklist.append(window_name)
|
||||
with open("C:/Windows/SysWOW64/PYAS/Blocklist.txt", "a+", encoding="utf-8") as f:
|
||||
f.write(f'{window_name}\n')
|
||||
QMessageBox.information(self,self.text_Translate("成功"),self.text_Translate(f"成功增加到彈窗攔截: ")+window_name,QMessageBox.Ok)
|
||||
except:
|
||||
self.pyas_bug_log('增加到彈窗攔截失敗')
|
||||
elif QMessageBox.warning(self,self.text_Translate("警告"),self.text_Translate(f"您確定要取消攔截 {window_name} 嗎?"),QMessageBox.Yes|QMessageBox.No) == 16384:
|
||||
try:
|
||||
self.blocklist.remove(window_name)
|
||||
with open("C:/Windows/SysWOW64/PYAS/Blocklist.txt", "w", encoding="utf-8") as f:
|
||||
for window_name in self.blocklist:
|
||||
f.write(f'{window_name}\n')
|
||||
QMessageBox.information(self,self.text_Translate("成功"),self.text_Translate(f"成功取消彈窗攔截: ")+window_name,QMessageBox.Ok)
|
||||
except:
|
||||
self.pyas_bug_log('取消到彈窗攔截失敗')
|
||||
self.block_window = True
|
||||
self.block_window = True
|
||||
self.block_window_threading_init()
|
||||
except Exception as e:
|
||||
self.pyas_bug_log(e)
|
||||
|
||||
def Disable_Safe_Mode(self):
|
||||
def block_window_threading_init(self):
|
||||
Thread(target=self.block_software_window).start()
|
||||
|
||||
def block_software_window(self):
|
||||
while self.block_window:
|
||||
time.sleep(0.2)
|
||||
QApplication.processEvents()
|
||||
for window_name in self.blocklist:
|
||||
try:
|
||||
win32gui.PostMessage(win32gui.FindWindow(None, window_name), win32con.WM_SYSCOMMAND, win32con.SC_CLOSE, 0)
|
||||
except:
|
||||
pass
|
||||
|
||||
def Repair_System_Network(self):
|
||||
try:
|
||||
if QMessageBox.warning(self,self.text_Translate("禁用安全模式"),self.text_Translate("您確定要禁用安全模式嗎?"),QMessageBox.Yes|QMessageBox.No) == 16384:
|
||||
subprocess.run("bcdedit /deletevalue {current} safeboot", check=True)
|
||||
if QMessageBox.warning(self,self.text_Translate("重啟"),self.text_Translate("使用此選項需要重啟,您確定要重啟嗎?"),QMessageBox.Yes|QMessageBox.No) == 16384:
|
||||
if QMessageBox.warning(self,self.text_Translate("警告"),self.text_Translate("您確定要修復系統網路嗎?"),QMessageBox.Yes|QMessageBox.No) == 16384:
|
||||
subprocess.run("netsh winsock reset", check=True)
|
||||
if QMessageBox.warning(self,self.text_Translate("警告"),self.text_Translate("使用此選項需要重啟,您確定要重啟嗎?"),QMessageBox.Yes|QMessageBox.No) == 16384:
|
||||
subprocess.run("shutdown -r -t 0", check=True)
|
||||
except Exception as e:
|
||||
self.pyas_bug_log(e)
|
||||
@@ -1086,7 +1139,6 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
self.ui.Protection_switch_Button.setStyleSheet("""
|
||||
QPushButton{border:none;background-color:rgba(20,20,20,30);border-radius: 15px;}
|
||||
QPushButton:hover{background-color:rgba(20,20,20,50);}""")
|
||||
self.system_notification(self.text_Translate("進程防護已關閉"))
|
||||
else:
|
||||
self.proc_protect = True
|
||||
self.ui.Protection_switch_Button.setText(self.text_Translate("已開啟"))
|
||||
@@ -1102,7 +1154,6 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
self.ui.Protection_switch_Button_2.setStyleSheet("""
|
||||
QPushButton{border:none;background-color:rgba(20,20,20,30);border-radius: 15px;}
|
||||
QPushButton:hover{background-color:rgba(20,20,20,50);}""")
|
||||
self.system_notification(self.text_Translate("檔案防護已關閉"))
|
||||
else:
|
||||
self.file_protect = True
|
||||
self.ui.Protection_switch_Button_2.setText(self.text_Translate("已開啟"))
|
||||
@@ -1120,7 +1171,6 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
self.ui.Protection_switch_Button_3.setStyleSheet("""
|
||||
QPushButton{border:none;background-color:rgba(20,20,20,30);border-radius: 15px;}
|
||||
QPushButton:hover{background-color:rgba(20,20,20,50);}""")
|
||||
self.system_notification(self.text_Translate("引導分區防護已關閉"))
|
||||
else:
|
||||
self.mbr_protect = True
|
||||
self.ui.Protection_switch_Button_3.setText(self.text_Translate("已開啟"))
|
||||
@@ -1136,7 +1186,6 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
self.ui.Protection_switch_Button_4.setStyleSheet("""
|
||||
QPushButton{border:none;background-color:rgba(20,20,20,30);border-radius: 15px;}
|
||||
QPushButton:hover{background-color:rgba(20,20,20,50);}""")
|
||||
self.system_notification(self.text_Translate("註冊表防護已關閉"))
|
||||
else:
|
||||
self.reg_protect = True
|
||||
self.ui.Protection_switch_Button_4.setText(self.text_Translate("已開啟"))
|
||||
@@ -1152,7 +1201,6 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
self.ui.Protection_switch_Button_5.setStyleSheet("""
|
||||
QPushButton{border:none;background-color:rgba(20,20,20,30);border-radius: 15px;}
|
||||
QPushButton:hover{background-color:rgba(20,20,20,50);}""")
|
||||
self.system_notification(self.text_Translate("增強防護已關閉"))
|
||||
else:
|
||||
self.enh_protect = True
|
||||
self.ui.Protection_switch_Button_5.setText(self.text_Translate("已開啟"))
|
||||
@@ -1167,38 +1215,36 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
try:
|
||||
time.sleep(0.001)
|
||||
file, name = str(p.exe()).replace("\\", "/"), str(p.name())
|
||||
if self.pyas == file or file in self.whitelist or ":/Windows" in file or ":/Program" in file or "AppData" in file:
|
||||
if file == self.pyas or file in self.whitelist:
|
||||
continue
|
||||
elif self.high_sensitivity == 0:
|
||||
if self.api_scan(file):
|
||||
p.kill()
|
||||
self.system_notification(self.text_Translate("惡意軟體攔截: ")+name)
|
||||
elif self.pe_scan(file):
|
||||
p.kill()
|
||||
self.system_notification(self.text_Translate("可疑檔案攔截: ")+name)
|
||||
elif self.high_sensitivity == 1:
|
||||
if self.sign_scan(file):
|
||||
p.kill()
|
||||
self.system_notification(self.text_Translate("無效簽名攔截: ")+name)
|
||||
elif self.api_scan(file):
|
||||
p.kill()
|
||||
self.system_notification(self.text_Translate("惡意軟體攔截: ")+name)
|
||||
elif self.pe_scan(file):
|
||||
p.kill()
|
||||
self.system_notification(self.text_Translate("可疑檔案攔截: ")+name)
|
||||
elif ":/Windows" in file or ":/Program" in file or "AppData" in file:
|
||||
continue
|
||||
elif file in ["","Registry","vmmemCmZygote","MemCompression"]:
|
||||
continue
|
||||
elif self.high_sensitivity == 1 and self.sign_scan(file):
|
||||
p.kill()
|
||||
self.system_notification(self.text_Translate("無效簽名攔截: ")+name)
|
||||
elif self.api_scan(file):
|
||||
p.kill()
|
||||
self.system_notification(self.text_Translate("惡意軟體攔截: ")+name)
|
||||
elif self.pe_scan(file):
|
||||
p.kill()
|
||||
self.system_notification(self.text_Translate("可疑檔案攔截: ")+name)
|
||||
gc.collect()
|
||||
except:
|
||||
pass
|
||||
|
||||
def protect_system_file(self,path):
|
||||
sflist = [".exe",".dll",".com",".msi",".js",".vbs",".xls",".xlsx",".doc",".docx"]
|
||||
hDir = win32file.CreateFile(path,win32con.GENERIC_READ,win32con.FILE_SHARE_READ|win32con.FILE_SHARE_WRITE|win32con.FILE_SHARE_DELETE,None,win32con.OPEN_EXISTING,win32con.FILE_FLAG_BACKUP_SEMANTICS,None)
|
||||
while self.file_protect:
|
||||
try:
|
||||
for action, file in win32file.ReadDirectoryChangesW(hDir,1024,True,win32con.FILE_NOTIFY_CHANGE_FILE_NAME|win32con.FILE_NOTIFY_CHANGE_DIR_NAME|win32con.FILE_NOTIFY_CHANGE_ATTRIBUTES|win32con.FILE_NOTIFY_CHANGE_SIZE|win32con.FILE_NOTIFY_CHANGE_LAST_WRITE|win32con.FILE_NOTIFY_CHANGE_SECURITY,None,None):
|
||||
file = str(f"{path}{file}").replace("\\", "/")
|
||||
if self.pyas == file or file in self.whitelist or ":/$Recycle.Bin" in file or ":/Windows" in file:
|
||||
if file == self.pyas or file in self.whitelist:
|
||||
continue
|
||||
elif action and str(os.path.splitext(file)[1]).lower() in sflist:
|
||||
elif ":/$Recycle.Bin" in file or ":/Windows" in file or ":/Program" in file:
|
||||
continue
|
||||
elif action == 3 and str(os.path.splitext(file)[1]).lower() in self.sflist:
|
||||
if self.sign_scan(file) and self.api_scan(file):
|
||||
os.remove(file)
|
||||
self.system_notification(self.text_Translate("惡意軟體刪除: ")+file)
|
||||
@@ -1208,7 +1254,8 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
def protect_system_mbr_repair(self):
|
||||
while self.mbr_protect and self.mbr_value != None:
|
||||
try:
|
||||
time.sleep(0.5)
|
||||
time.sleep(0.2)
|
||||
QApplication.processEvents()
|
||||
with open(r"\\.\PhysicalDrive0", "r+b") as f:
|
||||
if f.read(512) != self.mbr_value:
|
||||
f.seek(0)
|
||||
@@ -1220,6 +1267,8 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
def protect_system_reg_repair(self):
|
||||
while self.reg_protect:
|
||||
try:
|
||||
time.sleep(0.2)
|
||||
QApplication.processEvents()
|
||||
self.repair_system_restrictions()
|
||||
except:
|
||||
pass
|
||||
@@ -1227,14 +1276,16 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
def protect_system_enhanced(self):
|
||||
while self.enh_protect:
|
||||
try:
|
||||
time.sleep(0.2)
|
||||
QApplication.processEvents()
|
||||
self.repair_system_file_type()
|
||||
self.repair_system_img()
|
||||
self.repair_system_image()
|
||||
self.repair_system_icon()
|
||||
except:
|
||||
pass
|
||||
|
||||
if __name__ == '__main__':
|
||||
pyas_version = "2.7.3"
|
||||
pyas_version = "2.7.5"
|
||||
QtCore.QCoreApplication.setAttribute(Qt.AA_EnableHighDpiScaling)
|
||||
QtGui.QGuiApplication.setAttribute(Qt.HighDpiScaleFactorRoundingPolicy.PassThrough)
|
||||
app = QtWidgets.QApplication(sys.argv)
|
||||
|
||||
+6
-5
@@ -3,7 +3,7 @@ translations = {"zh_TW": {"已开启":"已開啟","已关闭":"已關閉","On":"
|
||||
"軟體":"软件","檔案":"文件","確定":"确认","設定":"设置","關於":"关于",
|
||||
"錯誤":"错误","實時":"实时","發現":"发现","關閉":"关闭","裝置":"设备",
|
||||
"總數":"总数","註冊":"注册","圖標":"图标","路徑":"路径","網路":"网络",
|
||||
"位元":"字节","增":"增","單":"单","簽":"签","無":"无","關":"关",
|
||||
"位元":"字节","彈窗":"弹窗","增":"增","單":"单","簽":"签","無":"无",
|
||||
"項":"项","掃":"扫","試":"试","黃":"黄","嗎":"吗","防":"保","鑰":"钥",
|
||||
"當":"当","後":"后","護":"护","導":"导","區":"区","復":"复","攔":"拦",
|
||||
"請":"请","統":"统","刪":"删","進":"进","個":"个","選":"选","啟":"启",
|
||||
@@ -12,7 +12,7 @@ translations = {"zh_TW": {"已开启":"已開啟","已关闭":"已關閉","On":"
|
||||
"顯":"显","變":"变","戶":"户","碼":"码","雲":"云","訂":"订","稱":"称",
|
||||
"類":"类","輸":"输","執":"执","數":"数","尋":"寻","網":"网","詢":"询",
|
||||
"製":"制","員":"员","許":"许","條":"条","藍":"蓝","紅":"红","綠":"绿",
|
||||
"態":"态","務":"务","連":"连","檢":"检","測":"测","強":"强"},
|
||||
"態":"态","務":"务","連":"连","檢":"检","測":"测","關":"关","強":"强",},
|
||||
"en_US": {"已開啟":"On","已關閉":"Off","已开启":"On","已关闭":"Off",",":", ",
|
||||
"立即刪除":"Delete Now","安全模式":"Safe Mode","官方網站":"Website",
|
||||
"許可條款":"License Terms","可疑":"Suspicious ","惡意軟體":"Malware ",
|
||||
@@ -37,11 +37,12 @@ translations = {"zh_TW": {"已开启":"已開啟","已关闭":"已關閉","On":"
|
||||
"分區":"Partition ","設定":"Settings","關於":"About","模式":"Mode ",
|
||||
"提高":"Improve ","安全":"Security ","顯色":"Color ","主題":"Themes ",
|
||||
"風險":"Risk ","介面":"GUI ","核心":"Core ","服務":"Services ",
|
||||
"管理":"Manage","所有":"All ","全盤":"Full ","日誌":"Log",
|
||||
"管理":"Manage","所有":"All ","全盤":"Full ","取消":"Cancel ",
|
||||
"垃圾":"Junk ","位元":"byte ","本機":"Computer ","停止":"Stop ",
|
||||
"增加到":"Add File To ","白名單":"White List ","軟體":"Software ",
|
||||
"增加":"Add","移除":"Delete","項目":"Items ","生成":"Create ",
|
||||
"開啟":"Open ","您":"You ","此":"This ","並":"And ","未":"Not ",
|
||||
"高":"High ","新":"New ","和":"And ","會":"Can ","密鑰":"Key ",
|
||||
"已":"Has ","立即":"","顯示":"","個":"","的":"","嗎":"","中":"",
|
||||
"了":"","行":"","稱":""," ":" "}}
|
||||
"日誌":"Log","已":"Has ","彈窗":"Window ","要":"To ","立即":"",
|
||||
"的":"","顯示":"","個":"","嗎":"","中":"","了":"","行":"","稱":"",
|
||||
" ":" "}}
|
||||
+55
-55
@@ -1256,36 +1256,6 @@ class Ui_MainWindow(object):
|
||||
self.System_Process_Manage_Button.setCheckable(False)
|
||||
self.System_Process_Manage_Button.setObjectName("System_Process_Manage_Button")
|
||||
self.System_verticalLayout.addWidget(self.System_Process_Manage_Button)
|
||||
self.Repair_System_Files_Button = QtWidgets.QPushButton(self.verticalLayoutWidget_4)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.Repair_System_Files_Button.sizePolicy().hasHeightForWidth())
|
||||
self.Repair_System_Files_Button.setSizePolicy(sizePolicy)
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(12)
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
self.Repair_System_Files_Button.setFont(font)
|
||||
self.Repair_System_Files_Button.setFocusPolicy(QtCore.Qt.StrongFocus)
|
||||
self.Repair_System_Files_Button.setStyleSheet("QPushButton\n"
|
||||
"{\n"
|
||||
" border:none;\n"
|
||||
" background-color:rgba(20,20,20,30);\n"
|
||||
" border-radius: 15px;\n"
|
||||
"}\n"
|
||||
"QPushButton:hover\n"
|
||||
"{\n"
|
||||
" background-color:rgba(20,20,20,50);\n"
|
||||
"}\n"
|
||||
"QPushButton:pressed\n"
|
||||
"{\n"
|
||||
" background-color:rgba(20,20,20,70);\n"
|
||||
"}")
|
||||
self.Repair_System_Files_Button.setIconSize(QtCore.QSize(16, 16))
|
||||
self.Repair_System_Files_Button.setCheckable(False)
|
||||
self.Repair_System_Files_Button.setObjectName("Repair_System_Files_Button")
|
||||
self.System_verticalLayout.addWidget(self.Repair_System_Files_Button)
|
||||
self.Clean_System_Files_Button = QtWidgets.QPushButton(self.verticalLayoutWidget_4)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
@@ -1316,19 +1286,19 @@ class Ui_MainWindow(object):
|
||||
self.Clean_System_Files_Button.setCheckable(False)
|
||||
self.Clean_System_Files_Button.setObjectName("Clean_System_Files_Button")
|
||||
self.System_verticalLayout.addWidget(self.Clean_System_Files_Button)
|
||||
self.Enable_Safe_Mode_Button = QtWidgets.QPushButton(self.verticalLayoutWidget_4)
|
||||
self.Repair_System_Files_Button = QtWidgets.QPushButton(self.verticalLayoutWidget_4)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.Enable_Safe_Mode_Button.sizePolicy().hasHeightForWidth())
|
||||
self.Enable_Safe_Mode_Button.setSizePolicy(sizePolicy)
|
||||
sizePolicy.setHeightForWidth(self.Repair_System_Files_Button.sizePolicy().hasHeightForWidth())
|
||||
self.Repair_System_Files_Button.setSizePolicy(sizePolicy)
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(12)
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
self.Enable_Safe_Mode_Button.setFont(font)
|
||||
self.Enable_Safe_Mode_Button.setFocusPolicy(QtCore.Qt.StrongFocus)
|
||||
self.Enable_Safe_Mode_Button.setStyleSheet("QPushButton\n"
|
||||
self.Repair_System_Files_Button.setFont(font)
|
||||
self.Repair_System_Files_Button.setFocusPolicy(QtCore.Qt.StrongFocus)
|
||||
self.Repair_System_Files_Button.setStyleSheet("QPushButton\n"
|
||||
"{\n"
|
||||
" border:none;\n"
|
||||
" background-color:rgba(20,20,20,30);\n"
|
||||
@@ -1342,23 +1312,23 @@ class Ui_MainWindow(object):
|
||||
"{\n"
|
||||
" background-color:rgba(20,20,20,70);\n"
|
||||
"}")
|
||||
self.Enable_Safe_Mode_Button.setIconSize(QtCore.QSize(16, 16))
|
||||
self.Enable_Safe_Mode_Button.setCheckable(False)
|
||||
self.Enable_Safe_Mode_Button.setObjectName("Enable_Safe_Mode_Button")
|
||||
self.System_verticalLayout.addWidget(self.Enable_Safe_Mode_Button)
|
||||
self.Disable_Safe_Mode_Button = QtWidgets.QPushButton(self.verticalLayoutWidget_4)
|
||||
self.Repair_System_Files_Button.setIconSize(QtCore.QSize(16, 16))
|
||||
self.Repair_System_Files_Button.setCheckable(False)
|
||||
self.Repair_System_Files_Button.setObjectName("Repair_System_Files_Button")
|
||||
self.System_verticalLayout.addWidget(self.Repair_System_Files_Button)
|
||||
self.Repair_System_Network_Button = QtWidgets.QPushButton(self.verticalLayoutWidget_4)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.Disable_Safe_Mode_Button.sizePolicy().hasHeightForWidth())
|
||||
self.Disable_Safe_Mode_Button.setSizePolicy(sizePolicy)
|
||||
sizePolicy.setHeightForWidth(self.Repair_System_Network_Button.sizePolicy().hasHeightForWidth())
|
||||
self.Repair_System_Network_Button.setSizePolicy(sizePolicy)
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(12)
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
self.Disable_Safe_Mode_Button.setFont(font)
|
||||
self.Disable_Safe_Mode_Button.setFocusPolicy(QtCore.Qt.StrongFocus)
|
||||
self.Disable_Safe_Mode_Button.setStyleSheet("QPushButton\n"
|
||||
self.Repair_System_Network_Button.setFont(font)
|
||||
self.Repair_System_Network_Button.setFocusPolicy(QtCore.Qt.StrongFocus)
|
||||
self.Repair_System_Network_Button.setStyleSheet("QPushButton\n"
|
||||
"{\n"
|
||||
" border:none;\n"
|
||||
" background-color:rgba(20,20,20,30);\n"
|
||||
@@ -1372,10 +1342,40 @@ class Ui_MainWindow(object):
|
||||
"{\n"
|
||||
" background-color:rgba(20,20,20,70);\n"
|
||||
"}")
|
||||
self.Disable_Safe_Mode_Button.setIconSize(QtCore.QSize(16, 16))
|
||||
self.Disable_Safe_Mode_Button.setCheckable(False)
|
||||
self.Disable_Safe_Mode_Button.setObjectName("Disable_Safe_Mode_Button")
|
||||
self.System_verticalLayout.addWidget(self.Disable_Safe_Mode_Button)
|
||||
self.Repair_System_Network_Button.setIconSize(QtCore.QSize(16, 16))
|
||||
self.Repair_System_Network_Button.setCheckable(False)
|
||||
self.Repair_System_Network_Button.setObjectName("Repair_System_Network_Button")
|
||||
self.System_verticalLayout.addWidget(self.Repair_System_Network_Button)
|
||||
self.Window_Block_Button = QtWidgets.QPushButton(self.verticalLayoutWidget_4)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.Window_Block_Button.sizePolicy().hasHeightForWidth())
|
||||
self.Window_Block_Button.setSizePolicy(sizePolicy)
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(12)
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
self.Window_Block_Button.setFont(font)
|
||||
self.Window_Block_Button.setFocusPolicy(QtCore.Qt.StrongFocus)
|
||||
self.Window_Block_Button.setStyleSheet("QPushButton\n"
|
||||
"{\n"
|
||||
" border:none;\n"
|
||||
" background-color:rgba(20,20,20,30);\n"
|
||||
" border-radius: 15px;\n"
|
||||
"}\n"
|
||||
"QPushButton:hover\n"
|
||||
"{\n"
|
||||
" background-color:rgba(20,20,20,50);\n"
|
||||
"}\n"
|
||||
"QPushButton:pressed\n"
|
||||
"{\n"
|
||||
" background-color:rgba(20,20,20,70);\n"
|
||||
"}")
|
||||
self.Window_Block_Button.setIconSize(QtCore.QSize(16, 16))
|
||||
self.Window_Block_Button.setCheckable(False)
|
||||
self.Window_Block_Button.setObjectName("Window_Block_Button")
|
||||
self.System_verticalLayout.addWidget(self.Window_Block_Button)
|
||||
self.widget_2 = QtWidgets.QWidget(self.widget)
|
||||
self.widget_2.setGeometry(QtCore.QRect(170, 50, 671, 481))
|
||||
self.widget_2.setStyleSheet("background-color:rgb(255, 255, 255);")
|
||||
@@ -1738,7 +1738,6 @@ class Ui_MainWindow(object):
|
||||
self.Theme_illustrate.raise_()
|
||||
self.Language_Choose_widget_2.raise_()
|
||||
self.Theme_title.raise_()
|
||||
self.Setting_widget.raise_()
|
||||
self.State_widget.raise_()
|
||||
self.widget_2.raise_()
|
||||
self.Process_widget.raise_()
|
||||
@@ -1746,8 +1745,9 @@ class Ui_MainWindow(object):
|
||||
self.Navigation_Bar.raise_()
|
||||
self.Protection_widget.raise_()
|
||||
self.About_widget.raise_()
|
||||
self.Tools_widget.raise_()
|
||||
self.Virus_Scan_widget.raise_()
|
||||
self.Tools_widget.raise_()
|
||||
self.Setting_widget.raise_()
|
||||
MainWindow.setCentralWidget(self.centralwidget)
|
||||
|
||||
self.retranslateUi(MainWindow)
|
||||
@@ -1802,10 +1802,10 @@ class Ui_MainWindow(object):
|
||||
self.Process_Total_title.setText(_translate("MainWindow", "進程總數:"))
|
||||
self.More_Tools_Back_Button.setText(_translate("MainWindow", "工具>"))
|
||||
self.System_Process_Manage_Button.setText(_translate("MainWindow", "系統進程管理"))
|
||||
self.Repair_System_Files_Button.setText(_translate("MainWindow", "修復系統檔案"))
|
||||
self.Clean_System_Files_Button.setText(_translate("MainWindow", "清理系統檔案"))
|
||||
self.Enable_Safe_Mode_Button.setText(_translate("MainWindow", "啟動安全模式"))
|
||||
self.Disable_Safe_Mode_Button.setText(_translate("MainWindow", "關閉安全模式"))
|
||||
self.Repair_System_Files_Button.setText(_translate("MainWindow", "修復系統檔案"))
|
||||
self.Repair_System_Network_Button.setText(_translate("MainWindow", "修復系統網路"))
|
||||
self.Window_Block_Button.setText(_translate("MainWindow", "軟體彈窗攔截"))
|
||||
self.high_sensitivity_title.setText(_translate("MainWindow", "高靈敏度模式"))
|
||||
self.high_sensitivity_illustrate.setText(_translate("MainWindow", "啟用此選項可以提高引擎的靈敏度"))
|
||||
self.high_sensitivity_switch_Button.setText(_translate("MainWindow", "已關閉"))
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import pyinstaller_versionfile
|
||||
pyinstaller_versionfile.create_versionfile(
|
||||
output_file="versionfile.txt",
|
||||
version='2.7.3',
|
||||
version='2.7.5',
|
||||
company_name="PYAS Security",
|
||||
file_description="Python Antivirus Software",
|
||||
internal_name="PYAS",
|
||||
|
||||
Reference in new issue
Block a user