14.第二阶段x86游戏实战2-C++语言开发环境搭建-VisualStudio2017

news2024/11/16 7:25:06

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

本次游戏没法给

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

本人写的内容纯属胡编乱造,全都是合成造假,仅仅只是为了娱乐,请不要盲目相信。

工具下载:

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

提取码:6tw3

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

需要的工具在下图红框的目录里

上一个内容:13.第二阶段x86游戏实战2-动态模块地址

原视频有多节C++和易语言(易语言用的不多,会以C++为主)基础,这里就不写基础了,不写的原因是后面写代码的时候我会把代码描述的超级详细,直接抄代码就行然后看看描述就能懂,所以专门为了写C++代码去写基础介绍会浪废时间,跟着多抄抄代码也能掌握C++,现在的主线是逆向技术而不是写代码的技术,不管是C++还是易语言还是其它语言都是逆向的过程中顺手学的,不要为了这种顺手的事专门花时间去搞,东西很多这些东西都是可以舍弃的,快节奏的时代,你在学基础别人可能已经在搞赚钱的技术了,所以边搞赚钱的技术边学基础,这样才能省下时间追上别人的脚步跟别人内卷。

然后开始:

然后有一个没法省略的东西,C++环境搭建,环境搭建就是安装写C++代码的程序和把C++代码搞成exe文件或dll文件的程序(安装写代码的程序和把代码编译可以运行的程序),这里使用Visual Studio 2017,Visual Studio 2017是微软提供的,为了后续方便最好用Visual Studio 2017,不要用其它版本的Visual Studio,Visual Studio 2017的安装包已放到了百度网盘中

如下图Visual Studio 2017安装程序

双击打开Visual Studio 2017安装程序之后,会出现下图的窗口

然后勾选下图红框的四项,安装之前记得改一下安装目录

点击安装之后,等待安装完成

安装完它会自动启动,如果没有自动启动点击下图红框

然后安装完它可能不会在桌面上创建快捷方式,需要手动创建一下,如下图红框devenv.exe就是visual studio的启动文件,创建快捷方式的时候记得给它重命名改成 visual studio 2017

如下图创建快捷方式

桌面快捷方式

创建快捷方式之后就不用再通过下图红框的方式启动visual studio 2017了

启动之后点击以后再说

然后选择一个主题(窗口样式 ),然后点启动Visual Studio

然后等待它准备完

准备完之后它就会打开下图的窗口了

安装完之后创建一个项目

然后选择MFC动态链接库,动态链接库是一个.dll的文件

然后记得改一下存放代码的目录,起一个名称,这里叫tl,然后点确定

然后选择静态链接到MFC,然后点确定

点击确定之后,下图中左边的解决方案位置会不一样,可以用鼠标拖动调整

然后打开一下资源视图,如下图

然后添加一个窗口

然后如下图选择Dialog

新建完会是下图中的样子

然后选择工具箱

工具箱如下图

然后拖出一个Button,Button是一个按钮,如下图

修改它的属性

然后右击窗口添加一个类,类可以理解为用来描述某堆数据是什么的东西

然后起个类名然后点确定

然后它创建的文件

然后编写代码显示上面CM窗口,如下图

完整代码

// tl.cpp: 定义 DLL 的初始化例程。
//

#include "pch.h"
#include "framework.h"
#include "tl.h"
#include "CM.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

//
//TODO:  如果此 DLL 相对于 MFC DLL 是动态链接的,
//		则从此 DLL 导出的任何调入
//		MFC 的函数必须将 AFX_MANAGE_STATE 宏添加到
//		该函数的最前面。
//
//		例如: 
//
//		extern "C" BOOL PASCAL EXPORT ExportedFunction()
//		{
//			AFX_MANAGE_STATE(AfxGetStaticModuleState());
//			// 此处为普通函数体
//		}
//
//		此宏先于任何 MFC 调用
//		出现在每个函数中十分重要。  这意味着
//		它必须作为以下项中的第一个语句:
//		出现,甚至先于所有对象变量声明,
//		这是因为它们的构造函数可能生成 MFC
//		DLL 调用。
//
//		有关其他详细信息,
//		请参阅 MFC 技术说明 33 和 58。
//

// CtlApp

BEGIN_MESSAGE_MAP(CtlApp, CWinApp)
END_MESSAGE_MAP()


// CtlApp 构造

CtlApp::CtlApp()
{
	// TODO:  在此处添加构造代码,
	// 将所有重要的初始化放置在 InitInstance 中
}


// 唯一的 CtlApp 对象

CtlApp theApp;

CM * PMainDialog;// 声明一个CM类型窗口的指针类型,XX * 只要有这样的*就是指针类型,指针的值会被视为内存地址
DWORD WINAPI ShowDialog() {// 开启线程执行它里面的代码,{}之间的代码
	PMainDialog = new CM; // 创建CM窗口对象,也就是把CM窗口的数据放到内存中
	PMainDialog->DoModal(); // 显示窗口
	/**
		到这就执行完了,delete是用来清理内存的,delete PMainDialog意思就是
		把 PMainDialog 指向的内存清理掉
	*/
	delete PMainDialog; 
	FreeLibraryAndExitThread(theApp.m_hInstance, 1);// 关闭线程
	return TRUE;
}

// CtlApp 初始化

BOOL CtlApp::InitInstance()// 程序的入口,就是我们代码运行之后会进入这里面
{
	CWinApp::InitInstance();
	/**
		CreateThread开启一个线程,执行代码的东西被称为线程
		::CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)ShowDialog, NULL, NULL, NULL);意思是
		开启一个线程去执行名字叫 ShowDialog 的函数(代码)
	*/
	::CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)ShowDialog, NULL, NULL, NULL);
	return TRUE;
}

然后如下图,重新生成,意思是把代码编译成.dll文件

编译好的dll文件位置,位置在项目的目录中,然后复制一下下图红框的文件,也就是复制tl.dll文件

然后有一个注入器,这个注入器已放到百度网盘中了 ,注入器用来把dll文件放到某个已运行的程序中,注入dll被注入进某个程序中之后会执行上方写的InitInstance函数

把tl.dll复制到注入器的目录里

双击运行注入器之后如下图,改一下dll名字,改成tl.dll(tl.dll里的tl是根据项目名来的),然后点击注入,点击注入记得运行游戏,进程名就是游戏运行后任务管理器的哪个名字

如下图,效果图:刚刚写的dll文件就放到了游戏中运行了,运行了InitInstance函数创建了CM窗口

上方的代码不全,只有手写的代码

完整代码:代码目录如下图红框

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

提取码:q9n5

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


img

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2163143.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于jsonpath_ng的JSON数据查改增删

jsonpath_ng支持JSON数据的读写操作。 安装 pip install jsonpath-ng测试数据 from jsonpath_ng import parse import jsonjson_data { "store": {"book": [ { "category": "reference","author": "Nigel Rees&qu…

数据集-目标检测系列-鲨鱼检测数据集 shark >> DataBall

数据集-目标检测系列-鲨鱼检测数据集 shark >> DataBall 数据集-目标检测系列-鲨鱼检测数据集 shark 数据量:6k 想要进一步了解,请联系。 DataBall 助力快速掌握数据集的信息和使用方式,百种数据集,持续增加中。 示例&…

【自动驾驶】基于车辆几何模型的横向控制算法 | Stanley 算法详解与编程实现

写在前面: 🌟 欢迎光临 清流君 的博客小天地,这里是我分享技术与心得的温馨角落。📝 个人主页:清流君_CSDN博客,期待与您一同探索 移动机器人 领域的无限可能。 🔍 本文系 清流君 原创之作&…

【Python】探索 Elpy:Emacs 中的 Python 开发环境

可以短时间不开心,但别长时间不清醒。 对于使用 Emacs 编辑器的 Python 开发者来说,Elpy 是一个强大的集成开发环境(IDE),它通过整合多个 Emacs Lisp 和 Python 包,提供了一套完整的 Python 编程支持。本文…

丹摩智算平台体验:AI开发从未如此简单

目录 初次接触丹摩智算GPU算力资源表格 轻松创建GPU实例镜像选择 实验过程体验实验中的一些细节 使用后的感受一点小建议总结 最近我一直在学习一些与深度学习相关的知识,准备自己动手做一些模型训练的实验。平时在自己电脑上跑模型总感觉有点吃力,特别是…

复制他人 CSDN 文章到自己的博客

文章目录 0.前言步骤 0.前言 在复制别人文章发布时,记得表明转载哦 步骤 在需要复制的csdn 文章页面,打开浏览器开发者工具(F12)Ctrl F 查找"article_content"标签头 右键“Copy”->“Copy element”新建一个 tx…

[大语言模型-论文精读] ACL2024-长尾知识在检索增强型大型语言模型中的作用

ACL2024-长尾知识在检索增强型大型语言模型中的作用 On the Role of Long-tail Knowledge in Retrieval Augmented Large Language Models Authors: Dongyang Li, Junbing Yan, Taolin Zhang, Chengyu Wang, Xiaofeng He, Longtao Huang, Hui Xue, Jun Huang 1.概览 问题解决&…

Windows驱动调试方法

单步调试驱动 驱动的调试不能直接在本机上进行,而是要放在虚拟机(或其它设备)中。这是因为在内核模式下,一个断点的触发将会停下整个系统而不只是单个进程。 在前面的文章里,使用了DbgPrint函数来进行日志的输出&…

学习一下怎么用git

目录 初始化操作 设置名字: 设置邮箱: 查询状态 初始化本地仓库 清空git bush控制台 git的三个区域 文件提交 将会文件提交到暂存区 暂存指定文件 暂存所有改动文件 查看暂存区里面的文件 将文件提交到版本库 git文件状态查看 ​编辑 暂存区的相关指令…

2024专业U盘格式化数据恢复工具推荐榜

对于经常在不固定办公地点工作,且依赖U盘存储重要资料的朋友来说,U盘无疑成为了随身携带的“数字保险箱”。然而,频繁使用U盘也意味着面临数据丢失的风险。面对u盘格式化怎么恢复数据的难题,您或许正寻求有效的解决方案。接下来&a…

Spring源码-从源码层面讲解传播特性

传播特性:service&#xff1a;REQUIRED&#xff0c;dao:REQUIRED 两个都是required使用的是同一个事务&#xff0c;正常情况&#xff0c;在service提交commit <tx:advice id"myAdvice" transaction-manager"transactionManager"><tx:attributes&…

2024年CSP-J认证 CCF信息学奥赛C++ 中小学初级组 第一轮真题-阅读程序题解析

2024 CCF认证第一轮&#xff08;CSP-J&#xff09;真题 二、阅读程序题 (程序输入不超过数组或字符串定义的范围&#xff0c;判断题正确填√错误填X;除特殊说明外&#xff0c;判断题 1.5分&#xff0c;选择题3分&#xff0c;共计40 分) 第一题 01 #include <iostream>…

【Python】探索 PyTorch 在机器学习中的应用

在机器学习的浪潮中&#xff0c;PyTorch 以其灵活性和易用性成为了研究者和开发者的热门选择。本文将探讨 PyTorch 在机器学习领域的应用&#xff0c;并展示如何使用 PyTorch 构建一个基本的机器学习模型。 ⭕️宇宙起点 &#x1f3ac; 机器学习简介&#x1f4a2; PyTorch 与机…

胤娲科技:AI程序员——重塑编程世界的魔法师

当魔法遇上代码 想象一下&#xff0c;一个对编程一无所知的初中生&#xff0c;在熙熙攘攘的展会现场&#xff0c;仅凭几句简单的提示词&#xff0c;就在几分钟内创造出一个功能完备的倒计时网页。 这听起来像是科幻电影中的场景&#xff0c;但如今&#xff0c;在阿里云「通义灵…

心觉:如何重塑高效学习的潜意识(1)两种方法的优缺点

Hi&#xff0c;我是心觉&#xff0c;与你一起玩转潜意识、脑波音乐和吸引力法则&#xff0c;轻松掌控自己的人生&#xff01; 挑战每日一省写作180/1000天 你的学习习惯是什么呢 学习的时候是感到轻松吗 很多人感觉现在是知识大爆炸的时代&#xff0c;每天都会产生海量的知…

C++学习笔记----8、掌握类与对象(一)---- 对象中的动态内存分配(2)

2.2、用析构函数释放内存 每当完成动态分配内存时&#xff0c;都应该释放。如果在一个对象中动态分配内存&#xff0c;释放内存的地方就是析构函数。编译器保证当对象被破坏时会调用析构函数。下面就是Spreadsheet类定义中的析构函数&#xff1a; export class Spreadsheet { …

秋分之际,又搭建了一款微信记账本小程序

在这个金色的季节里&#xff0c;每一粒粮食都蕴含着生命的奇迹&#xff0c;每一片叶子都在诉说着成长的故事。秋分之际&#xff0c;又搭建了一款微信记账本小程序。 产品概述 微信记账本小程序是一款便捷的个人财务管理工具&#xff0c;旨在帮助用户轻松记录、管理和分析日常…

STM32基础学习笔记-NVIC中断面试基础题4

第四章、NVIC: 外部中断_串口中断 1、按键按下后&#xff0c;GPIO 会产生一个上升/下降沿&#xff0c;G030内部是如何触发外部中断的呢&#xff1f; 配置GPIO引脚&#xff1a; 首先&#xff0c;需要将特定的GPIO引脚配置为输入模式&#xff0c;并设置为外部中断源。这通常通过…

Nexus3的妙用

nexus 3使用场景 Nexus是一个全能仓库,通过部署nexus可以实现包含yum、apt、Maven、pypi、docker等的多种仓库。以下是nexus的适用场景: 当公共仓库无法访问或缓慢时,搭建nexus。比如国内docker无法访问,需要镜像加速。可以使用海外主机部署nexus,在nexus中创建docker(p…

uniapp微信小程序遮罩层u-popup禁止底层穿透

添加 touchmove.prevent&#xff0c;遮罩层底部的页面就不会滑动了微信开发者工具不生效&#xff0c;真机生效 <u-popup :show"showEwm" close"closeEwm" mode"center" touchmove.prevent><view class"ewmshow"></vie…