作者:小阿栗
Imgui又称为Dear ImGui,它是与平台无关的C++轻量级跨平台图形界面库,没有任何第三方依赖,可以将Imgui的源码直接加到项目中使用,也可以编译成dll, Imgui使用DX或者OpenGL进行界面渲染,Imgui主要用于游戏行业。
这里我们需要用到两个工具Detours-master(微软的hook库)和imgui-master,主要讲D3D9HOOK。
我们先来创建一个DLL项目。步骤如下:
1.选择新建项目
2.选择Windows桌面->动态链接库(DLL)->D3D9HOOK,点击确定
3.删除Framework.h、pch.h以及pch.cpp文件。添加一个dllmain.h头文件
4.dllmain.cpp中要包含头文件添加#include
5. 配置
5.1 选择属性
5.2 修改运行库以及Spectre缓解,选择应用
5.3 配置include路径,点击“宏”,搜索DX,根据地址找到文件位置,将 $(DXSDK_DIR)include填入,应用
5.4 搜索DX,将$(DXSDK_DIR)Lib填入,搜索$(platformTarget),将$(DXSDK_DIR)lib$(platformTarget)填入,应用
(图片注释:配置好会自动匹配x86/x64不需要再改)
5.5 新增d3d9.lib,d3dx9.lib这两个依赖项,应用
6. 配置好环境后,编译HOOK库(编译x86和x64两个版本)
X86:找到Visual Studio2017,打开“x86 Native Tools Prompt for VS 2017”,然后cd到路径里nmake进行编译
X64:找到Visual Studio2017,打开“适用于VS 2017的 x64 本机工具命令提示”,然后cd到路径里nmake进行编译
7.打开项目文件夹
8.新建一个目录Detours,将lib.x86、lib.x64和include复制过来(将lib.去掉方便后续识别)
9.新建筛选器,命名Detours
10.在Detours中添加现有项,选定两个头文件detours.h和detver.h
11.配置lib库
11.1选择属性
11.2 编辑包含目录,宏-包含目录-$(ProjectDir)Detoursinclude,应用
11.3编辑附加库目录,宏-附加库目录-$(ProjectDir)DetoursLib$(platformTarget),应用
11.4 编辑附加依赖项,添加detours.lib,应用
11.5 不使用预编译头
12.配置imgui
12.1在D3D9HOOK目录下,新建imgui文件夹,将imgui-master中backends里imgui_impl_dx9.cpp、imgui_impl_dx9.h和imgui_impl_win32.cpp、imgui_impl_win32.h;及主目录下所有.cpp和.h都复制到imgui文件夹中
12.2新建筛选器,命名imgui
12.3在imgui中添加现有项,选定目录下所有文件
12.4.dllmain.h中包含导进来的所有头文件
13.主线程imgui窗口的实现
14.测试
14.1打开文件夹,把动态链接库D3D9HOOK.dll粘贴到桌面上
14.2打开pick,启动代码注入器,将动态链接库D3D9HOOK.dll进行注入
测试成功:在pick左上角出现窗口
这样,就手动创建了一个基础的imgui的框架
原创声明,本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 本站 删除。