探索 Flow51

《云之遥》分辨率修改工具v1.0绿色版

Flow51 Game Resource

游戏工具

《云之遥》分辨率修改工具v1.0绿色版

单机游戏功能调整 · 离线娱乐使用

由于《云之遥》自带的只有8个分辨率,导致部分无理想分辨率的机器上运行无法得到最完美的效果;本工具提供了分辨率修改功能,可以自己设置任意数值的分辨率!本工具采用了HookAPI外加Loader的形式来实现对屏幕分辨率内存数值的改写,采用HookAPI的而不采用Loader监视内存的原因在于这个数值修改必须在游戏程序完成相关初始化前完成,否则分辨率修改将无法成功!而同时,主程序采用了VMP加密,很明显

资源类型
游戏工具
原站更新时间
2024-02-01
下载热度
次浏览

功能与按键说明

由于《云之遥》自带的只有8个分辨率,导致部分无理想分辨率的机器上运行无法得到最完美的效果;本工具提供了分辨率修改功能,可以自己设置任意数值的分辨率!本工具采用了HookAPI外加Loader的形式来实现对屏幕分辨率内存数值的改写,采用HookAPI的而不采用Loader监视内存的原因在于这个数值修改必须在游戏程序完成相关初始化前完成,否则分辨率修改将无法成功!

而同时,主程序采用了VMP加密,很明显,直接修改代码是不现实的,只能通过在程序到达入口点后HookAPI来实现;当然,这一技术用在被SecuROM加密的简体版上是不可能的(由于SecuROM二次CreateProcess反调试,因此你找不到写内存的时机)
注意事项:
注意1:由于加密机制原因,本工具仅支持繁体版V2.3.0,不支持简体版!
注意2:请务必将本程序与游戏主程序放置于同一目录下。否则将导致本程序无法运行!
注意3:部分杀毒软件会提示“风险注入”,请务必允许并将本程序加入“信任列表”!
实现原理:
本程序Hook的API为kernel32.GetPrivateProfileIntA,Hook这个API的原因在于游戏程序是通过这个函数来读取game.ini获取分辨率设定值的,而这时Hook的并修改相应内存的话可以保证游戏程序中没有调用过分辨率宽高的设定值,SwdCF主程序中相关代码如下:

0040DDA48D44240Cleaeax,dwordptr[esp+C]
0040DDA850pusheax
0040DDA96A00push0
0040DDAB68D09D7900push00799DD0;ASCII"Resolution"
0040DDB068089E7900push00799E08;ASCII"SETUP"
0040DDB5FFD6callesi;kernel32.GetPrivateProfileIntA
0040DDB783F807cmpeax,7
0040DDBAA34C257E00movdwordptr[7E254C],eax
0040DDBF0F87B1000000ja0040DE76
0040DDC5FF248504DF4000jmpdwordptr[eax*4+40DF04]
0040DDCCC70550257E000>movdwordptr[7E2550],400
0040DDD6E991000000jmp0040DE6C
0040DDDBC70550257E000>movdwordptr[7E2550],500
0040DDE5C70554257E000>movdwordptr[7E2554],400
0040DDEFE982000000jmp0040DE76
0040DDF4C70550257E00A>movdwordptr[7E2550],5A0
0040DDFEC70554257E008>movdwordptr[7E2554],384
0040DE08EB6Cjmpshort0040DE76
0040DE0AC70550257E009>movdwordptr[7E2550],690
0040DE14C70554257E001>movdwordptr[7E2554],41A
0040DE1EEB56jmpshort0040DE76
0040DE20C70550257E008>movdwordptr[7E2550],780
0040DE2AC70554257E003>movdwordptr[7E2554],438
0040DE34EB40jmpshort0040DE76
0040DE36C70550257E008>movdwordptr[7E2550],780
0040DE40C70554257E00B>movdwordptr[7E2554],4B0
0040DE4AEB2Ajmpshort0040DE76
0040DE4CC70550257E000>movdwordptr[7E2550],500
0040DE56C70554257E002>movdwordptr[7E2554],320
0040DE60EB14jmpshort0040DE76
0040DE62C70550257E005>movdwordptr[7E2550],556
0040DE6CC70554257E000>movdwordptr[7E2554],300
0040DE768D4C240Cleaecx,dwordptr[esp+C]
0040DE7A51pushecx
0040DE7B6A20push20
0040DE7D68C49D7900push00799DC4;ASCII"ColorDepth"
0040DE8268089E7900push00799E08;ASCII"SETUP"
0040DE87FFD6callesi;kernel32.GetPrivateProfileIntA

由于在获取game.ini中分辨率Resolution数值后还继续读取了数据,因此HookGetPrivateProfileIntA的话,在40DE87这个CALL调用的时候,执行了我们预先已写好的内存改写代码,此时之前已被程序自身副赋值的宽(7E2550)与高(7E2554)将被新值覆盖,从而实现了修改屏幕分辨率这一功能。

以上为资源功能摘要与按键指引,请核对游戏版本和安全提示。

安装与使用须知

  1. 确认版本与平台

    比对游戏版本、资源版本及安装要求;版本不明时先停止安装。

  2. 保留可恢复的备份

    备份存档与即将替换的游戏文件。多个 MOD 或补丁一起使用时,先确认是否存在冲突。

  3. 确认允许的使用范围

    修改器只用于游戏及平台允许修改的单机离线环境,不用于破坏联机公平性,支持正版游戏!