c++ - 使用 DLL 注入如何控制应用程序内存中的现有对象?
问题描述
所以,我最近一直在研究 DLL 注入。有很多带有源代码的在线示例。然而,他们中的许多人在成功注射后停止。我想知道,在将代码注入应用程序内存之后;如何控制(或获取)目标应用程序内存中的现有对象?
以 DirectX 为例。假设我想在游戏中给自己无限弹药,或者我想在窗口上绘制一些其他图形。要执行后者,我必须获得对 IDXGISwapChain 对象的引用。
像这样的工作,我们使用 GetProcAddress() 从 d3d11.dll 获取对象引用吗?(注意,我没有测试过这段代码,不确定它是否会工作)
FNC3DC11 IDXGISwapChain_out;
TCHAR szDllPath[MAX_PATH] = { 0 };
GetSystemDirectory(szDllPath, MAX_PATH);
// We have to specify the full path to avoid the search order (found in Win32 folder)
lstrcat(szDllPath, "\\d3d11.dll");
HMODULE hDll = LoadLibrary(szDllPath);
if(hDll == NULL)
{
return FALSE;
}
// Pointer to the original function
IDXGISwapChain_out = (FND3DC9)GetProcAddress(hDll, "IDXGISwapChain");
if(IDXGISwapChain_out == NULL)
{
FreeLibrary(hDll);
return FALSE;
}
//Do things with IDXGISwapChain_out...
解决方案
推荐阅读
- r - 在 Shiny 中创建一个小窗口来描述过滤器的含义
- apache-spark - Apache Spark - 无法将 MS Access 表中的数据读取到 Spark 数据集中
- python - 如何在路径位置使用 f 字符串
- android - callbackFlow 不返回任何东西 android kotlin
- swift - 初始化核心数据 SwiftUI
- asp.net-mvc - 从 mvc5 实体框架上下文访问 Asp.net 成员表
- ios - ARKit 实体和模型
- flutter - 参数类型 Future
不能分配给参数类型“bool” - sass - WebStorm 在部分更新时不编译主 SCSS
- sql - 将 SQL 查询转换为具有多对多关系的 Rails 查询,最佳实践是什么?