VS2017运行通过
版权由本人编写,禁止魔改用于商业用途

#include <iostream>
#include <sstream>
#include <fstream>
#include <cstdint>
#include <filesystem>#include <Windows.h>
#include <TlHelp32.h>/* 获取进程句柄 */
HANDLE GetProcessHandle()
{/* 打开遍历进程句柄 */HANDLE Snap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);if (Snap == INVALID_HANDLE_VALUE) return Snap;/* 初始化进程信息结构 */PROCESSENTRY32 ProcessInfo{ 0 };ProcessInfo.dwSize = sizeof(ProcessInfo);/* 循环查找进程信息 */if (Process32First(Snap, &ProcessInfo)){do{if (strcmp("csgo.exe", ProcessInfo.szExeFile) == 0)//进程文件名称,自行修改{CloseHandle(Snap);return OpenProcess(PROCESS_ALL_ACCESS, FALSE, ProcessInfo.th32ProcessID);}} while (Process32Next(Snap, &ProcessInfo));}CloseHandle(Snap);return INVALID_HANDLE_VALUE;
}int main(int argc, char* argv[])
{HANDLE Handle = INVALID_HANDLE_VALUE;LPVOID DllMemory = nullptr;HANDLE Thread = NULL;do{/* 获取作弊DLL路径 filesystem报错请设置C++17版本*/std::cout << "输入DLL全路径 : ";std::string dll;getline(std::cin, dll);if (std::filesystem::exists(dll) == false){std::cout << "[-] DLL文件不存在" << std::endl;break;}/* 获取进程句柄 */Handle = GetProcessHandle();if (Handle == INVALID_HANDLE_VALUE){std::cout << "[-] 获取游戏进程句柄失败" << std::endl;break;}/* 获取NtOpenFile函数地址 */LPVOID pNtOpenFile = GetProcAddress(LoadLibraryA("ntdll"), "NtOpenFile");if (pNtOpenFile == nullptr){std::cout << "[-] 获取NtOpenFile函数地址失败" << std::endl;break;}/* 获取原始字节 */char OriginalBytes[5]{ 0 };memcpy(OriginalBytes, pNtOpenFile, 5);/* 将原始字节写入进程的NtOpenFile函数地址处,解除inline hook */SIZE_T Bytes = 0;WriteProcessMemory(Handle, pNtOpenFile, OriginalBytes, 5, &Bytes);if (Bytes == 0){std::cout << "[-] 无法写入内存解除inline hook" << std::endl;break;}/* 申请一块内存保存我们的DLL路径 */DllMemory = VirtualAllocEx(Handle, nullptr, dll.size(), MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);if (DllMemory == nullptr){std::cout << "[-] 无法在CSGO游戏内申请内存" << std::endl;break;}/* 把我们的DLL路径写入该块内存中 */WriteProcessMemory(Handle, DllMemory, dll.c_str(), dll.size(), &Bytes);if (Bytes == 0){std::cout << "[-] 无法写入DLL路径" << std::endl;break;}/* 创建远程线程加载我们的DLL */Thread = CreateRemoteThread(Handle, 0, 0, (LPTHREAD_START_ROUTINE)LoadLibraryA, DllMemory, 0, 0);if (Thread == NULL){std::cout << "[-] 无法创建远程线程" << std::endl;break;}/* 等待远程线程的执行完毕 */WaitForSingleObject(Thread, INFINITE);/* 加载成功 */std::cout << "[+] 注入成功" << std::endl;} while (false);/* 清理相关 */if (Handle != INVALID_HANDLE_VALUE) CloseHandle(Handle);if (DllMemory) VirtualFree(DllMemory, 0, MEM_RELEASE);if (Thread != NULL) CloseHandle(Thread);system("pause");return 0;
}

C语言实战--DLL注入器相关推荐

  1. dll注入器(易语言dll注入器)

    怎么把图片注入DLL文件!怎么办? "加入修改后写文件,取特定目录 "文件名DLL"#dll 图标文件名写到文件 (取特定目录 +"\文件名DLL", ...

  2. 买了一本老镇的swift语言实战晋级

    为什么80%的码农都做不了架构师?>>>    买的老镇的<<swift语言实战晋级>>书刚到,发现没有51CTO的100金币学习卡. 转载于:https:/ ...

  3. oracle数据库sql培训,Oracle数据库SQL语言实战培训教程(全面、详细、案例、精讲)套餐...

    风哥oracle数据库SQL语言实战培训教程(案例.精讲)套餐,DBA必备技能. 套餐介绍: 风哥Oracle数据库SQL语言实战培训教程(案例.精讲)套餐,DBA必备技能. 内容: SQL语言基础入 ...

  4. Go语言实战读书笔记

    2019独角兽企业重金招聘Python工程师标准>>> Go语言实战读书笔记 第二章 通道(channel).映射(map)和切片(slice)是引用类型.引用类型的对象需要使用ma ...

  5. R语言实战(七)图形进阶

    本文对应<R语言实战>第11章:中级绘图:第16章:高级图形进阶 基础图形一章,侧重展示单类别型或连续型变量的分布情况:中级绘图一章,侧重展示双变量间关系(二元关系)和多变量间关系(多元关 ...

  6. 调试实战 —— dll 加载失败之 Debug Release争锋篇

    缘起 最近,项目里遇到一个 dll 加载不上的问题.实际项目比较复杂,但是解决后,又是这么的简单,合情合理.本文是我使用示例工程模拟的,实际项目中另有玄机,但问题的本质是一样的.本文从行文上与 < ...

  7. 福利来袭,送你105例C语言实战

    前几周,TIOBE 编程语言社区最新发布了 2018 年 6 月排行榜,和5月份相比,C语言的增长率达到8.09%,是排行前20编程语言中增长率最大的,可见学C语言的人越来越多.小编一直有意识地收集了 ...

  8. r语言electricity数据集_R语言实战学习

    <R语言实战>中文电子版 提取码:lx35 已经学习打卡R语言22天了,可以说是初窥真容--基本了解R的数据和函数:作为程序语言,就是要多练习,多领悟,在实战中发现问题并解决问题. 所以, ...

  9. go int 转切片_一文掌握GO语言实战技能(二)

    Go 数组 Go 切片 Go 变量和内存地址 Go Map 类型 Go 面向对象编程 Go 方法的定义 GO 数组 数组是同一类型的元素集合.Go中的数组下标从0开始,因此长度为n的数组下标范围是[0 ...

  10. swift语言实战晋级-第9章 游戏实战-跑酷熊猫-7-8 移动平台的算法

    原文:swift语言实战晋级-第9章 游戏实战-跑酷熊猫-7-8 移动平台的算法 在上个小节,我们完成了平台的产生.那么我们来实现一下让平台移动.平台的移动,我们只需要在平台工厂类中写好移动的方法,然 ...

最新文章

  1. ATS名词术语(待续)
  2. SQLServer之创建AFETER DELETE触发器
  3. 无废话ExtJs 入门教程二十三[员工管理实例:Demo]
  4. java中使用request,application,session,cookie对象
  5. Centos-Server-LNMP整合---源安装
  6. Netty之Channel源代码分析
  7. PyPA Installing Packages
  8. KVC的使用(对一个对象的成员变量进行操作(赋值/取值))
  9. python中颜色_python - matplotlib中的命名颜色
  10. TCP和UDP的不同
  11. 用原生js做单页应用
  12. 【NumPy基础】100道numpy练习——进阶篇
  13. oracle link binaries,Oracle 单实例 Relink Binary Options 说明
  14. win10 IE内核浏览器不能上网的问题
  15. IP-Guard清除记录
  16. CAD中运用CHAMFER命令的角度模式建立倒角的方式
  17. Leetcode题目分类指南(单独刷题或学习算法书籍配合使用)
  18. C++ Primer 5th 中文版 源码_无需金币(百度网盘)
  19. AVT Mako/Manta面阵相机开发小结
  20. 华为网络--Hybrid接口工作原理与实验

热门文章

  1. 病毒手动查杀(威金 q盗 熊猫烧香)
  2. Qt 之 QQ系统表情(三)
  3. PS2手柄通讯协议解析---附资料和源码
  4. python如何输入特殊符号_用Python打印列表中的特殊字符
  5. 【阿卡乐谱】【日常分享】超级强大的简谱-《大海啊,故乡》
  6. matlab数控加工,关于MATLAB复杂型面数控加工编程.pdf
  7. Web前端实现3D旋转魔方相册【超详细】
  8. 2021年起,WPS Office纳入全国计算机等级考试二级考试软件
  9. mos管h桥电机驱动电路与设计原理图-KIA
  10. 基于微信小程序的奶茶外卖商城系统设计与实现毕业设计毕设开题报告