C语言实战--DLL注入器
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注入器相关推荐
- dll注入器(易语言dll注入器)
怎么把图片注入DLL文件!怎么办? "加入修改后写文件,取特定目录 "文件名DLL"#dll 图标文件名写到文件 (取特定目录 +"\文件名DLL", ...
- 买了一本老镇的swift语言实战晋级
为什么80%的码农都做不了架构师?>>> 买的老镇的<<swift语言实战晋级>>书刚到,发现没有51CTO的100金币学习卡. 转载于:https:/ ...
- oracle数据库sql培训,Oracle数据库SQL语言实战培训教程(全面、详细、案例、精讲)套餐...
风哥oracle数据库SQL语言实战培训教程(案例.精讲)套餐,DBA必备技能. 套餐介绍: 风哥Oracle数据库SQL语言实战培训教程(案例.精讲)套餐,DBA必备技能. 内容: SQL语言基础入 ...
- Go语言实战读书笔记
2019独角兽企业重金招聘Python工程师标准>>> Go语言实战读书笔记 第二章 通道(channel).映射(map)和切片(slice)是引用类型.引用类型的对象需要使用ma ...
- R语言实战(七)图形进阶
本文对应<R语言实战>第11章:中级绘图:第16章:高级图形进阶 基础图形一章,侧重展示单类别型或连续型变量的分布情况:中级绘图一章,侧重展示双变量间关系(二元关系)和多变量间关系(多元关 ...
- 调试实战 —— dll 加载失败之 Debug Release争锋篇
缘起 最近,项目里遇到一个 dll 加载不上的问题.实际项目比较复杂,但是解决后,又是这么的简单,合情合理.本文是我使用示例工程模拟的,实际项目中另有玄机,但问题的本质是一样的.本文从行文上与 < ...
- 福利来袭,送你105例C语言实战
前几周,TIOBE 编程语言社区最新发布了 2018 年 6 月排行榜,和5月份相比,C语言的增长率达到8.09%,是排行前20编程语言中增长率最大的,可见学C语言的人越来越多.小编一直有意识地收集了 ...
- r语言electricity数据集_R语言实战学习
<R语言实战>中文电子版 提取码:lx35 已经学习打卡R语言22天了,可以说是初窥真容--基本了解R的数据和函数:作为程序语言,就是要多练习,多领悟,在实战中发现问题并解决问题. 所以, ...
- go int 转切片_一文掌握GO语言实战技能(二)
Go 数组 Go 切片 Go 变量和内存地址 Go Map 类型 Go 面向对象编程 Go 方法的定义 GO 数组 数组是同一类型的元素集合.Go中的数组下标从0开始,因此长度为n的数组下标范围是[0 ...
- swift语言实战晋级-第9章 游戏实战-跑酷熊猫-7-8 移动平台的算法
原文:swift语言实战晋级-第9章 游戏实战-跑酷熊猫-7-8 移动平台的算法 在上个小节,我们完成了平台的产生.那么我们来实现一下让平台移动.平台的移动,我们只需要在平台工厂类中写好移动的方法,然 ...
最新文章
- ATS名词术语(待续)
- SQLServer之创建AFETER DELETE触发器
- 无废话ExtJs 入门教程二十三[员工管理实例:Demo]
- java中使用request,application,session,cookie对象
- Centos-Server-LNMP整合---源安装
- Netty之Channel源代码分析
- PyPA Installing Packages
- KVC的使用(对一个对象的成员变量进行操作(赋值/取值))
- python中颜色_python - matplotlib中的命名颜色
- TCP和UDP的不同
- 用原生js做单页应用
- 【NumPy基础】100道numpy练习——进阶篇
- oracle link binaries,Oracle 单实例 Relink Binary Options 说明
- win10 IE内核浏览器不能上网的问题
- IP-Guard清除记录
- CAD中运用CHAMFER命令的角度模式建立倒角的方式
- Leetcode题目分类指南(单独刷题或学习算法书籍配合使用)
- C++ Primer 5th 中文版 源码_无需金币(百度网盘)
- AVT Mako/Manta面阵相机开发小结
- 华为网络--Hybrid接口工作原理与实验