Releases: 87owo/PYAS
Releases · 87owo/PYAS
v3.3.6
v3.3.5
v3.3.4
- Reduced driver protection false positives for some system files
- Fixed issues with Simplified Chinese and English theme translations
- Fixed an issue with the interface freezing when deleting apps after a virus scan
- Updated the deep learning scanning engine (as of 2025/07/29)
- Improved other features and options
v3.3.3
v3.3.2
v3.3.1
v3.3.0
[3.3.0] – 2025-08-06
Changed
- UI framework migrated from PyQt5 to PySide6 across the entire codebase
- Initialization flow restructured: replaced 11 disparate
init_config_*methods with a linear pipeline
(init_environ→init_variable→load_config→init_interface→init_windll→backup_mbr→relock_file→block_window_init→init_connect→show_startup) - Configuration handling unified under
read_config(file, default)/save_config(file, config), with automatic default merging and filter rules - Widget management centralized: collected all UI elements into
self.widgetsand handle show/hide/animations viachange_window/animate_geometry - Language & theming applied dynamically in
apply_settings(), preserving original text/style and swapping per-widget mappings - Logging & error reporting unified in
send_message_thread(), which logs to a dedicated widget and shows Qt dialogs
Added
- Custom Qt Signals for scan UI updates (
scan_progress_signal,scan_add_virus_signal,scan_result_signal,scan_reset_signal,progress_title_signal) and matchingslot_…handlers - Thread helper
start_daemon_thread()to launch all background tasks (protection, scanning, driver pipe server) with a single API - Unified scan engine:
file_button/path_button/full_buttoninvoke a singlescan_worker(targets)threadyield_files(targets)generator for file traversalscan_engine(file_path)for model/YARA invocation
- Whitelist enhancement:
is_in_white_list()compares both file path and SHA-256 hash - MBR backup & restore expanded to handle multiple physical drives (up to 26) via
backup_mbr()/repair_system_mbr() - Driver protection threads:
protect_system_driver()uses the SskrFilter DLL pluginpipe_server_thread()listens on a named pipe, decodes base64 messages, and terminates processes by PID/path
- Protection switches refactored to six boolean flags (
process_switch,document_switch,system_switch,driver_switch,network_switch,extension_switch), all routed throughsave_state() - Directory-change monitoring (
protect_file_thread) simplified to watch the user directory (self.path_user) withFILE_LIST_DIRECTORYaccess - System repair thread (
protect_system_thread) periodically invokes allrepair_system_*methods in one loop - Connection-list protection (
protect_net_thread) streamlined to only track(pid, remote_addr, remote_port)and consultrule.network
Refactored
- Path normalization utility
norm_path()for consistent absolute paths and separators - Common logic extraction for:
- Window enumeration (
get_all_windows/enum_windows_callback) - Temp-folder cleanup (
traverse_temp) - Quarantine & white-list management (
manage_named_list)
- Window enumeration (
- Shadow effects and drop-shadow creation factored into
create_shadow() - Process list refreshing unified under
refresh_process()/list_process()with a singleQTimer
Removed
- Direct
subprocess.Popen("sc start/stop PYAS_Driver")calls scattered throughout—now handled in driver-switch logic - Redundant per-feature
init_config_*methods in favor of the streamlined initialization pipeline - Legacy PyQt5-only code paths and duplicated window/registry repair routines
All notable changes in this release focus on modularity, maintainability, and a unified threading/UI-update model.