//需要的头文件:
#include <iostream>
#include <stdarg.h>
#include <Windows.h>
#include <Psapi.h>
#include <stdint.h>
#include <tlhelp32.h>
#include <imagehlp.h>
#pragma comment(lib,"Psapi.lib")  //编译这个lib文件
#pragma comment(lib,"imagehlp.lib")  //软件启动前注入Dll
//param1:sDllPath:dll路径,run_path:执行文件路径
bool injectDll(char sDllPath[],TCHAR run_path[])
{//启动目标进程STARTUPINFO si = { 0 };si.cb = sizeof(si);si.dwFlags = STARTF_USESHOWWINDOW;si.wShowWindow = SW_SHOW;//pi:创建线程返回的信息PROCESS_INFORMATION pi; BOOL bRet = ::CreateProcess(NULL, run_path,NULL,NULL,FALSE,CREATE_SUSPENDED,NULL,NULL,&si,&pi);//获得进程入口HANDLE curProcessHandle = pi.hProcess; //获得当前进程的句柄// 创建虚拟内存地址,放置dll路径LPVOID pDllPath = VirtualAllocEx(curProcessHandle, NULL, strlen(sDllPath) + 1, MEM_COMMIT, PAGE_READWRITE);WriteProcessMemory(curProcessHandle, pDllPath, sDllPath, strlen(sDllPath) + 1, NULL);// 获取LoadLibraryA地址:用于注入dll;PTHREAD_START_ROUTINE pfnLoadLib = (PTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle(TEXT("kernel32")), "LoadLibraryA");// 在线程中执行dll中的入口函数:即导入dllHANDLE hNewThread = CreateRemoteThread(curProcessHandle, NULL, 0, pfnLoadLib, pDllPath, 0, NULL);// TODO: 后续可以插入命令行操作WaitForSingleObject(hNewThread, INFINITE);VirtualFreeEx(curProcessHandle, pDllPath, 0, MEM_RELEASE);CloseHandle(hNewThread);CloseHandle(curProcessHandle);ResumeThread(pi.hThread);//继续return true;
}

用法:直接引用这个方法即可,已经封装好了

windows 启动exe程序前注入dll(c++)相关推荐

  1. 无法启动此程序,因为dll丢失的解决方法分享

    大家在使用电脑的时候,应该经常会遇到这种情况吧?在你打开某些程序的时候,突然弹出一个框框说无法启动此程序,因为dll丢失,那么遇到这种情况,我们需要怎么去解决呢?今天小编就详细的给大家讲解一下方法. ...

  2. Windows启动exe应用程序,无法正常启动(0xc000007b)的解决办法

    在Windows下启动exe,应用程序无法正常启动(0xc000007b)的解决办法! 1. 分析 2. 解决方法 3. 下载链接 网上的其他方法,包括sfc /scannow,以及在命令行输入 命令 ...

  3. Qt中直接启动.exe程序,错误提示:无法启动此程序,因为计算机中丢失Qt5Core.dll。尝试重新安装该程序以解决此问题

    双击.exe程序 错误现象: 方法一: 一般客户使用时,让他安装qt太麻烦 找到Qt安装目录下的bin目录 拷贝库文件:Qt5Core.dll,Qt5Gui.dll,Qt5Widgets.dll,li ...

  4. MongoDB 安装报错:无法启动此程序,缺少dll文件

    问题 在 Windows 环境下安装 MongoDB 时,提示无法启动此程序,因为计算机丢失 dll文件.尝试重新安装该程序以解决此问题. 原因 因为是新安装的操作系统,缺少dll(动态链接库)文件支 ...

  5. windows下应用程序加载DLL动态链接库路径

    windows下应用程序加载动态链接库路径依次分别是: 举例D盘soft文件夹下存在了一个test.exe的执行文件,即d:\soft\test.exe,依赖test.dll动态链接库. ■程序的执行 ...

  6. c#Process.Start无法启动exe程序的问题

    本文链接:https://blog.csdn.net/stypace/article/details/12083027 1.可能是参数不是绝对路径 2.如果要启动的程序为单独一个exe文件没有问题,而 ...

  7. 使用bat批处理文件启动.exe程序

    1.新建一个.txt记事本文件 2.编辑内容如下: start "" "D:\Tencent\QQ.exe" start D:\Tencent\QQ.exe 路 ...

  8. C#中调用Windows系统服务exe程序的工具类与重启服务的流程

    场景 使用C#编写的Windows服务程序,在Winform中进行调用. 常用工具类方法检测服务是否存在或者安装,获取服务状态,启动服务,停止服务的方法. 以在Winform中重启服务为例. 注: 博 ...

  9. 使用electron把vue项目打包成windows应用exe程序

    1.安装electron依赖 npm install electron --save-devnpm install electron-packager --save-dev 2.修改vue.confi ...

最新文章

  1. jdk自带的反编译在那个包下_求教JDK中的反编译命令
  2. 剑指offer七:斐波那契数列
  3. CV:基于人工智能算法实现人脸口罩的实时检测(结合无人机可,实现实时警告提醒)
  4. 苏州科技大学计算机学院 李双娴,苏州大学计算机科学与技术学院第十二次研究生代表大会顺利召开...
  5. 一个爬虫的故事:这是人干的事儿?,很值得一看!
  6. 实战经验:如何定位控制文件热点块,即读取延迟高的块所在的ASM磁盘
  7. jsp servlet示例_Java Servlet Cookies示例
  8. 打开access文件 提示文件名无效_分享在PS软件打开图像时提示无效的JPEG的解决方法...
  9. 【Effective c++】条款6:若不想使用编译器自动生成的函数就应该明确拒绝
  10. JS中Ajax的方法和应用
  11. 控制系统设计专题(二)——自抗扰控制算法(上)
  12. hao360恶意篡改IE首页——修复方法
  13. 完美预约爆满,实行瞬时限流……高温天,到美术馆、博物馆溜娃避暑成了杭州人的新选择
  14. java 跳跃表_你真的了解跳跃表吗
  15. Zabbix 报告缺少可用的交换空间主机 “Lack of free swap space”问题解决
  16. 下厨房内部孵化项目——懒饭产品体验分析报告
  17. MySQL数据库--韩顺平老师课
  18. ImageLoader加载图片闪烁
  19. 41.Apache用户认证及访问日志 域名跳转
  20. Pytest3种配置文件方式

热门文章

  1. 这样讲 Netty 中的心跳机制,还有谁不会?
  2. 他35k月薪,如何扛住redis面试!
  3. VCL组件之编辑控件
  4. 2021高考成绩怎么查询时间北京,2021年北京高考成绩几号公布可以查询,查询时间安排...
  5. struts工作原理(图解)
  6. hive的安装和升级
  7. jboss 的debug启动4法
  8. 一本内行人写给行内人的安全经典--全面揭秘曾经热炒一时的“入侵腾讯事件”...
  9. linux得到低权shell,oracle低权限下获取shell
  10. 2018mysql数据库面试题_面试题: mysql 数据库去重 已看1 不好使