对于一个病毒木马来说,重要的不是如何进行破坏,还有如何执行。病毒木马只有加载到内存中开始运行,才能够真正体现破坏力。否则,它就只是一个普通的磁盘文件,对于计算机用户的数据,隐私构不成丝毫的威胁。 自启动技术主要包括四种: 本文中主要介绍注册表技术 实现自启动的途径和方式有很多,其中修改注册表方式应用的最为广泛。注册表相当是操作系统的数据库,记录着系统中方方面面的数据,其中也不乏直接或间接导致开机自启动的数据。 打开一个指定的注册表 当指定键不存在,则该函数不创建新键 在注册表项下设置指定值的数据和类型 自启动表项的键值通常为以下两个路径: 现在我们使用regedit找到该路径: 我们进行Windows编程主要是要为Run添加可执行文件的键值对,现在简单写个demo,把计算器添加到Run表项中,实现开机自启。 同时需要注意:HKEY_LOCAL_MACHINE修改该注册表项需要管理员权限,而HKEY_CURRENT_USER修改该表象只需要用户默认权限就可以了。 编码如下: unicode编码为宽字节,所以长度需要乘2,否则注册表只会写一半。 现在我们使用regedit再找到该路径,发现多了一个键值对,就是计算器的可执行文件。自启动技术
注册表
WINAPI介绍
RegOpenKeyEx函数
LONG WINAPI RegOpenKey( HKEY, hKey, LPCTSTR lpSubkey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
参数说明
值
含义
KEY_CREATE_LINK
准许生成符号键
KEY_CREATE_SUB_KEY
准许生成子键
KEY_ENUMERATE_SUB_KEYS
准许生成枚举子键
KEY_EXECUTE
准许进行读操作
KEY_NOTIFY
准许更换通告
KEY_QUERY_VALUE
准许查询子键
KEY_ALL_ACCESS
提供完全访问
KEY_READ
KEY_QUERY_VALUE、KEY_ENUMERATE_SUB_KEYS、KEY_NOTIFY的组合
KEY_SET_VALUE
准许设置子键
KEY_WRITE
KEY_SET_VALUE、KEY_CREATE_SUB_KEY的组合
KEY_WOW64_32KEY
表示64位系统中的应用程序应该在32位注册表视图上运行,32位系统会忽略该标志
KEY_WOW64_64KEY
表示64位系统中的应用程序应该在64位注册表视图上运行,32位系统会忽略该标志
返回值
RegSetValueEx
LONG WINAPI RegSetValueEx( HKEY hKey, LPCTSTR lpValueName, DWORD Reserved, DWORD dwType, const BYTE *lpData, DWORD cbData)
参数说明
返回值
编码
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun HKEY_CURRENT_USERSOFTWAREMicrosoftWindowsCurrentVersionRun
// ConsoleApplication1.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #include <windows.h> #include <stdio.h> #include "resource.h" #include "ConsoleApplication1.h" #include <tchar.h> #include <cstring> BOOL Reg_CurrentUser(LPCTSTR lpszFilename, LPCTSTR lpszValueName) { HKEY hKey; LPCTSTR lpSubkey = L"Software\Microsoft\Windows\CurrentVersion\Run"; if (RegOpenKeyEx(HKEY_CURRENT_USER, lpSubkey, 0, KEY_WRITE, &hKey) != ERROR_SUCCESS) { printf("open error!n"); return FALSE; } if (RegSetValueEx(hKey, lpszFilename, 0, REG_SZ, (BYTE *)lpszValueName, (1 + 2*lstrlen(lpszValueName))) != ERROR_SUCCESS) { printf("write error!n"); return FALSE; } RegCloseKey(hKey); return TRUE; } int main() { LPCTSTR lpszFilename = L"calc"; LPCTSTR lpszValueName = L""C:\Windows\System32\calc.exe""; BOOL flag = Reg_CurrentUser(lpszFilename, lpszValueName); if (flag == TRUE) { printf("success!n"); } return 0; }
而如果不使用unicode编码,使用char *的话,会出现乱码情况。运行效果
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算