|
地下
发表于 2025-2-22 20:59:08
|
只看该作者
广东省广州市
import os
import sys
import ctypes
import winreg
import psutil
import subprocess
import string
from time import sleep
def is_admin():
"""检查管理员权限"""
try:
return ctypes.windll.shell32.IsUserAnAdmin()
except:
return False
def elevate_admin():
"""请求管理员权限"""
ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, __file__, None, 1)
sys.exit()
def delete_startup_entries():
"""删除启动项"""
keys = [
(winreg.HKEY_CURRENT_USER, r"Software\Microsoft\Windows\CurrentVersion\Run"),
(winreg.HKEY_LOCAL_MACHINE, r"Software\Microsoft\Windows\CurrentVersion\Run")
]
for hive, subkey in keys:
try:
with winreg.OpenKey(hive, subkey, 0, winreg.KEY_ALL_ACCESS) as key:
i = 0
while True:
try:
name, value, _ = winreg.EnumValue(key, i)
if any(kw in value.lower() for kw in ("smss", ".vba")):
winreg.DeleteValue(key, name)
print(f"已删除启动项: {name}")
i += 1
except OSError:
break
except FileNotFoundError:
continue
def kill_malicious_processes():
"""终止恶意进程"""
system_root = os.environ['SystemRoot'].lower()
targets = [
rf"{system_root}\system\svchost.exe",
rf"{system_root}\system32\wscript.exe"
]
for proc in psutil.process_iter(['pid', 'exe']):
try:
exe_path = proc.info['exe']
if exe_path is None:
continue
if any(exe_path.lower() == t.lower() for t in targets):
proc.terminate()
print(f"已终止进程: {exe_path}")
except (psutil.NoSuchProcess, psutil.AccessDenied):
continue
def delete_files():
"""删除恶意文件"""
# 删除系统文件
sys_file = rf"{os.environ['SystemRoot']}\system\svchost.exe"
try:
os.remove(sys_file)
print(f"已删除系统文件: {sys_file}")
except Exception as e:
pass
# 遍历所有驱动器
drives = [f"{d}:\\" for d in string.ascii_uppercase if os.path.exists(f"{d}:")]
patterns = ["Autorun.inf", "*.vbs", "*.lnk"]
for drive in drives:
for pattern in patterns:
try:
for f in os.listdir(drive):
if f.lower() == pattern.lower() or pattern.startswith('*'):
file_path = os.path.join(drive, f)
if os.path.isfile(file_path):
os.remove(file_path)
print(f"已删除文件: {file_path}")
except PermissionError:
print(f"权限不足无法访问: {drive}")
continue
except FileNotFoundError:
continue
def fix_registry():
"""修复注册表设置"""
entries = [
(r"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL", "CheckedValue", 1),
(r"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\NOHIDDEN", "CheckedValue", 2)
]
for subkey, value_name, value in entries:
try:
key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, subkey, 0, winreg.KEY_WRITE)
winreg.SetValueEx(key, value_name, 0, winreg.REG_DWORD, value)
winreg.CloseKey(key)
print(f"已修复注册表项: {subkey}")
except Exception as e:
print(f"注册表修改失败: {e}")
def fix_usb_hidden_files():
"""修复U盘隐藏文件"""
drives = []
try:
for part in psutil.disk_partitions():
if 'removable' in part.opts.lower():
drives.append(part.mountpoint)
except:
pass
for drive in drives:
try:
subprocess.run(f'attrib -h -s -r "{drive}\\*" /s /d', shell=True, check=True)
print(f"已修复U盘隐藏属性: {drive}")
except subprocess.CalledProcessError as e:
print(f"U盘处理失败: {e}")
def main():
if not is_admin():
print("正在请求管理员权限...")
elevate_admin()
return
print("========== 正在处理启动项 ==========")
delete_startup_entries()
print("\n========== 正在终止恶意进程 ==========")
kill_malicious_processes()
sleep(1) # 等待进程终止
print("\n========== 正在清理恶意文件 ==========")
delete_files()
print("\n========== 修复注册表设置 ==========")
fix_registry()
print("\n========== 处理U盘隐藏文件 ==========")
fix_usb_hidden_files()
print("\n========== 操作已完成 ==========")
print("提示:")
print("1. 建议手动重启资源管理器(explorer.exe)")
print("2. 部分更改可能需要重启计算机才能生效")
os.system("pause")
if __name__ == "__main__":
main() |
|