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

19.x86游戏实战-创建MFC动态链接库

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!

本次游戏没法给

内容参考于:微尘网络安全

工具下载:

链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd=6tw3

提取码:6tw3

复制这段内容后打开百度网盘手机App,操作更方便哦

上一个内容:18.x86游戏实战-找角色人物名字

之前写过跨进程读写,这种跨进程读写的方式适合代码量少的程序,代码量多了就不合适了,适用代码量多的方式是注入方式,这种程序在这里先称为注入模式的程序,注入模式的程序无法独立运行需要注入(放)到别的程序里面才能运行,也就是要放到游戏里运行,然后既然是辅助,辅助要给人提供选择的界面,目前MFC动态链接库就比较符合比较方便,所以要创建MFC动态链接库项目

MFC是微软提供的面向对象的可快速实现Windows窗口的代码,MFC分exe版和动态链接库版,动态链接库(dll)是Windows系统提供的一种注入方式,就是WIndows系统已经实现好给程序注入dll的代码了,不需要我们写注入dll过程的代码,只需要按照Windows系统实现好的东西按照它的规则去做就好,我为什么知道Windows系统有这种东西?这是老师讲的

创建下图红框里的项目,然后点下一步,如果没有下图红框的东西,百度搜索 Visual Studio 安装MFC

然后选择静态链接到MFC的常规DLL,静态的代码编译的时候会直接把所有用到的东西放到dll里面,动态的它不会这样,这就会导致由于动态链接库不完整注入到程序里面出现问题,选择完点确定

然后第一件事是改成x86,这是因为要搞的游戏是32位的,如果搞的游戏是64位就选x64,选错了会出现问题

然后创建完项目可以会没有资源视图

这里点击 视图-》其它窗口-》资源视图,就会出来了,任何窗口没了都可以在视图菜单中找到

然后如下图鼠标右击选择添加资源

选择Dialog然后点新建

这样就会出现一个窗口了

然后给对话框添加一个类,鼠标右击窗口选择添加类

写一个类名,这里是DXXDlg,然后点确定,为了方便后面使用推荐与下图中的名字一致

然后会创建下图红框的两个文件,文件里的内容这里先不说,后面会细说

下图红框圈起来的函数是MFC动态链接库程序的入口

然后上面把窗口搞好了,但是怎么显示呢?这就用到给窗口创建的类了,看下方代码

c++代码

下图只是核心部分,完整代码在百度网盘

然后 OutputDebugStringA函数是打印日志的,它打印的日志有一个程序可以查看,叫做Dbgview.exe,要用管理员启动,这以及放到百度网盘里了

然后上方写好了dll代码,还有个注入没有,注入有写好的工具wctool.exe,也放到百度网盘里了,下图是它的界面,要用管理员启动

开始使用代码,首先点重新生成

生成完之后点击在文件资源管理器中打开文件夹

然后上方重新生成的文件在下图红框文件夹里

下图红框要找的文件

然后打开游戏,打开游戏之后按住下图红框,拖到游戏窗口里

然后就会有游戏的数据

然后点击导入DLL

然后找到上方写的DLL代码所生成的文件,然后点打开

在注入之前需要设置一下Dbgview.exe,如果不设置会有很多日志,看起来不是很友好,我们代码中OutputDebugStrin函数打印什么下图红框里就写什么

下图红框里的是开始或关闭监视,关闭了监视就看不到东西了,这里的东西被称为日志,关闭了就看不到日志了

下图红框的是清除日志

监视菜单里的内容,选项与下图一致就可以

然后点注入

然后可以看到日志与窗口了

完整代码

链接:https://pan.baidu.com/s/1W-JpUcGOWbSJmMdmtMzYZg?pwd=q9n5

提取码:q9n5

复制这段内容后打开百度网盘手机App,操作更方便哦


相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 基于 CNN(二维卷积Conv2D)+LSTM 实现股票多变量时间序列预测(PyTorch版)
  • vue3 tab切换函数回调刷新跳转页面
  • tensorflow keras Model.fit returning: ValueError: Unrecognized data type
  • WordPress外贸建站案例
  • 基于JAVA+SpringBoot+Vue+uniApp的校园日常作品商品分享小程序
  • 航班管理系统【C语言版】单文件编写
  • MPNN消息传递神经网络
  • IDEA的断点调试(Debug)
  • Ajax是什么?如何在HTML5中使用Ajax?
  • 分享一个 .NET EF 6 扩展 Where 的方法
  • ES6 字符串的新增方法(二十)
  • P4-AI产品经理-九五小庞
  • 云原生系列 - Jenkins
  • (C++二叉树05) 合并二叉树 二叉搜索树中的搜索 验证二叉搜索树
  • 【JavaScript 算法】最长公共子序列:字符串问题的经典解法
  • 《深入 React 技术栈》
  • 「译」Node.js Streams 基础
  • Docker: 容器互访的三种方式
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • JavaScript学习总结——原型
  • Node项目之评分系统(二)- 数据库设计
  • yii2权限控制rbac之rule详细讲解
  • 大数据与云计算学习:数据分析(二)
  • 翻译--Thinking in React
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 力扣(LeetCode)21
  • 面试总结JavaScript篇
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 用element的upload组件实现多图片上传和压缩
  • 国内开源镜像站点
  • 函数计算新功能-----支持C#函数
  • 扩展资源服务器解决oauth2 性能瓶颈
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​​​​​​​开发面试“八股文”:助力还是阻力?
  • # Panda3d 碰撞检测系统介绍
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • (MTK)java文件添加简单接口并配置相应的SELinux avc 权限笔记2
  • (PySpark)RDD实验实战——取最大数出现的次数
  • (SpringBoot)第二章:Spring创建和使用
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (九)c52学习之旅-定时器
  • (面试必看!)锁策略
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • ******IT公司面试题汇总+优秀技术博客汇总
  • ****Linux下Mysql的安装和配置
  • .describe() python_Python-Win32com-Excel
  • .gitattributes 文件
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .net mvc部分视图
  • .net分布式压力测试工具(Beetle.DT)