Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cf4762ad04 | ||
|
|
6ba920e26a | ||
|
|
a66acf0ef9 | ||
|
|
8ab982ac38 | ||
|
|
0c32a126a9 | ||
|
|
fd47881f88 | ||
|
|
61298235fd | ||
|
|
4a38277c3e | ||
|
|
fd7912f631 | ||
|
|
4f1b0e99e4 | ||
|
|
086e375cea | ||
|
|
f90b132ccb | ||
|
|
f4bd217445 | ||
|
|
5524e2f689 | ||
|
|
42b8201f37 | ||
|
|
f71c821128 | ||
|
|
28330d3ad6 | ||
|
|
5afd576a3c | ||
|
|
edcf82d139 | ||
|
|
69e5143a27 | ||
|
|
215d0faa53 | ||
|
|
470142a640 | ||
|
|
8e67a8d679 | ||
|
|
be5baf9c87 | ||
|
|
7a05e42f3f | ||
|
|
34240ec01f | ||
|
|
0bf6eccb8b |
No files matched your search
@@ -19,7 +19,7 @@ class MainWindow_Controller(QMainWindow):
|
||||
self.setAttribute(Qt.WA_TranslucentBackground)
|
||||
self.setWindowFlags(Qt.FramelessWindowHint)
|
||||
self.pyas = str(sys.argv[0]).replace("\\", "/")
|
||||
self.pyas_version = "2.8.6"
|
||||
self.pyas_version = "2.8.7"
|
||||
self.ui = Ui_MainWindow()
|
||||
self.ui.setupUi(self)
|
||||
self.init_tray_icon()
|
||||
@@ -350,7 +350,7 @@ class MainWindow_Controller(QMainWindow):
|
||||
widget.setAutoFillBackground(True)
|
||||
self.timer = QTimer()
|
||||
self.timer.timeout.connect(self.timeout)
|
||||
self.timer.start(0)
|
||||
self.timer.start(2)
|
||||
|
||||
def timeout(self):
|
||||
if self.opacity.i < 1:
|
||||
@@ -457,7 +457,7 @@ class MainWindow_Controller(QMainWindow):
|
||||
self.timer.stop()
|
||||
x, y = event.x(), event.y()
|
||||
if event.button()==Qt.LeftButton and x >= 10 and x <= 841 and y >= 10 and y <= 49:
|
||||
self.m_flag=True
|
||||
self.m_flag = True
|
||||
self.m_Position=event.globalPos()-self.pos()
|
||||
event.accept()
|
||||
self.timer = QTimer()
|
||||
@@ -480,7 +480,7 @@ class MainWindow_Controller(QMainWindow):
|
||||
self.setWindowOpacity(self.pyas_opacity/100)
|
||||
else:
|
||||
self.timer.stop()
|
||||
self.m_flag=False
|
||||
self.m_flag = False
|
||||
self.setCursor(QCursor(Qt.ArrowCursor))
|
||||
self.timer = QTimer()
|
||||
self.timer.timeout.connect(update_opacity)
|
||||
@@ -499,21 +499,29 @@ class MainWindow_Controller(QMainWindow):
|
||||
pat2.drawRoundedRect(rect, 1, 1)
|
||||
|
||||
def show_pyas_ui(self):
|
||||
def update_opacity():
|
||||
if self.pyas_opacity <= 100:
|
||||
self.pyas_opacity += 1
|
||||
self.setWindowOpacity(self.pyas_opacity/100)
|
||||
else:
|
||||
self.timer.stop()
|
||||
self.show()
|
||||
self.pyas_opacity = 0
|
||||
while self.pyas_opacity < 100:
|
||||
time.sleep(0.001)
|
||||
self.pyas_opacity += 1
|
||||
self.setWindowOpacity(self.pyas_opacity/100)
|
||||
QApplication.processEvents()
|
||||
self.timer = QTimer()
|
||||
self.timer.timeout.connect(update_opacity)
|
||||
self.timer.start(2)
|
||||
|
||||
def hide_pyas_ui(self):
|
||||
while self.pyas_opacity > 0:
|
||||
time.sleep(0.001)
|
||||
self.pyas_opacity -= 1
|
||||
self.setWindowOpacity(self.pyas_opacity/100)
|
||||
QApplication.processEvents()
|
||||
self.hide()
|
||||
def update_opacity():
|
||||
if self.pyas_opacity >= 0:
|
||||
self.pyas_opacity -= 1
|
||||
self.setWindowOpacity(self.pyas_opacity/100)
|
||||
else:
|
||||
self.timer.stop()
|
||||
self.hide()
|
||||
self.timer = QTimer()
|
||||
self.timer.timeout.connect(update_opacity)
|
||||
self.timer.start(2)
|
||||
|
||||
def showMinimized(self):
|
||||
self.hide_pyas_ui()
|
||||
@@ -521,7 +529,6 @@ class MainWindow_Controller(QMainWindow):
|
||||
|
||||
def closeEvent(self, event):
|
||||
if QMessageBox.warning(self,self.trans("警告"),self.trans("您確定要退出 PYAS 和所有防護嗎?"),QMessageBox.Yes|QMessageBox.No) == 16384:
|
||||
self.hide_pyas_ui()
|
||||
event.accept()
|
||||
else:
|
||||
event.ignore()
|
||||
@@ -638,7 +645,7 @@ class MainWindow_Controller(QMainWindow):
|
||||
|
||||
def Virus_Scan_output_menu(self, point):
|
||||
def copyPathFunc():
|
||||
item_row = None
|
||||
item_row = False
|
||||
for i in self.ui.Virus_Scan_output.selectedIndexes():
|
||||
item_row = self.virus_list[i.row()]
|
||||
if item_row:
|
||||
@@ -807,22 +814,21 @@ class MainWindow_Controller(QMainWindow):
|
||||
if os.path.isfile(text):
|
||||
with open(text, "r", encoding="utf-8") as f:
|
||||
text = f.read()
|
||||
return any(sn in str(text) for sn in scripts_list)
|
||||
return any(sn.lower() in str(text).lower() for sn in scripts_list)
|
||||
except:
|
||||
return False
|
||||
|
||||
def pe_scan(self, file):
|
||||
try:
|
||||
pe_func = []
|
||||
with pefile.PE(file) as pe:
|
||||
fn = []
|
||||
for entry in pe.DIRECTORY_ENTRY_IMPORT:
|
||||
for func in entry.imports:
|
||||
try:
|
||||
fn.append(str(func.name, "utf-8"))
|
||||
pe_func.append(str(func.name, "utf-8"))
|
||||
except:
|
||||
pass
|
||||
return fn in function_list
|
||||
return False
|
||||
return pe_func in function_list
|
||||
except:
|
||||
return False
|
||||
|
||||
@@ -1151,11 +1157,12 @@ class MainWindow_Controller(QMainWindow):
|
||||
if p.pid not in existing_processes:
|
||||
existing_processes.add(p.pid)
|
||||
while self.proc_protect:
|
||||
time.sleep(0.1)
|
||||
time.sleep(0.05)
|
||||
for p in psutil.process_iter():
|
||||
try:
|
||||
if p.pid not in existing_processes:
|
||||
existing_processes.add(p.pid)
|
||||
psutil.Process(p.pid).suspend()
|
||||
name, file, cmd = p.name(), p.exe().replace("\\", "/"), p.cmdline()
|
||||
if ":/Windows" in file or ":/Program" in file:
|
||||
if "powershell" in name and self.api_scan(cmd[-1].split("'")[-2]):
|
||||
@@ -1173,6 +1180,7 @@ class MainWindow_Controller(QMainWindow):
|
||||
if self.api_scan(file) or self.pe_scan(file):
|
||||
p.kill()
|
||||
self.send_notify(self.trans("惡意軟體攔截: ")+name)
|
||||
psutil.Process(p.pid).resume()
|
||||
gc.collect()
|
||||
except:
|
||||
pass
|
||||
@@ -1197,13 +1205,12 @@ class MainWindow_Controller(QMainWindow):
|
||||
try:
|
||||
time.sleep(0.5)
|
||||
with open(r"\\.\PhysicalDrive0", "r+b") as f:
|
||||
if self.mbr_value[510:512] == b'\x55\xAA':
|
||||
if f.read(512) != self.mbr_value:
|
||||
f.seek(0)
|
||||
f.write(self.mbr_value)
|
||||
self.proc.kill()
|
||||
self.send_notify(self.trans("惡意行為攔截: ")+self.proc.name())
|
||||
else:
|
||||
if self.mbr_value[510:512] != b'\x55\xAA':
|
||||
self.proc.kill()
|
||||
self.send_notify(self.trans("惡意行為攔截: ")+self.proc.name())
|
||||
elif f.read(512) != self.mbr_value:
|
||||
f.seek(0)
|
||||
f.write(self.mbr_value)
|
||||
self.proc.kill()
|
||||
self.send_notify(self.trans("惡意行為攔截: ")+self.proc.name())
|
||||
except:
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
function_list = [['LoadLibraryA', 'GetProcAddress', 'SetUnhandledExceptionFilter', 'GetCurrentProcess', 'TerminateProcess', 'IsProcessorFeaturePresent', 'QueryPerformanceCounter', 'GetCurrentProcessId', 'GetCurrentThreadId', 'GetSystemTimeAsFileTime', 'InitializeSListHead', 'IsDebuggerPresent', 'GetModuleHandleW', 'UnhandledExceptionFilter', 'GetDC', '?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDXZ', '?put@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@D@Z', '?_Osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEXXZ', '?widen@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDD@Z', '??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAE@XZ', '?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QBE?AVlocale@2@XZ', '?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHD@Z', '?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_ostream@DU?$char_traits@D@std@@@2@XZ', '?flush@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@XZ', '?unshift@?$codecvt@DDU_Mbstatet@@@std@@QBEHAAU_Mbstatet@@PAD1AAPAD@Z', '?setg@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAD00@Z', '?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXXZ', '?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAPAD0PAH001@Z', '??0?$basic_ios@DU?$char_traits@D@std@@@std@@IAE@XZ', '??0?$basic_istream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N@Z', '?in@?$codecvt@DDU_Mbstatet@@@std@@QBEHAAU_Mbstatet@@PBD1AAPBDPAD3AAPAD@Z', '?out@?$codecvt@DDU_Mbstatet@@@std@@QBEHAAU_Mbstatet@@PBD1AAPBDPAD3AAPAD@Z', '?eback@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ', '?gptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ', '?pptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ', '?egptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ', '?gbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXH@Z', '?epptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ', '?_Gndec@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ', '?_Gninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ', '?_Gnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBE_JXZ', '?pbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXH@Z', '?_Pninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ', '?_Getcat@?$codecvt@DDU_Mbstatet@@@std@@SAIPAPBVfacet@locale@2@PBV42@@Z', '?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXH_N@Z', '?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@XZ', '??1?$basic_streambuf@DU?$char_traits@D@std@@@std@@UAE@XZ', '?showmanyc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAE_JXZ', '?xsgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAE_JPAD_J@Z', '?xsputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAE_JPBD_J@Z', '??1?$basic_ios@DU?$char_traits@D@std@@@std@@UAE@XZ', '??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z', '??1?$basic_istream@DU?$char_traits@D@std@@@std@@UAE@XZ', '?read@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PAD_J@Z', '?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@_JH@Z', '?tellg@?$basic_istream@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@U_Mbstatet@@@2@XZ', '?width@ios_base@std@@QAE_J_J@Z', '?width@ios_base@std@@QBE_JXZ', '?flags@ios_base@std@@QBEHXZ', '?good@ios_base@std@@QBE_NXZ', '?always_noconv@codecvt_base@std@@QBE_NXZ', '??Bid@locale@std@@QAEIXZ', '?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE_JPBD_J@Z', '??1_Lockit@std@@QAE@XZ', '??0_Lockit@std@@QAE@H@Z', '?cout@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A', '?_Getgloballocale@locale@std@@CAPAV_Locimp@12@XZ', '?uncaught_exception@std@@YA_NXZ', '?_Xout_of_range@std@@YAXPBD@Z', '?id@?$codecvt@DDU_Mbstatet@@@std@@2V0locale@2@A', '?_Fiopen@std@@YAPAU_iobuf@@PBDHH@Z', '?_Xlength_error@std@@YAXPBD@Z', '?_Pnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBE_JXZ', '_CxxThrowException', '__current_exception_context', '__std_exception_copy', '__std_exception_destroy', '__CxxFrameHandler3', 'memcpy', '__current_exception', 'memset', '_except_handler4_common', 'memmove', '_fseeki64', '__p__commode', 'fsetpos', 'ungetc', 'setvbuf', 'fgetpos', 'fwrite', '_set_fmode', '_get_stream_buffer_pointers', '__stdio_common_vfprintf', 'fgetc', 'fclose', 'fflush', '__acrt_iob_func', 'fputc', 'fread', '_lock_file', '_unlock_file', 'exit', '_exit', '_configure_narrow_argv', '__p___argc', '_initterm_e', '_cexit', '_c_exit', '_register_thread_local_exe_atexit_callback', '_initterm', '_set_app_type', '_get_initial_narrow_environment', '_seh_filter_exe', '_initialize_onexit_table', '_register_onexit_function', '_crt_atexit', '_controlfp_s', 'terminate', '_initialize_narrow_environment', '_invalid_parameter_noinfo_noreturn', '__p___argv', 'free', '_set_new_mode', 'malloc', '_callnewh', '__setusermatherr', '_configthreadlocale'], ['GetCurrentProcess', 'FindNextFileA', 'FindClose', 'GetSystemDirectoryA', 'DeleteFileA', 'SetFileAttributesA', 'ExitProcess', 'FLine truncated
|
||||
Binary file not shown.
+9
-58
@@ -1,15 +1,8 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Form implementation generated from reading ui file 'C:\Users\User\Documents\Project\Python\PYAS\Library\Qtui\PYAS_Interface.ui'
|
||||
#
|
||||
# Created by: PyQt5 UI code generator 5.15.9
|
||||
#
|
||||
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
|
||||
# run again. Do not edit this file unless you know what you are doing.
|
||||
|
||||
|
||||
from PyQt5 import QtCore, QtGui, QtWidgets
|
||||
|
||||
from PyQt5.QtGui import *
|
||||
from PyQt5.QtCore import *
|
||||
from PyQt5.QtWidgets import *
|
||||
import sys, PYAS_Resource
|
||||
|
||||
class Ui_MainWindow(object):
|
||||
def setupUi(self, MainWindow):
|
||||
@@ -21,8 +14,7 @@ class Ui_MainWindow(object):
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
MainWindow.setFont(font)
|
||||
MainWindow.setFocusPolicy(QtCore.Qt.TabFocus)
|
||||
icon = QtGui.QIcon()
|
||||
icon.addPixmap(QtGui.QPixmap(":/icon/Icon.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
||||
icon = QtGui.QIcon(QFileIconProvider().icon(QFileInfo(str(sys.argv[0]))))
|
||||
MainWindow.setWindowIcon(icon)
|
||||
MainWindow.setIconSize(QtCore.QSize(64, 64))
|
||||
MainWindow.setToolButtonStyle(QtCore.Qt.ToolButtonIconOnly)
|
||||
@@ -831,7 +823,7 @@ class Ui_MainWindow(object):
|
||||
self.State_title.setAlignment(QtCore.Qt.AlignCenter)
|
||||
self.State_title.setObjectName("State_title")
|
||||
self.State_icon = QtWidgets.QLabel(self.State_widget)
|
||||
self.State_icon.setGeometry(QtCore.QRect(250, 20, 171, 171))
|
||||
self.State_icon.setGeometry(QtCore.QRect(250, 30, 171, 171))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(1)
|
||||
@@ -860,38 +852,7 @@ class Ui_MainWindow(object):
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
self.State_output.setFont(font)
|
||||
self.State_output.setAutoFillBackground(False)
|
||||
self.State_output.setStyleSheet("QScrollBar:vertical\n"
|
||||
"{\n"
|
||||
" border: none;\n"
|
||||
" background: transparent;\n"
|
||||
" width: 10px;\n"
|
||||
"}\n"
|
||||
" \n"
|
||||
"QScrollBar::handle:vertical\n"
|
||||
"{\n"
|
||||
" background-color: rgba(200, 200, 200,1);\n"
|
||||
" min-height: 30px;\n"
|
||||
" border-radius:3px;\n"
|
||||
" width: 6px;\n"
|
||||
" }\n"
|
||||
" \n"
|
||||
"QScrollBar::add-line:vertical\n"
|
||||
"{\n"
|
||||
" border: none;\n"
|
||||
" height: 0px;\n"
|
||||
" }\n"
|
||||
" \n"
|
||||
" QScrollBar::sub-line:vertical\n"
|
||||
"{\n"
|
||||
" border: none;\n"
|
||||
" height: 0px;\n"
|
||||
"}\n"
|
||||
" \n"
|
||||
" QScrollBar::add-page:vertical,QScrollBar::sub-page:vertical\n"
|
||||
" { \n"
|
||||
" background:transparent;\n"
|
||||
" border-radius:3px;\n"
|
||||
"}")
|
||||
self.State_output.setStyleSheet("")
|
||||
self.State_output.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustIgnored)
|
||||
self.State_output.setUndoRedoEnabled(True)
|
||||
self.State_output.setTextInteractionFlags(QtCore.Qt.TextSelectableByKeyboard|QtCore.Qt.TextSelectableByMouse)
|
||||
@@ -1859,7 +1820,6 @@ class Ui_MainWindow(object):
|
||||
self.Language_Choose_widget_2.raise_()
|
||||
self.Theme_title.raise_()
|
||||
self.Protection_widget.raise_()
|
||||
self.State_widget.raise_()
|
||||
self.Setting_widget.raise_()
|
||||
self.About_widget.raise_()
|
||||
self.Tools_widget.raise_()
|
||||
@@ -1868,6 +1828,7 @@ class Ui_MainWindow(object):
|
||||
self.Virus_Scan_widget.raise_()
|
||||
self.Window_widget.raise_()
|
||||
self.Navigation_Bar.raise_()
|
||||
self.State_widget.raise_()
|
||||
MainWindow.setCentralWidget(self.centralwidget)
|
||||
|
||||
self.retranslateUi(MainWindow)
|
||||
@@ -1909,14 +1870,7 @@ class Ui_MainWindow(object):
|
||||
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
|
||||
"p, li { white-space: pre-wrap; }\n"
|
||||
"</style></head><body style=\" font-family:\'Microsoft YaHei\'; font-size:11pt; font-weight:400; font-style:normal;\">\n"
|
||||
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">asdasas</p>\n"
|
||||
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">dasd</p>\n"
|
||||
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">a</p>\n"
|
||||
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">sd</p>\n"
|
||||
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><br /></p>\n"
|
||||
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">asd</p>\n"
|
||||
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">as</p>\n"
|
||||
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">dasd</p></body></html>"))
|
||||
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><br /></p></body></html>"))
|
||||
self.State_log.setText(_translate("MainWindow", "日誌:"))
|
||||
self.About_Back.setText(_translate("MainWindow", "返回"))
|
||||
self.PYAS_Version.setText(_translate("MainWindow", "PYAS v2.3.5"))
|
||||
@@ -1962,11 +1916,8 @@ class Ui_MainWindow(object):
|
||||
self.Theme_Blue.setText(_translate("MainWindow", "藍色主題"))
|
||||
self.Theme_Red.setText(_translate("MainWindow", "紅色主題"))
|
||||
self.Theme_Green.setText(_translate("MainWindow", "綠色主題"))
|
||||
import PYAS_Resource
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
import sys
|
||||
app = QtWidgets.QApplication(sys.argv)
|
||||
MainWindow = QtWidgets.QMainWindow()
|
||||
ui = Ui_MainWindow()
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
import pyinstaller_versionfile
|
||||
pyinstaller_versionfile.create_versionfile(
|
||||
output_file="versionfile.txt",
|
||||
version='2.8.6',
|
||||
version='2.8.7',
|
||||
company_name="PYAS Security",
|
||||
file_description="Python Antivirus Software",
|
||||
internal_name="PYAS",
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
# PYAS (Python Antivirus Software)
|
||||

|
||||

|
||||
|
||||
## Official Website
|
||||
https://pyantivirus.wixsite.com/pyas ,
|
||||
https://github.com/87owo/PYAS
|
||||
https://pyantivirus.wixsite.com/pyas , https://github.com/87owo/PYAS
|
||||
|
||||
## MIT License
|
||||
https://github.com/87owo/PYAS/blob/main/LICENSE.md
|
||||
@@ -11,8 +10,11 @@ https://github.com/87owo/PYAS/blob/main/LICENSE.md
|
||||
## Support System
|
||||
Windows 8.1, 10, 11 (64-bit), Ram 1GB, Rom 1GB or higher
|
||||
|
||||
## Requirements
|
||||
psutil==5.9.5, pefile==2023.2.7, requests==2.31.0, pyperclip==1.8.2, pywin32==306, PyQt5==5.15.9
|
||||
|
||||
## Import Module
|
||||
os, gc, sys, time, json, requests, pyperclip, psutil, ctypes, pywin32, subprocess, xml, hashlib, pefile, PyQt5, threading, PYAS_Language, PYAS_Scripts, PYAS_Function, PYAS_Extension, PYAS_Interface
|
||||
os, gc, sys, time, json, psutil, hashlib, pefile, socket, msvcrt, requests, pyperclip, win32file, win32gui, win32api, win32con, xml, PYAS_Scripts, PYAS_Function, PYAS_Extension, PYAS_Language, PYAS_Interface, threading, PyQt5
|
||||
|
||||
## Special Thanks
|
||||
360, Wix, VirusShare, mtkiao129, LenStevens
|
||||
|
||||
Reference in new issue
Block a user