闲来无事,研究下c 语言制作病毒,刚好涉及开机自启,遂写下该文章
在查阅N多资料和Google后
终于搞定c语言开机自启的实现
(吐槽: 网上文章真是"瓜皮",bug奇多)
原理:
windows 开机会检索注册表,其中有一项
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
是微软 定义的开机程序检索表
利用windows api 函数修改该注册表即可实现开机启动程序
我们手动实现一下:
1、点击开始——运行,输入regedit打开注册表
2、找到“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run”打开后,
点右键 新建-字符串值,输入任意名称,然后右击该名称-修改,
在“数值数据”栏输入你要自动启动的应用程序文件所在的完整路径的文件名
活不多说,开码
需要以下头文件
#include <Windows.h>
#include <stdio.h>
函数主题如下:
void HKRunator(char *programName) //程序名称(**全路径**)
{
HKEY hkey = NULL;
DWORD rc;
rc = RegCreateKeyEx(HKEY_LOCAL_MACHINE, //创建一个注册表项,如果有则打开该注册表项
"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",
0,
NULL,
REG_OPTION_NON_VOLATILE,
KEY_WOW64_64KEY | KEY_ALL_ACCESS, //部分windows系统编译该行会报错, 删掉 “”KEY_WOW64_64KEY | “” 即可
NULL,
&hkey,
NULL);
if (rc == ERROR_SUCCESS)
{
rc = RegSetValueEx(hkey,
"UStealer",
0,
REG_SZ,
(const BYTE *)programName,
strlen(programName));
if (rc == ERROR_SUCCESS)
{
RegCloseKey(hkey);
}
}
}
如需调用该函数,传入程序全路径名即可。