【简介】由于《云之遥》自带的只有8个分辨率,导致部分无理想分辨率的机器上运行无法得到最完美的效果;本工具提供了分辨率修改功能,可以自己设置任意数值的分辨率!
注意1:由于加密机制原因,本工具仅支持繁体版V2.3.0,不支持简体版!
注意2:请务必将本程序与游戏主程序放置于同一目录下。否则将导致本程序无法运行!
注意3:部分杀毒软件会提示“风险注入”,请务必允许并将本程序加入“信任列表”!
本工具采用了Hook API外加Loader的形式来实现对屏幕分辨率内存数值的改写,采用Hook API的而不采用Loader监视内存的原因在于这个数值修改必须在游戏程序完成相关初始化前完成,否则分辨率修改将无法成功!
而同时,主程序采用了VMP加密,很明显,直接修改代码是不现实的,只能通过在程序到达入口点后Hook API来实现;当然,这一技术用在被SecuROM加密的简体版上是不可能的(由于SecuROM二次CreateProcess反调试,因此你找不到写内存的时机)
本程序Hook的API为kernel32.GetPrivateProfileIntA,Hook这个API的原因在于游戏程序是通过这个函数来读取game.ini获取分辨率设定值的,而这时Hook的并修改相应内存的话可以保证游戏程序中没有调用过分辨率宽高的设定值,SwdCF主程序中相关代码如下:
0040DDA4 8D4424 0C lea eax, dword ptr [esp+C]
0040DDA8 50 push eax
0040DDA9 6A 00 push 0
0040DDAB 68 D09D7900 push 00799DD0 ; ASCII "Resolution"
0040DDB0 68 089E7900 push 00799E08 ; ASCII "SETUP"
0040DDB5 FFD6 call esi ; kernel32.GetPrivateProfileIntA
0040DDB7 83F8 07 cmp eax, 7
0040DDBA A3 4C257E00 mov dword ptr [7E254C], eax
0040DDBF 0F87 B1000000 ja 0040DE76
0040DDC5 FF2485 04DF4000 jmp dword ptr [eax*4+40DF04]
0040DDCC C705 50257E00 0> mov dword ptr [7E2550], 400
0040DDD6 E9 91000000 jmp 0040DE6C
0040DDDB C705 50257E00 0> mov dword ptr [7E2550], 500
0040DDE5 C705 54257E00 0> mov dword ptr [7E2554], 400
0040DDEF E9 82000000 jmp 0040DE76
0040DDF4 C705 50257E00 A> mov dword ptr [7E2550], 5A0
0040DDFE C705 54257E00 8> mov dword ptr [7E2554], 384
0040DE08 EB 6C jmp short 0040DE76
0040DE0A C705 50257E00 9> mov dword ptr [7E2550], 690
0040DE14 C705 54257E00 1> mov dword ptr [7E2554], 41A
0040DE1E EB 56 jmp short 0040DE76
0040DE20 C705 50257E00 8> mov dword ptr [7E2550], 780
0040DE2A C705 54257E00 3> mov dword ptr [7E2554], 438
0040DE34 EB 40 jmp short 0040DE76
0040DE36 C705 50257E00 8> mov dword ptr [7E2550], 780
0040DE40 C705 54257E00 B> mov dword ptr [7E2554], 4B0
0040DE4A EB 2A jmp short 0040DE76
0040DE4C C705 50257E00 0> mov dword ptr [7E2550], 500
0040DE56 C705 54257E00 2> mov dword ptr [7E2554], 320
0040DE60 EB 14 jmp short 0040DE76
0040DE62 C705 50257E00 5> mov dword ptr [7E2550], 556
0040DE6C C705 54257E00 0> mov dword ptr [7E2554], 300
0040DE76 8D4C24 0C lea ecx, dword ptr [esp+C]
0040DE7A 51 push ecx
0040DE7B 6A 20 push 20
0040DE7D 68 C49D7900 push 00799DC4 ; ASCII "ColorDepth"
0040DE82 68 089E7900 push 00799E08 ; ASCII "SETUP"
0040DE87 FFD6 call esi ; kernel32.GetPrivateProfileIntA
由于在获取game.ini中分辨率Resolution数值后还继续读取了数据,因此Hook GetPrivateProfileIntA的话,在40DE87这个CALL调用的时候,执行了我们预先已写好的内存改写代码,此时之前已被程序自身副赋值的宽(7E2550)与高(7E2554)将被新值覆盖,从而实现了修改屏幕分辨率这一功能。
- 简易使用说明 -
*本工具只支持繁体版V2.3.0!
1、首先,请将本工具复制到《云之遥》游戏目录中(即与SwdCF.exe在同一目录),本工具必须放置于游戏目录下才能运行!
2、然后,运行本工具即可见到主界面,在两个文本框中填入你想设置的画面宽与高,如要全屏进行游戏,勾上“全屏模式”即可。
3、点击“启动游戏”即可。
创建Applocale区域模拟兼容快捷方式请见左边目录中的“Applocale区域模拟兼容设置方法”。
如果使用过程中遇到了什么问题,请先阅读左边目录中的“疑难解答”寻找解决方案。
- 启动参数说明 -
本工具提供命令参数启动模式(即直接通过快捷方式,自动以想要的分辨率启动游戏而无需选择)
参数命令如下:
SwdCF_FreeResolution.exe /w=(宽度) /h=(高度) [/h=(是否全屏)]
/w和/h为必选参数,值即为游戏的画面分辨率相应数值
/h为可选参数,值只能是0和1,0为非全屏模式,1为全屏模式;若不设置,则默认非全屏模式
注意:如果程序检测到参数缺少或不合法,程序将自动忽略参数,显示主窗口
Applocale区域模拟兼容设置方法 -
以下为简体系统兼容Applocale区域模拟(设置标楷体字体)的快捷方式设置方法
1、首先,将本程序放置于游戏目录下,打开Applocale
2、在设置“启动应用程序”时,“您应用Applocale的应用程序”请选择本程序SwdCF_FreeResolution.exe
参数请按如下规则进行填写(注意空格!):
/w=(画面宽度) /h=(画面高度) /f=(全屏写1窗口写0)
举例:
A.假设我想开启1600x900的全屏模式,那么参数应该这样填写(注意空格!):
/w=1600 /h=900 /f=1
B.假设我想开启800x600的窗口模式,那么参数应该这样填写(注意空格!),示例如下图:
/w=800 /h=600 /f=0
3、程序与参数均设置好以后,选择下一步,应用程序的语言请选择“中文(繁体)”
4、选择下一步,勾上“创建快捷方式”,以后就从Applocale创建出来的快捷方式进入即可。
- 疑难解答 -
1、程序提示“请先将本程序放置于游戏目录下,再执行本程序!”
答:请将本程序放置于云之遥的游戏目录(即与SwdCF.exe在同一目录下)再执行本程序!
2、程序提示“无法识别的游戏版本!”
答:由于加密机制的原因,因此本工具只能用于繁体版,简体版不能使用!若你确实安装的是台版但扔出现此提示,请确保你的游戏版本是“V2.3.0”!
3、分辨率修改没有生效,仍然为原分辨率
答:请检查防火墙(360安全卫士、金山卫士)的设置!为了确保本程序能正常工作,请务必将本程序加入信任列表!
发布日期 | 点击标题下载 | 对应游戏版本 | 说明 |
---|---|---|---|
2012.05.12 | 轩辕剑外传:云之遥繁体版v2.3.0分辨率修改器 | - | - |