82.游戏改造-修改分辨率

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

内容参考于:易道云信息技术研究院

https://note.youdao.com/s/78wv3qT4(TLS)

上一个内容:81.游戏改造-确定SetDisplayMode函数地址

确定的内存地址作用:

43D740是窗口化,类型是unsigned,准确说应该是bool类型,true(值是1)是全屏,false(值是0)窗口化

43D75C是Direct指针,类型是unsigned

4391F8是色深,类型是unsigned

4391FC是色深,类型是unsigned

4391F0是屏幕高度,分辨率,类型是unsigned

4391EC是屏幕宽度,分辨率,类型是unsigned

首先来到下图红框位置,这里是游戏调用 SetDisplayMode函数的地方

然后跟进 SetDisplayMode函数里面打断点进行分析

SetDisplayMode函数分析1

SetDisplayMode函数分析2

使用CheatEngine查看分辨率何时修改的发现分辨率的值已经存在看下图红框已经有了480和640这数了,但是我们是在入口点打的断点,这说明这游戏在硬件层面就设置好了,有两种情况一种是在TLS段中修改了,第二种是在编译的时候把全局变量的值写到了pe中

给分辨率的内存地址下写入断点,看看它是在哪修改的

然后断点到修改分辨率的代码上,但是这里的值也都是传进来的,所以俺ctrl + f9让OllyDbg工具运行到这个方法返回的地方,应该是一共按一次 ctrl + f9 和 一次f8就可以了

然后就来到了分辨率写死的地方

然后把它们修改成 1024 * 768的分辨率

然后选择复制到可执行文件

然后选全部复制

然后选择保存数据到文件

注意把所有断点全部都取消掉,不取消可能会打不开,然后把备份好的文件放到游戏的目录中,就可以用了,注意它备份好的文件不是快捷方式而是pe文件一定要放在与游戏原本的启动程序一样的目录下


相关推荐
Chester_19993 小时前
CSP202203C.计算资源调度器
开发语言·数据结构·c++·蓝桥杯
会周易的程序员4 小时前
给 PLC 写一个字节码虚拟机:STVM 虚拟机架构设计
开发语言·c++·虚拟机·软plc·iec61131·stvm
小灰灰搞电子5 小时前
完全驾驭 Qt 与数据库:C++ ORM 框架 QxOrm 原理与实践指南
数据库·c++·qt
QT界面美化性能优化5 小时前
QT+AI:使用AI技术为QT应用程序赋能
c++·人工智能·qt·opencv·qt教程·qt6.3
学习星球7 小时前
单调栈——从“找下一个更大的“到柱状图中的最大矩形
数据库·c++·算法·leetcode·xcode
小灰灰搞电子8 小时前
C++ 引用折叠详解
c++
布莱克6058 小时前
数组详解:定义、作用、应用场景及与链表的区别(C/C++ 代码讲解)
c语言·开发语言·c++·数组
牛油果子哥q9 小时前
C++内存池与对象池精讲:内存碎片、自定义分配器、对象池实现、STL allocator原理、工程落地与性能对比
java·开发语言·c++
万法若空10 小时前
C/C++ 类型别名定义方式对比
java·c语言·c++
小小晓.11 小时前
C++ 值类别与完美转发深度剖析:从左值右值到 std::forward 源码解密
开发语言·c++·算法