用.NET设计一个假装黑客的屏幕保护程序

本文主要介绍屏幕保护程序的一些相关知识,以及其在安全方面的用途,同时介绍了如何使用 .NET 开发一款屏幕保护程序,并对核心功能做了介绍,案例代码开源:https://github.com/sangyuxiaowu/HackerScreenSaver

背景

前几天在论坛看到想保护公司的服务器共享文件的安全,但是员工自己的电脑总是忘记关闭关机,想再设置一个密码。可是这样不应该先解决一下员工电脑总是忘记关的问题么?

如果你要离开设备几分钟,最好将其锁定,以免他人看到屏幕上的内容,或访问设备上的任何内容。 按 Windows 徽标键 + L 立即将其锁定。

动态锁

当然,也可以通过动态锁的方式实现,Windows 可以使用与你的电脑配对的设备检测你何时离开,并在你的已配对设备超出蓝牙范围后立即锁定你的电脑。 这使得当你离开电脑并且忘记将其锁定时,其他人更难于访问你的设备。配对完成后,只需在离开时随身带上手机,你的电脑便可在你超出蓝牙覆盖范围之后大约一分钟自动锁定。

动态锁

但是主动锁定和动态锁,一个要主动一个要配置和蓝牙配合都有一些不足,如何更方便的实现?

屏幕保护程序

屏幕保护程序在我印象里好像是 Windows XP 的时代,现在好像没见过几个 Win10 和 Win11 用户去专门的设置这个,倒是看过 Win7 的用户在用。

针对上门提出的超时锁定,这个屏幕保护程序可以大有作为,我们可以勾选“在恢复时显示登录屏幕”,这样我们在不使用电脑第一段时间后就需要输入密码了。

转到"设置>个性化>锁屏界面,然后选择"屏幕保护程序设置"。

屏幕保护程序

屏幕保护程序有用吗

电脑里的屏幕保护程序对保护屏幕有用吗?作为一个古老的功能,实际上屏幕保护程序仅对使用图形界面操作系统的 CRT 显示器有保护作用。对于CRT来说,屏幕保护是为了不让屏幕一直保持静态的画面太长时间。

因为不同显示器的工作原理不同,比如笔记本常用的 LCD, 一直开着屏幕保护反而是帮了倒忙,所以无论什么显示器如果是长时间不用电脑而又需要主机处于运行状态的话,把显示器关掉才是明智的做法。

这里我们可以同时配合“屏幕超时设置”,在一定时间下关闭电脑屏幕。比如1分钟进屏幕保护,3分钟直接关闭屏幕。

屏幕超时设置

设计一个屏幕保护程序

在设计之前我们需要了解一些基本的常识。

屏幕保护程序命令行参数

屏幕保护程序的开发需要提供一些启动参数供设置和预览。Windows 通过命令行参数与屏幕保存程序通信。具体可查阅文档:屏幕保护程序命令行参数

参数说明
显示设置对话框
/c显示设置对话框,使用模态对话框显示到前台
/p <HWND>在<HWND>窗体下预览效果
/s启动屏幕保护程序
/S右键scr的Test启动

了解了启动参数,我们需要对软件的参数启动进行处理。

/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);if (args.Length > 0){switch (args[0].ToLower().Trim().Substring(0, 2)){case "/p":Main pri = new Main(new IntPtr(long.Parse(args[1])));pri.ShowDialog();break;case "/s"://Test 或 执行屏保,大写为测试,小写为被启动,这里不做区分Application.Run(new Main());break;default:ShowSetting();break;}}else{ShowSetting();}
}static void ShowSetting()
{MessageBox.Show("这个屏幕保护程序没有可以设置的选项。","黑客模拟器",MessageBoxButtons.OK,MessageBoxIcon.Information);Application.Exit();
}

效果实现思路

我们常常会在一些影视作品中里看到一些黑客高手,在电脑前一阵噼里啪啦“黑”进别人的安全系统的场景。

GeekTyper 就是国外网友制作的几个用来装 X 的娱乐网页。

GeekTyper

所以软件的主要实现是放置一个无框的窗体,通过 WebBrowser 来显示黑客效果的网页。我们只需要在软件启动时用 WebBrowser 加载喜欢的效果的网页就可以了。

this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.TopMost = true;
this.WindowState = System.Windows.Forms.FormWindowState.Maximized;

这里我们可以自行指定一个 URI ,但是为了离线使用,可以将其放到本地,这里我打包了一个分享在仓库的 releases

//webB.Url = new Uri("https://geektyper.com/SCP");
webB.Navigate(Application.StartupPath + "\\html\\hacker.html");

注意退出

编码测试时还有一个特别需要注意的事情,一定要写好退出功能。如果没写好就安装屏保测试的话,就不好退出了呀, Ctrl+Alt+Del 试试吧。

这里说的退出是指屏保运行后,用户操作了鼠标或者是键盘就需要退出屏保程序。因为这里用了 WebBrowser ,同时我们需要考虑多显示器的情况,所以鼠标键盘的事件需要监听全局,这里使用的是 MouseKeyHook 库。

public Main()
{InitializeComponent();// 鼠标键盘事件用于结束屏保m_GlobalHook = Hook.GlobalEvents();m_GlobalHook.MouseClick += M_GlobalHook_MouseClick;m_GlobalHook.KeyPress += M_GlobalHook_KeyPress;m_GlobalHook.MouseMove += M_GlobalHook_MouseMove;
}
private void M_GlobalHook_KeyPress(object sender, KeyPressEventArgs e)
{Application.Exit();
}private void M_GlobalHook_MouseClick(object sender, MouseEventArgs e)
{Application.Exit();
}private bool isActive = false;
private Point mouseLocation;
/// <summary>
/// 鼠标动了一定程度,就结束屏保
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void M_GlobalHook_MouseMove(object sender, MouseEventArgs e)
{if (isPreviewMode) return;if (!isActive){isActive = true;mouseLocation = new Point(e.X, e.Y);return;}if ((Math.Abs(e.X - mouseLocation.X) > 10) ||(Math.Abs(e.Y - mouseLocation.Y) > 10)){Application.Exit();}
}

窗体预览的处理

前面的窗体预览我们处理好了启动参数,只需要通过 WinAPI 更改父窗体就行,但是因为只是简单的处理,没有做缩放,所以我就简单的放了个图片替代了。

[DllImport("user32.dll")]
private static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
public Main(IntPtr intPtr)
{InitializeComponent();//预览SetParent(this.Handle, intPtr);isPreviewMode = true;picLogo.Visible = true;
}

安装测试

编辑好代码,我们生成 exe 程序后,只需要将其后缀名改为 scr 即可作为屏幕保护程序使用,这时右键菜单就可以看到测试,配置和安装。

右键菜单

最后

至此,我们已经完成了一个屏幕保护程序的开发,快去秀给自己的女朋友吧!当然除了秀技术,你的网页可以换成类似下面的这种。

saylove

以上代码分享在 https://github.com/sangyuxiaowu/HackerScreenSaver 感兴趣的同学看一眼,顺便求个 Star,感谢。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/354211.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

xp系统计算机启动时灰色界面,windows xp系统下屏幕开始按钮变成灰色怎么处理

相信使用过windows xp系统的用户应该都知道&#xff0c;系统自带得有屏幕保护程序功能&#xff0c;然而有些时候可能操作不当导致屏幕保护程序的设置按钮为灰色无法设置的情况&#xff0c;那么在遇到这样的问题时应该怎么办呢?以下是针对此问题的具体解决方法介绍。 1、点击xp…

如何更改 Windows XP 中的 Windows 登录屏幕保护程序

本文分步介绍了如何更改 Microsoft Windows XP 中的默认登录屏幕保护程序。具体来说&#xff0c;文章讨论如何更改屏幕保护程序启动时&#xff0c;超时和屏幕保护程序启动之前&#xff0c;是否在登录过程之前打开屏幕保护程序的类型。当您启动 Windows 时&#xff0c;您可能会出…

怎样给计算机做屏幕保护,如何制作电脑屏保?XP系统中怎么制作动态屏幕保护?...

屏幕保护&#xff0c;各位都很熟悉&#xff0c;时钟屏保、泡泡屏保、海底世界动态屏保等各种屏幕保护用久了也看腻了&#xff0c;何不自己动手制作一个动态屏幕来玩&#xff1f;阅读下文了解XP系统制作动态屏幕保护的方法。闲暇的时候尝试着为自己的桌面制作一个屏保吧。 屏幕保…

3D打印机分类汇总

1 根据市场定位分类 当今市面上应用比较多的3D打印机是SLS、SLA、DLP、FDM四种3D打印机&#xff0c;按照用途可分为两类&#xff1a;一类是高精度工业打印机&#xff0c;比如SLA、DLP、SLS&#xff1b;一类是以FDM、SLA&#xff08;用于工业打印机更多&#xff09;为主的桌面级…

项目集管理—项目集治理

一、概述 项目集治理是实现和执行项目集决策&#xff0c;为支持项目集而制定实践&#xff0c;并维持项目集监督的绩效领域。 本章包括&#xff1a; 项目集治理实践项目集治理角色项目集治理设计与实施 项目集治理包括为了满足组织战略和运营目标的要求&#xff0c;对项目集实…

基于国产RK3588+多路H.265视频编解码 转码 3U VPX 方案

一、概述 3U VPX音视频转码模块是信迈科技推出的基于RK3588平台用于音视频的编解码、转码&#xff0c;本模块SDI视频、模拟音频输入&#xff0c;视频进行分辨率和帧率的变换&#xff0c;音频进行采样率和码率等的变换&#xff0c;网口输入的视频流进行解码或者转码&…

【大数据之Hive】六、Hive之metastore服务部署

metastore为Hive CLI或Hiveserver2提供元数据访问接口。 1 metastore运行模式 metastore运行模式有两种&#xff0c;嵌入式模式和独立服务模式。 &#xff08;1&#xff09;嵌入式模式 将metastore看作一个依赖嵌入到Hiveserver2和每一个HiveCLI客户端进程&#xff0c;使得Hi…

算法修炼之筑基篇——筑基一层中期(解决01背包,完全背包,多重背包)

✨博主&#xff1a;命运之光​​​​​​ &#x1f984;专栏&#xff1a;算法修炼之练气篇​​​​​ &#x1f353;专栏&#xff1a;算法修炼之筑基篇 ✨博主的其他文章&#xff1a;点击进入博主的主页​​​​​​ 前言&#xff1a;学习了算法修炼之练气篇想必各位蒟蒻们的基…

客户回访|国产MCU测试解决方案 助力中国“芯”智造

半导体技术持续更新迭代&#xff0c;MCU也在与时俱进&#xff0c;为了更好地迎接市场未来趋势&#xff0c;国产MCU厂商积极布局各系列MCU产品线&#xff0c;开始逐渐在特定细分领域实现突破。随着应用场景的进化升级&#xff0c;MCU 中包含越来越多的功能模块&#xff0c;相应地…

UEFI——保姆级教程的HelloWold Application

HelloWorld Application 前言为什么是HelloWorldApplication又是什么代码部分test_application.c文件test_application.inf编译运行 总结 前言 毕业之后工作开始接触UEFI&#xff0c;现在为止也不过短短的四个月&#xff0c;UEFI开发涉猎面广&#xff0c;知识体系庞杂&#xf…

云南省工信厅洪正华一行莅临红谷滩区·高通中国·影创联合创新中心考察调研

9月9日上午&#xff0c;国内首个XR(扩展现实)产业联合创新中心自开业后&#xff0c;迎来首批参观领导。云南省工信厅党组书记、厅长洪正华&#xff0c;云南省工信厅党组成员、副厅长袁国书&#xff0c;云南省工信厅综合处处长薛贵辉&#xff0c;云南省工信厅发展规划处处长王兵…

UEFI Protocol

一、概述 二、Protocol的定义 1、Protocol是服务器端和客户端之间的一种约定&#xff0c;在软件编程上称为接口&#xff0c;服务器端和客户端通过这个约定信息的互通。 2、服务器端和客户端在UEFI中都是可执行的二进制文件。 3、为了实现这些二进制文件之间的互通&#xff0c;…

UEFI原理与编程(二):UEFI工程模块文件-标准应用程序工程模块

UEFI 工程模块文件-标准应用程序工程模块 前言 在EDK2环境下编程之前&#xff0c;先介绍EDK2的两个概念模块(Module)和包(Package).   “包”是一组模块及平台描述文件(.dsc文件)、包声明文件(.dec文件)则、组成的集合&#xff0c;多在以*pkg命名的文件夹中&#xff0c;一般…

如何理解UEFI的事件机制(三)——时钟中断

一&#xff0c;时钟中断概述 UEFI 中的EVENT是使用时钟中断来驱动的。 在时钟中断处理函数中&#xff0c;它会检查系统中的定时器事件并处理到期的定时器事件&#xff0c;并在合适的时机调度事件的Notify函数&#xff0c;是事件的实现基础。时钟中断在DXE的主函数DxeMain中初始…

UEFI原理与编程(七):包及.dsc、.dec、.fdf文件

包及.dsc、.dec、.fdf文件 前言 前面的文章中比较详细介绍了UEFI工程文件即.inf。UEFI的包中一般都会包含一个.dsc文件和一个dec文件。在包生成固件Image、Option Rom Image&#xff0c;这个包还要包含.fdf文件。.fdf用于生成固件Image、Option Rom Image或可以启动Image。 b…

UEFI学习——在qemu上读取设备PCI信息

1.编写读取设备PCI信息的Application 代码参考罗斌大佬&#xff0c;博客地址&#xff1a;UEFI开发探索13 – 访问PCI/PCI-E设备1 感谢罗斌大佬的贡献&#xff0c;让我在学习UEFI的道路上站在了巨人的肩膀上。 代码&#xff1a; #include <Uefi.h> #include <L…

UEFI开发与调试---ImageHandle和ControllerHandle

##1.ImageHandle 每个uefi module都是一个image&#xff0c;而每个image对应都有一个ImageHandle&#xff0c;其实ImageHandle的类型就是EFI_HANDLE typedef VOID *EFI_HANDLE;因此实际上每个ImageHandle是一个void*指针&#xff0c;那么也就是说任何结…

UEFI的诞生与优势

UEFI的诞生 随着CPU及其他硬件设备的技术革新&#xff0c;CPU和操作系统已支持到64位&#xff0c;而BIOS却还停留在16位&#xff1b;主板上更加丰富多样的扩展设备&#xff0c;也让BIOS愈加无能为力&#xff0c;使得硬件无法完成初始化。现实表明&#xff0c;BIOS已经无法满足…

UEFI shell - 标准应用程序的编译和加载过程

一、标准应用工程编译 首先了解下,应用程序是怎么被编译成.efi文件: UefiMain.c首先被编译成目标文件UefiMain.obj连接器将目标文件UefiMain.obj和其他库连接成UefiMain.dllGenFw工具将UefiMain.dll转换成UefiMain.efi 说明:连接器在生成UefiMain.dll时使用了/dll/entry:_Mo…

UEFI开发,记录第一场胜利——调用一个自己编写的protocol

本文参考BIOS/UEFI基础——Protocol介绍 大四第一个签三方的工作&#xff0c;BIOS的开发&#xff0c;第一次接触这个领域&#xff0c;在实习之前很好奇&#xff0c;也很有兴趣&#xff0c;但是学习BIOS在一开始注定要碰多次碰壁&#xff0c;实习第三周第二天&#xff0c;终于写…