Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
241a9ffea5 | ||
|
|
3e0749ad60 | ||
|
|
0f55ff4295 | ||
|
|
d8f8c34991 | ||
|
|
7ddd323b65 | ||
|
|
36bbb6e708 | ||
|
|
06638a8cdc | ||
|
|
42d8a8fde0 | ||
|
|
e2997fbbce | ||
|
|
5dd671eb4a | ||
|
|
59aff0f196 | ||
|
|
548def29b3 | ||
|
|
84d59eb7d4 | ||
|
|
1cc3b599a9 | ||
|
|
0e02b56d20 | ||
|
|
4e8d99f557 | ||
|
|
f3add6e3e3 | ||
|
|
32a2a93eb5 | ||
|
|
0090ee516f | ||
|
|
42e4e958df | ||
|
|
b6970d1da6 |
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)
|
||||
@@ -233,7 +244,7 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
self.ui.Protection_illustrate.setText(self.text_Translate("啟用此選項可以監控進程並攔截病毒"))
|
||||
self.ui.Protection_switch_Button.setText(self.text_Translate(self.ui.Protection_switch_Button.text()))
|
||||
self.ui.Protection_title_2.setText(self.text_Translate("檔案防護"))
|
||||
self.ui.Protection_illustrate_2.setText(self.text_Translate("啟用此選項可以刪除病毒檔案變更"))
|
||||
self.ui.Protection_illustrate_2.setText(self.text_Translate("啟用此選項可以監控病毒檔案變更"))
|
||||
self.ui.Protection_switch_Button_2.setText(self.text_Translate(self.ui.Protection_switch_Button_2.text()))
|
||||
self.ui.Protection_title_3.setText(self.text_Translate("引導防護"))
|
||||
self.ui.Protection_illustrate_3.setText(self.text_Translate("啟用此選項可以修復系統引導分區"))
|
||||
@@ -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("測試人員:"))
|
||||
@@ -447,7 +458,7 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
|
||||
def mousePressEvent(self, event):
|
||||
def updateOpacity():
|
||||
if self.pyas_opacity > 70 and self.m_flag == True:
|
||||
if self.pyas_opacity > 80 and self.m_flag == True:
|
||||
self.pyas_opacity -= 1
|
||||
self.setWindowOpacity(self.pyas_opacity/100)
|
||||
else:
|
||||
@@ -517,15 +528,16 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
self.system_notification(self.text_Translate("PYAS 已最小化到系統托盤圖標"))
|
||||
|
||||
def closeEvent(self, event):
|
||||
if QMessageBox.warning(self,self.text_Translate("警告"),self.text_Translate("您確定要退出 PYAS 和相關防護嗎?"),QMessageBox.Yes|QMessageBox.No) == 16384:
|
||||
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()
|
||||
QApplication.instance().quit()
|
||||
event.ignore()
|
||||
|
||||
def pyas_bug_log(self, e):
|
||||
@@ -547,16 +559,19 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
try:
|
||||
with open(self.pyas, "rb") as f:
|
||||
file_md5 = str(md5(f.read()).hexdigest())
|
||||
response = requests.get("http://27.147.30.238:5001/pyas", params={"key": file_md5}, timeout=3)
|
||||
if response.status_code == 200:
|
||||
if response.text == "True":
|
||||
return ""
|
||||
elif response.text == "Update":
|
||||
return "(軟體需要更新)"
|
||||
else:
|
||||
return "(安全密鑰錯誤)"
|
||||
else:
|
||||
return "(網路連接錯誤)"
|
||||
for url in ["http://27.147.30.238:5001/pyas","https://api.pyas.cf/pyas"]:
|
||||
try:
|
||||
response = requests.get(url, params={"key": file_md5}, timeout=3)
|
||||
if response.status_code == 200:
|
||||
if response.text == "True":
|
||||
return ""
|
||||
elif response.text == "Update":
|
||||
return "(軟體需要更新)"
|
||||
else:
|
||||
return "(安全密鑰錯誤)"
|
||||
except:
|
||||
pass
|
||||
return "(網路連接錯誤)"
|
||||
except:
|
||||
return "(網路連接錯誤)"
|
||||
|
||||
@@ -624,25 +639,52 @@ 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)
|
||||
|
||||
def system_safe(self):
|
||||
try:
|
||||
self.ui.State_icon.setPixmap(QtGui.QPixmap(":/icon/Icon/check.png"))
|
||||
self.ui.State_title.setText(self.text_Translate("此裝置已受到防護"))
|
||||
self.Safe = True
|
||||
except:
|
||||
pass
|
||||
|
||||
def system_unsafe(self):
|
||||
try:
|
||||
self.ui.State_icon.setPixmap(QtGui.QPixmap(":/icon/Icon/X2.png"))
|
||||
self.ui.State_title.setText(self.text_Translate("此裝置當前不安全"))
|
||||
self.Safe = False
|
||||
except:
|
||||
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:
|
||||
@@ -659,9 +701,7 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
self.ui.Virus_Scan_output.setModel(self.Virus_List_output)
|
||||
self.ui.Virus_Scan_text.setText(self.text_Translate("成功: 刪除成功"))
|
||||
self.ui.Virus_Scan_Solve_Button.hide()
|
||||
self.ui.State_icon.setPixmap(QtGui.QPixmap(":/icon/Icon/check.png"))
|
||||
self.ui.State_title.setText(self.text_Translate("此裝置已受到防護"))
|
||||
self.Safe = True
|
||||
self.system_safe()
|
||||
except Exception as e:
|
||||
self.pyas_bug_log(e)
|
||||
|
||||
@@ -694,7 +734,7 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
fn.append(str(func.name, "utf-8"))
|
||||
for vfl in function_list:
|
||||
QApplication.processEvents()
|
||||
if (sum(1 for num in fn if num in vfl)/len(vfl)) - (sum(1 for num in fn if num not in vfl)/len(vfl)) == 1.0:
|
||||
if sum(1 for i in range(min(len(vfl), len(fn))) if vfl[i] == fn[i]) / min(len(vfl), len(fn)) > 0.5:
|
||||
return True
|
||||
return False
|
||||
except:
|
||||
@@ -712,19 +752,15 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
if self.Virus_List != []:
|
||||
self.Virus_List_output.setStringList(self.Virus_List)
|
||||
self.ui.Virus_Scan_output.setModel(self.Virus_List_output)
|
||||
self.ui.State_icon.setPixmap(QtGui.QPixmap(":/icon/Icon/X2.png"))
|
||||
self.ui.State_title.setText(self.text_Translate("此裝置當前不安全"))
|
||||
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.Safe = 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.Safe = True
|
||||
self.Virus_Scan_Break()
|
||||
self.system_safe()
|
||||
text = self.text_Translate("當前未發現病毒")
|
||||
self.ui.Virus_Scan_text.setText(text)
|
||||
self.system_notification(text)
|
||||
@@ -758,6 +794,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:
|
||||
@@ -781,8 +818,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:
|
||||
@@ -806,57 +844,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')
|
||||
@@ -870,13 +908,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:
|
||||
@@ -893,12 +930,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)
|
||||
@@ -910,12 +945,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')
|
||||
@@ -958,7 +991,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
|
||||
@@ -987,12 +1019,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)
|
||||
|
||||
@@ -1010,20 +1042,55 @@ 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_threading_init()
|
||||
except Exception as e:
|
||||
self.pyas_bug_log(e)
|
||||
|
||||
def Disable_Safe_Mode(self):
|
||||
def block_window_threading_init(self):
|
||||
self.block_window = True
|
||||
Thread(target=self.block_software_window).start()
|
||||
|
||||
def block_software_window(self):
|
||||
while self.block_window:
|
||||
time.sleep(0.2)
|
||||
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)
|
||||
@@ -1074,7 +1141,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("已開啟"))
|
||||
@@ -1090,7 +1156,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("已開啟"))
|
||||
@@ -1108,7 +1173,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("已開啟"))
|
||||
@@ -1124,7 +1188,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("已開啟"))
|
||||
@@ -1140,7 +1203,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("已開啟"))
|
||||
@@ -1151,42 +1213,42 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
|
||||
def protect_system_processes(self):
|
||||
while self.proc_protect:
|
||||
time.sleep(0.2)
|
||||
for p in psutil.process_iter():
|
||||
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)
|
||||
else:
|
||||
self.whitelist.append(str(file.replace("\\", "/")))#
|
||||
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)
|
||||
@@ -1196,7 +1258,7 @@ 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)
|
||||
with open(r"\\.\PhysicalDrive0", "r+b") as f:
|
||||
if f.read(512) != self.mbr_value:
|
||||
f.seek(0)
|
||||
@@ -1208,6 +1270,7 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
def protect_system_reg_repair(self):
|
||||
while self.reg_protect:
|
||||
try:
|
||||
time.sleep(0.2)
|
||||
self.repair_system_restrictions()
|
||||
except:
|
||||
pass
|
||||
@@ -1215,14 +1278,15 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
def protect_system_enhanced(self):
|
||||
while self.enh_protect:
|
||||
try:
|
||||
time.sleep(0.2)
|
||||
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.2"
|
||||
pyas_version = "2.7.6"
|
||||
QtCore.QCoreApplication.setAttribute(Qt.AA_EnableHighDpiScaling)
|
||||
QtGui.QGuiApplication.setAttribute(Qt.HighDpiScaleFactorRoundingPolicy.PassThrough)
|
||||
app = QtWidgets.QApplication(sys.argv)
|
||||
|
||||
+16
-21
@@ -1,10 +1,9 @@
|
||||
translations = {"zh_TW": {"已开启":"已開啟","已关闭":"已關閉","On":"已開啟","Off":"已關閉"},
|
||||
"zh_CN": {"已開啟":"已开启","已關閉":"已关闭","On":"已开启","Off":"已关闭",
|
||||
"軟體":"软件","檔案":"文件","確定":"确认","設定":"设置","關於":"关于",
|
||||
"錯誤":"错误","實時":"实时","發現":"发现","本機":"电脑","資料":"数据",
|
||||
"誤殺":"误杀","開發":"开发","關閉":"关闭","資訊":"资讯","裝置":"设备",
|
||||
"錯誤":"错误","實時":"实时","發現":"发现","關閉":"关闭","裝置":"设备",
|
||||
"總數":"总数","註冊":"注册","圖標":"图标","路徑":"路径","網路":"网络",
|
||||
"編輯":"编辑","位元":"字节","增":"增","單":"单","簽":"签","無":"无",
|
||||
"位元":"字节","彈窗":"弹窗","增":"增","單":"单","簽":"签","無":"无",
|
||||
"項":"项","掃":"扫","試":"试","黃":"黄","嗎":"吗","防":"保","鑰":"钥",
|
||||
"當":"当","後":"后","護":"护","導":"导","區":"区","復":"复","攔":"拦",
|
||||
"請":"请","統":"统","刪":"删","進":"进","個":"个","選":"选","啟":"启",
|
||||
@@ -13,8 +12,7 @@ translations = {"zh_TW": {"已开启":"已開啟","已关闭":"已關閉","On":"
|
||||
"顯":"显","變":"变","戶":"户","碼":"码","雲":"云","訂":"订","稱":"称",
|
||||
"類":"类","輸":"输","執":"执","數":"数","尋":"寻","網":"网","詢":"询",
|
||||
"製":"制","員":"员","許":"许","條":"条","藍":"蓝","紅":"红","綠":"绿",
|
||||
"態":"态","擇":"择","務":"务","連":"连","檢":"检","測":"测","庫":"库",
|
||||
"關":"关","權":"权","強":"强"},
|
||||
"態":"态","務":"务","連":"连","檢":"检","測":"测","關":"关","強":"强",},
|
||||
"en_US": {"已開啟":"On","已關閉":"Off","已开启":"On","已关闭":"Off",",":", ",
|
||||
"立即刪除":"Delete Now","安全模式":"Safe Mode","官方網站":"Website",
|
||||
"許可條款":"License Terms","可疑":"Suspicious ","惡意軟體":"Malware ",
|
||||
@@ -28,26 +26,23 @@ translations = {"zh_TW": {"已开启":"已開啟","已关闭":"已關閉","On":"
|
||||
"狀態":"State ","掃描":"Scan ","工具":"Tools ","防護":"Protect ",
|
||||
"失敗":"Failed ","請":"Please ","路徑":"Path ","方式":"Method ",
|
||||
"需要":"Need ","病毒":"Virus ","選擇":"Select ","返回":"Back",
|
||||
"找到":"Find ","受到":"Been ","錯誤":"Error","完成":"Complete ",
|
||||
"托盤":"Tray ","圖標":"Icon ","不安全":"Unsafe","引擎":"Engine ",
|
||||
"受到":"Been ","錯誤":"Error","完成":"Complete ","引擎":"Engine ",
|
||||
"托盤":"Tray ","圖標":"Icon ","不安全":"Unsafe","增強":"Enhanced ",
|
||||
"系統":"System ","雲端":"Cloud ","重啟":"Reboot ","修復":"Repair ",
|
||||
"裝置":"Device ","發現":"Found ","成功":"Success ","清理":"Cleanup ",
|
||||
"確定":"OK","執行":"Execute ","警告":"Warning ","搜尋":"Search ",
|
||||
"修改":"Modify ","用戶":"User ","使用":"Use ","哈希":"Hashes",
|
||||
"更多":"More","重置":"Reset ","網路":"Network ","配置":"Config ",
|
||||
"確定":"OK","執行":"Execute ","警告":"Warning ","使用":"Use ",
|
||||
"網路":"Network ","變更":"Change ","總數":"Total","結束":"End ",
|
||||
"選項":"Options ","監控":"Monitor ","連接":"Connect ","可以":"To ",
|
||||
"進程":"Process ","攔截":"Block ","引導":"Boot ","刪除":"Delete ",
|
||||
"分區":"Partition ","設定":"Settings","關於":"About ","模式":"Mode ",
|
||||
"分區":"Partition ","設定":"Settings","關於":"About","模式":"Mode ",
|
||||
"提高":"Improve ","安全":"Security ","顯色":"Color ","主題":"Themes ",
|
||||
"風險":"Risk ","介面":"GUI ","核心":"Core ","服務":"Services ",
|
||||
"管理":"Manage","相關":"Related ","全盤":"Full ","日誌":"Log",
|
||||
"管理":"Manage","所有":"All ","全盤":"Full ","取消":"Cancel ",
|
||||
"垃圾":"Junk ","位元":"byte ","本機":"Computer ","停止":"Stop ",
|
||||
"變更":"Change ","總數":"Total","結束":"End ","權限":"Permissions ",
|
||||
"增加到":"Add File To ","白名單":"White List ","黑名單":"Black List ",
|
||||
"增加":"Add","移除":"Delete","增強":"Enhanced ","項目":"Items ",
|
||||
"前":"Before","後":"After","名":"Name","開啟":"Open ","您":"You ",
|
||||
"值":"Value ","此":"This ","但":"But ","並":"And ","嗎":"",
|
||||
"高":"High ","新":"New ","是":"Is ","和":"And ","會":"Can ",
|
||||
"到":"For ","未":"Not ","已":"Has ","個":"","顯示":"","的":"",
|
||||
"不正確":"Incorrect ","軟體":"Software ","密鑰":"Key ","立即":"",
|
||||
"生成":"Create ","中":"","了":"","行":"","稱":""," ":" "}}
|
||||
"增加到":"Add File To ","白名單":"White List ","軟體":"Software ",
|
||||
"增加":"Add","移除":"Delete","項目":"Items ","生成":"Create ",
|
||||
"開啟":"Open ","您":"You ","此":"This ","並":"And ","未":"Not ",
|
||||
"高":"High ","新":"New ","和":"And ","會":"Can ","密鑰":"Key ",
|
||||
"日誌":"Log","已":"Has ","彈窗":"Window ","要":"To ","立即":"",
|
||||
"的":"","顯示":"","個":"","嗎":"","中":"","了":"","行":"","稱":"",
|
||||
" ":" "}}
|
||||
+1
-1
@@ -1 +1 @@
|
||||
function_list = [['_CorExeMain'], ['GetProcessHeap', 'RtlUnwind', 'RaiseException', 'HeapSize', 'TerminateProcess', 'UnhandledExceptionFilter', 'SetUnhandledExceptionFilter', 'IsDebuggerPresent', 'HeapDestroy', 'HeapCreate', 'VirtualFree', 'Sleep', 'GetStdHandle', 'GetTimeZoneInformation', 'GetACP', 'SetHandleCount', 'GetFileType', 'GetStartupInfoA', 'GetCommandLineA', 'GetEnvironmentStrings', 'FreeEnvironmentStringsW', 'GetEnvironmentStringsW', 'QueryPerformanceCounter', 'GetSystemTimeAsFileTime', 'LCMapStringA', 'LCMapStringW', 'GetConsoleCP', 'GetConsoleMode', 'GetStringTypeA', 'GetStringTypeW', 'SetStdHandle', 'WriteConsoleA', 'GetConsoleOutputCP', 'WriteConsoleW', 'GetDateFormatA', 'GetTimeFormatA', 'GetDriveTypeA', 'SetEnvironmentVariableA', 'HeapReAlloc', 'VirtualAlloc', 'SetCurrentDirectoryA', 'HeapAlloc', 'HeapFree', 'GetTickCount', 'GetCurrentDirectoryA', 'LocalFileTimeToFileTime', 'CreateFileA', 'GetShortPathNameA', 'GetVolumeInformationA', 'GetCurrentProcess', 'DuplicateHandle', 'GetFileSize', 'SetEndOfFile', 'UnlockFile', 'LockFile', 'FlushFileBuffers', 'SetFilePointer', 'WriteFile', 'ReadFile', 'DeleteFileA', 'MoveFileA', 'GetOEMCP', 'GetCPInfo', 'InterlockedIncrement', 'SystemTimeToFileTime', 'GetThreadLocale', 'GlobalFlags', 'TlsFree', 'DeleteCriticalSection', 'LocalReAlloc', 'TlsSetValue', 'TlsAlloc', 'InitializeCriticalSection', 'GlobalHandle', 'GlobalReAlloc', 'EnterCriticalSection', 'TlsGetValue', 'LeaveCriticalSection', 'LocalAlloc', 'CloseHandle', 'GetPrivateProfileStringA', 'WritePrivateProfileStringA', 'GetPrivateProfileIntA', 'GetCurrentProcessId', 'GetCurrentThread', 'ConvertDefaultLocale', 'GetModuleFileNameA', 'EnumResourceLanguagesA', 'GetLocaleInfoA', 'lstrcmpA', 'GetDiskFreeSpaceA', 'GetFullPathNameA', 'GetTempFileNameA', 'GetFileTime', 'SetFileTime', 'GetFileAttributesA', 'FreeResource', 'GetCurrentThreadId', 'GlobalGetAtomNameA', 'GlobalAddAtomA', 'GlobalFindAtomA', 'GlobalDeleteAtom', 'lstrcmpW', 'GetVersionExA', 'GlobalFree', 'GlobalAlloc', 'FormatMessageA', 'LocalFree', 'GlobalLock', 'GlobalUnlock', 'MulDiv', 'FindFirstFileA', 'FileTimeToLocalFileTime', 'FileTimeToSystemTime', 'FindNextFileA', 'FindClose', 'FreeLibrary', 'InterlockedDecrement', 'LockResource', 'SizeofResource', 'LoadResource', 'FindResourceA', 'ExitProcess', 'GetVersion', 'CompareStringA', 'GetModuleHandleA', 'LoadLibraryA', 'GetProcAddress', 'lstrcmpiA', 'SetLastError', 'GetLastError', 'InterlockedExchange', 'GetStringTypeExA', 'MultiByteToWideChar', 'CompareStringW', 'WideCharToMultiByte', 'lstrlenA', 'FreeEnvironmentStringsA', 'GetComputerNameA', 'CopyAcceleratorTableA', 'CreateMenu', 'PostThreadMessageA', 'GetTabbedTextExtentA', 'RegisterClipboardFormatA', 'GetSysColorBrush', 'UnregisterClassA', 'LoadCursorA', 'DestroyCursor', 'SetCursorPos', 'SetCapture', 'RedrawWindow', 'InflateRect', 'UnpackDDElParam', 'ReuseDDElParam', 'LoadMenuA', 'DestroyMenu', 'ReleaseCapture', 'LoadAcceleratorsA', 'InsertMenuItemA', 'CreatePopupMenu', 'BringWindowToTop', 'SetMenu', 'TranslateAcceleratorA', 'IsZoomed', 'WindowFromPoint', 'KillTimer', 'SetTimer', 'SetRect', 'SetParent', 'GetSystemMenu', 'DeleteMenu', 'SetRectEmpty', 'IsRectEmpty', 'GetDesktopWindow', 'CreateDialogIndirectParamA', 'GetNextDlgTabItem', 'EndDialog', 'GetMessageA', 'TranslateMessage', 'GetActiveWindow', 'GetCursorPos', 'ValidateRect', 'GetWindowThreadProcessId', 'ShowOwnedPopups', 'SetCursor', 'PostQuitMessage', 'IsWindowEnabled', 'SetWindowTextA', 'IsDialogMessageA', 'SetDlgItemTextA', 'RegisterWindowMessageA', 'LoadIconA', 'SendDlgItemMessageA', 'WinHelpA', 'GetCapture', 'SetWindowsHookExA', 'CallNextHookEx', 'GetClassNameA', 'SetPropA', 'GetPropA', 'RemovePropA', 'SetFocus', 'GetWindowTextLengthA', 'GetWindowTextA', 'GetLastActivePopup', 'SetActiveWindow', 'DispatchMessageA', 'BeginDeferWindowPos', 'EndDeferWindowPos', 'GetDlgItem', 'GetTopWindow', 'DestroyWindow', 'GetMessageTime', 'GetMessagePos', 'PeekMessageA', 'MapWindowPoints', 'ScrollWindow', 'TrackPopupMenu', 'GetKeyState', 'SetScrollRange', 'GetScrollRange', 'SetScrollPos', 'GetScrollPos', 'SetForegroundWindow', 'ShowScrollBar', 'IsWindowVisible', 'GetMenu', 'PostMessageA', 'MessageBoxA', 'CreateWindowExA', 'GetClassInfoExA', 'GetClassInfoA', 'RegisterClassA', 'EqualRect', 'DeferWindowPos', 'GetScrollInfo', 'SetScrollInfo', 'PtInRect', 'DefWindowProcA', 'CallWindowProcA', 'SetWindowPos', 'OffsetRect', 'IntersectRect', 'SystemParametersInfoA', 'GetWindowPlacement', 'GetWindowRect', 'GetSystemMetrics', 'GetWindow', 'GetMenuStringA', 'AppendMenuA', 'GetMenuItemID', 'InsertMenuA', 'GetMenuItemCount', 'GetSubMenu', 'RemoveMenu', 'GetSysColor', 'EndPaint', 'BeginPaint', 'GetWindowDC', 'ClientToScreen', 'ScreenToClient', 'GrayStringA', 'DrawTextExA', 'DrawTextA', 'TabbedTextOutA', 'FillRect', 'SetWindowRgn', 'DrawIcon', 'FindWindowA', 'LockWindowUpdate', 'GetDCEx', 'DestroyIcon', 'GetClassLongA', 'GetMenuItemInfoA', 'GetDlgCtrlID', 'IsChild', 'InvalidateRect', 'IsIconic', 'AdjustWindowRectEx',Line truncated
|
||||
function_list = [['_CorExeMain'], ['GetProcessHeap', 'RtlUnwind', 'RaiseException', 'HeapSize', 'TerminateProcess', 'UnhandledExceptionFilter', 'SetUnhandledExceptionFilter', 'IsDebuggerPresent', 'HeapDestroy', 'HeapCreate', 'VirtualFree', 'Sleep', 'GetStdHandle', 'GetTimeZoneInformation', 'GetACP', 'SetHandleCount', 'GetFileType', 'GetStartupInfoA', 'GetCommandLineA', 'GetEnvironmentStrings', 'FreeEnvironmentStringsW', 'GetEnvironmentStringsW', 'QueryPerformanceCounter', 'GetSystemTimeAsFileTime', 'LCMapStringA', 'LCMapStringW', 'GetConsoleCP', 'GetConsoleMode', 'GetStringTypeA', 'GetStringTypeW', 'SetStdHandle', 'WriteConsoleA', 'GetConsoleOutputCP', 'WriteConsoleW', 'GetDateFormatA', 'GetTimeFormatA', 'GetDriveTypeA', 'SetEnvironmentVariableA', 'HeapReAlloc', 'VirtualAlloc', 'SetCurrentDirectoryA', 'HeapAlloc', 'HeapFree', 'GetTickCount', 'GetCurrentDirectoryA', 'LocalFileTimeToFileTime', 'CreateFileA', 'GetShortPathNameA', 'GetVolumeInformationA', 'GetCurrentProcess', 'DuplicateHandle', 'GetFileSize', 'SetEndOfFile', 'UnlockFile', 'LockFile', 'FlushFileBuffers', 'SetFilePointer', 'WriteFile', 'ReadFile', 'DeleteFileA', 'MoveFileA', 'GetOEMCP', 'GetCPInfo', 'InterlockedIncrement', 'SystemTimeToFileTime', 'GetThreadLocale', 'GlobalFlags', 'TlsFree', 'DeleteCriticalSection', 'LocalReAlloc', 'TlsSetValue', 'TlsAlloc', 'InitializeCriticalSection', 'GlobalHandle', 'GlobalReAlloc', 'EnterCriticalSection', 'TlsGetValue', 'LeaveCriticalSection', 'LocalAlloc', 'CloseHandle', 'GetPrivateProfileStringA', 'WritePrivateProfileStringA', 'GetPrivateProfileIntA', 'GetCurrentProcessId', 'GetCurrentThread', 'ConvertDefaultLocale', 'GetModuleFileNameA', 'EnumResourceLanguagesA', 'GetLocaleInfoA', 'lstrcmpA', 'GetDiskFreeSpaceA', 'GetFullPathNameA', 'GetTempFileNameA', 'GetFileTime', 'SetFileTime', 'GetFileAttributesA', 'FreeResource', 'GetCurrentThreadId', 'GlobalGetAtomNameA', 'GlobalAddAtomA', 'GlobalFindAtomA', 'GlobalDeleteAtom', 'lstrcmpW', 'GetVersionExA', 'GlobalFree', 'GlobalAlloc', 'FormatMessageA', 'LocalFree', 'GlobalLock', 'GlobalUnlock', 'MulDiv', 'FindFirstFileA', 'FileTimeToLocalFileTime', 'FileTimeToSystemTime', 'FindNextFileA', 'FindClose', 'FreeLibrary', 'InterlockedDecrement', 'LockResource', 'SizeofResource', 'LoadResource', 'FindResourceA', 'ExitProcess', 'GetVersion', 'CompareStringA', 'GetModuleHandleA', 'LoadLibraryA', 'GetProcAddress', 'lstrcmpiA', 'SetLastError', 'GetLastError', 'InterlockedExchange', 'GetStringTypeExA', 'MultiByteToWideChar', 'CompareStringW', 'WideCharToMultiByte', 'lstrlenA', 'FreeEnvironmentStringsA', 'GetComputerNameA', 'CopyAcceleratorTableA', 'CreateMenu', 'PostThreadMessageA', 'GetTabbedTextExtentA', 'RegisterClipboardFormatA', 'GetSysColorBrush', 'UnregisterClassA', 'LoadCursorA', 'DestroyCursor', 'SetCursorPos', 'SetCapture', 'RedrawWindow', 'InflateRect', 'UnpackDDElParam', 'ReuseDDElParam', 'LoadMenuA', 'DestroyMenu', 'ReleaseCapture', 'LoadAcceleratorsA', 'InsertMenuItemA', 'CreatePopupMenu', 'BringWindowToTop', 'SetMenu', 'TranslateAcceleratorA', 'IsZoomed', 'WindowFromPoint', 'KillTimer', 'SetTimer', 'SetRect', 'SetParent', 'GetSystemMenu', 'DeleteMenu', 'SetRectEmpty', 'IsRectEmpty', 'GetDesktopWindow', 'CreateDialogIndirectParamA', 'GetNextDlgTabItem', 'EndDialog', 'GetMessageA', 'TranslateMessage', 'GetActiveWindow', 'GetCursorPos', 'ValidateRect', 'GetWindowThreadProcessId', 'ShowOwnedPopups', 'SetCursor', 'PostQuitMessage', 'IsWindowEnabled', 'SetWindowTextA', 'IsDialogMessageA', 'SetDlgItemTextA', 'RegisterWindowMessageA', 'LoadIconA', 'SendDlgItemMessageA', 'WinHelpA', 'GetCapture', 'SetWindowsHookExA', 'CallNextHookEx', 'GetClassNameA', 'SetPropA', 'GetPropA', 'RemovePropA', 'SetFocus', 'GetWindowTextLengthA', 'GetWindowTextA', 'GetLastActivePopup', 'SetActiveWindow', 'DispatchMessageA', 'BeginDeferWindowPos', 'EndDeferWindowPos', 'GetDlgItem', 'GetTopWindow', 'DestroyWindow', 'GetMessageTime', 'GetMessagePos', 'PeekMessageA', 'MapWindowPoints', 'ScrollWindow', 'TrackPopupMenu', 'GetKeyState', 'SetScrollRange', 'GetScrollRange', 'SetScrollPos', 'GetScrollPos', 'SetForegroundWindow', 'ShowScrollBar', 'IsWindowVisible', 'GetMenu', 'PostMessageA', 'MessageBoxA', 'CreateWindowExA', 'GetClassInfoExA', 'GetClassInfoA', 'RegisterClassA', 'EqualRect', 'DeferWindowPos', 'GetScrollInfo', 'SetScrollInfo', 'PtInRect', 'DefWindowProcA', 'CallWindowProcA', 'SetWindowPos', 'OffsetRect', 'IntersectRect', 'SystemParametersInfoA', 'GetWindowPlacement', 'GetWindowRect', 'GetSystemMetrics', 'GetWindow', 'GetMenuStringA', 'AppendMenuA', 'GetMenuItemID', 'InsertMenuA', 'GetMenuItemCount', 'GetSubMenu', 'RemoveMenu', 'GetSysColor', 'EndPaint', 'BeginPaint', 'GetWindowDC', 'ClientToScreen', 'ScreenToClient', 'GrayStringA', 'DrawTextExA', 'DrawTextA', 'TabbedTextOutA', 'FillRect', 'SetWindowRgn', 'DrawIcon', 'FindWindowA', 'LockWindowUpdate', 'GetDCEx', 'DestroyIcon', 'GetClassLongA', 'GetMenuItemInfoA', 'GetDlgCtrlID', 'IsChild', 'InvalidateRect', 'IsIconic', 'AdjustWindowRectEx',Line truncated
|
||||
+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.2',
|
||||
version='2.7.6',
|
||||
company_name="PYAS Security",
|
||||
file_description="Python Antivirus Software",
|
||||
internal_name="PYAS",
|
||||
|
||||
@@ -15,6 +15,6 @@ Windows 8.1, 10, 11 (64-bit), Ram 1GB, Rom 1GB or higher
|
||||
os, sys, time, json, psutil, ctypes, requests, subprocess, win32file, win32api, win32con, elementpath, hashlib, pefile, threading, PyQt5, PYAS_Language, PYAS_Model, PYAS_UI
|
||||
|
||||
## Special Thanks
|
||||
Wix, VirusShare, mtkiao129, LenStevens
|
||||
360, Wix, VirusShare, mtkiao129, LenStevens
|
||||
|
||||
Copyright© 2020~2023 PYAS Security By 87owo
|
||||
@@ -1,5 +0,0 @@
|
||||
psutil==5.9.5
|
||||
pywin32==306
|
||||
pefile==2023.2.7
|
||||
PyQt5==5.15.9
|
||||
requests==2.31.0
|
||||
Reference in new issue
Block a user