当前位置: 首页 > news >正文

34.构建核心注入代码

上一个内容:33.获取入口点

以 33.获取入口点 它的代码为基础进行修改

实现的功能是把LoadLibrary函数注入到目标进程实现加载我们的模块。LoadLibrary只有有程序使用过了它的代码就会加载到内存中(因为动态链接库是内存加载)就是a程序要用LoadLibrary然后b程序不用这时LoadLibrary在操作系统中是已经存在了,如果b程序也要用LoadLibrary只是对LoadLibrary做了一个映射不是再往内存里放一遍(为了节约内存)所以LoadLibrary函数的地址是固定的在不同程序里都是固定的,然后就可以获取LoadLibrary函数地址把地址放到目标进程中然后把我们的动态链接库磁盘位置的字符串也写进去就可以了

新建模块项目:

新建的项目步骤:

首先右击解决方案选择下图红框选项

然后选择MFC动态链接库

随便写个项目名称:然后点创建

然后根据下图进行选择然后点确定按钮

创建完项目在它的初始化代码中添加下图代码:

    CWinApp::InitInstance();AfxMessageBox(L"注入成功!");

然后回到之前注入的项目:·新加类

新加的类,这个类封装注入游戏、打开游戏等相关函数

INJCET.h文件代码

#pragma onceclass INJCET
{
public:BOOL StartProcess(const wchar_t * GameExe,const wchar_t * GamePath,wchar_t * GameCmds,PROCESS_INFORMATION* LPinfo);void* ImageLoad(const wchar_t* filename);void UnloadImage(void* _data);DWORD GetEntryPoint(const wchar_t* filename);
public:BOOL CreateRemoteData(HANDLE hProcess);
};

INJCET.cpp文件代码:

#include "pch.h"
#include "INJCET.h"
#include <fstream>void _stdcall INJECTCode() {LoadLibrary(L"F:\\代码存放地\\c\\GAMEHACKER2\\x64\\Debug\\Dlls.dll");
}BOOL INJCET::StartProcess(const wchar_t* GameExe, const wchar_t* GamePath, wchar_t* GameCmds, PROCESS_INFORMATION* LPinfo)
{// 用来指定创建时进程的主窗口的窗口工作站、桌面、标准句柄和外观。STARTUPINFO si{};si.cb = sizeof(si);CreateProcess(GameExe,GameCmds,NULL, NULL,FALSE,// 新进程的主线程处于挂起状态创建,在调用 ResumeThread 函数之前不会运行。CREATE_SUSPENDED,NULL,GamePath,&si,LPinfo);return TRUE;
}void* INJCET::ImageLoad(const wchar_t* filename) {std::ifstream streamReader(filename, std::ios::binary);streamReader.seekg(0, std::ios::end);unsigned filesize = streamReader.tellg();char* _data = new char[filesize];streamReader.seekg(0, std::ios::beg);streamReader.read(_data, filesize);streamReader.close();return _data;
}void INJCET::UnloadImage(void* _data) {delete[] _data;
}DWORD INJCET::GetEntryPoint(const wchar_t* filename)
{// 方式二(要在32位环境下运行根据游戏版本选择运行32还是64位的程序)void* image = ImageLoad(filename);IMAGE_DOS_HEADER* dosHeader = (IMAGE_DOS_HEADER*)image;unsigned PEAddress = dosHeader->e_lfanew + (unsigned)image;IMAGE_NT_HEADERS* ntHeader = (IMAGE_NT_HEADERS*)PEAddress;DWORD dEntryPoint = ntHeader->OptionalHeader.AddressOfEntryPoint;CString wTxt;wTxt.Format(L"%X", dEntryPoint);AfxMessageBox(wTxt);UnloadImage(image);return dEntryPoint;
}BOOL INJCET::CreateRemoteData(HANDLE hProcess)
{LPVOID adrRemote = VirtualAllocEx(hProcess, 0, 0x3000, MEM_COMMIT, PAGE_EXECUTE_READWRITE);SIZE_T lwt;WriteProcessMemory(hProcess, adrRemote, INJECTCode, 0x200, &lwt);return TRUE;
}

调用的地方

变量声明的地方

到这,当前程序是无法成功注入的,成功的代码写在后面

相关文章:

  • C++ 61 之 函数模版
  • 【八股系列】shouldComponentUpdate是为了解决什么问题?(React)
  • CentOS OpenVPN 客户端连接配置
  • 椭圆的几何要素
  • 计算机专业的发展前景与选择建议。
  • 主流框架选择:React、Angular、Vue的详细比较
  • 【React】useState 的原理
  • 思聪私生女能继位吗?王健林表态,家族不会亏待
  • 常用的工具:pdf转换器、流程图
  • 视频汇聚安防综合管理系统EasyCVR平台GB28181设备注册未上线的原因排查与解决
  • Linux命令详解
  • vue生成二维码跳转到小程序
  • 每日练题(py,c,cpp).6_19,6_20
  • python-录音文件转换成文字
  • 智谱API调用
  • [笔记] php常见简单功能及函数
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • 【知识碎片】第三方登录弹窗效果
  • Android开源项目规范总结
  • eclipse的离线汉化
  • ES6核心特性
  • Python十分钟制作属于你自己的个性logo
  • Sublime Text 2/3 绑定Eclipse快捷键
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 多线程事务回滚
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 技术:超级实用的电脑小技巧
  • 你真的知道 == 和 equals 的区别吗?
  • 排序(1):冒泡排序
  • 使用 Docker 部署 Spring Boot项目
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • ​经​纬​恒​润​二​面​​三​七​互​娱​一​面​​元​象​二​面​
  • ​业务双活的数据切换思路设计(下)
  • #、%和$符号在OGNL表达式中经常出现
  • ( 10 )MySQL中的外键
  • (1)常见O(n^2)排序算法解析
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (pojstep1.1.2)2654(直叙式模拟)
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (回溯) LeetCode 131. 分割回文串
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (三)elasticsearch 源码之启动流程分析
  • (四)库存超卖案例实战——优化redis分布式锁
  • (转)Windows2003安全设置/维护
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)
  • .naturalWidth 和naturalHeight属性,
  • .net Application的目录
  • .net CHARTING图表控件下载地址
  • .NET 中 GetProcess 相关方法的性能