ERA脚本似乎从虚拟地址00A90D60开始写入(00A90D60这个决定脚本开始地址的值,大约在h3era.exe启动后不久被写到虚拟地址27F9548中),限制最多写入30000000(16进制是01C9C380)字节的数据(也是程序启动不久被写到虚拟地址27F9958),00A90D60+01C9C380=272D0E0,h3era.exe文件的.data区段中大约在虚拟地址2935FAF后为未分配的内存(不能读写和访问),在272D0E0-2935FAF之间可能是其它数据或内存对齐带来的额外空间。 因此要扩展脚本在内存中的大小,可以让h3era.exe文件分配新的空间,作为脚本转移后的存放处,并修改写入数据大小的限制。 这里,我们来扩展PE文件中.data区段的大小,并将脚本地址移动到该区段后面的空间 首先使用工具loadPE选择PE编辑器,打开h3era.exe,选择区段,右键第2个.data那行,选择编辑区段,修改虚拟大小 我们扩大到051AE12C 确定,关闭区段表,保存,确定。这样,启动h3era.exe后,2935FAF地址后的一段内存(大约从2935FAF到5936000)就被分配内存,可以读写了。 之后我们修改EXE,让脚本地址转移到这部分只供我们自己用的内存空间,并扩大数据量写入限制(不要超过新分配内存区域的最大地址)。 选一个文本编辑工具,这里我使用HxDen,选文件-打开,打开h3era.exe,按Ctrl+F快捷键打开Find(查找)功能,datatype选择Hex-values(十六进制),输入600DA900(就是我们要找的00A90D60,数据存放顺序是逆序,因此要反着填)并勾上ALL,如图 来到此处 修改选择的4个字节的值来达成转移脚本开始地址的目的,可以右键选择的这4个字节,选择Fill selection(填充选择),就选择从2960000开始好了,按图输入 作为数值,当然也是反着输,OK,再按同样方法,查找替换30000000(十六进制01C9C380),发现其实就在上面搜索结果的后面几个字节,把这个数值修改的大一些,例如2C9C380(十进制46777216,多了16M呢),但不能超过分配的内存空间(数据大小<可读写的内存空间,我们这里是2C9C380要小于5936000-2960000,都是16进制数值),结果如图 然后点击快捷工具栏里的保存按钮就改好了,最好改之前备份一下 但测试方面我就没那么多脚本方便测试了.. PS,好久没来,自己之前写的都看不懂了好啦,我又去玩别的去了 应贤知要求,放上一个成品供参考、测试或围观(脚本开始地址被移动到2960000,大小限制被扩大到12C9C380,h3era.exe的第2个.data区段的虚拟大小被扩大到151AE12C),比起原来约能多放13M左右的脚本(原来限制30000000字节,实际能放的脚本大小也远小于30M,可能ERA还加了好多数据进去),因为载入量变大了好多,载入就会变慢点的 https://pan.baidu.com/s/1o7Zvq0y 提取码:t142 由于上面链接的改的过大,超过wogeditor在进程地址空间搜索结构特征码的算法范围,因此改小一点以适应wogeditor 更新后的文件(脚本开始地址被移动到2960000,大小限制被扩大到07C9C380,h3era.exe的第2个.data区段的虚拟大小被扩大到0A1AE12C,自测能用wogeditor2.51),多4M左右的脚本,链接如下(失效不补) https://pan.baidu.com/s/1miqus5q 提取码:kpq6 h3era(扩容4M).zip h3era(扩容13M).zip |
XEricSin 发表于 2017-12-8 20:19
高端。有个疑问。这样改了之后,现有的关于直接修改和读取内存的函数会受到影响吗?
2568188733 发表于 2017-12-10 11:01
测试已知 训练者 MOD无效。会出错弹出。大概是修改内存的会造成错误。
老号被冻结-无奈 发表于 2017-12-9 05:21
成功修改,谢谢楼主分享知识.正愁这30M问题之时就看到楼主神贴,想必是老天在帮我.扯远了
sakuya452 发表于 2017-12-10 12:22
我对WOG很多地方了解的少,并不了解训练者MOD,于是去查了下,好像是个游戏内置修改器的MOD
原理上, ...
sakuya452 发表于 2017-12-10 12:22
我对WOG很多地方了解的少,并不了解训练者MOD,于是去查了下,好像是个游戏内置修改器的MOD
原理上, ...
2568188733 发表于 2017-12-10 15:30
大概是我这里的问题。可以的话请大神帮忙看看。是什么情况。
sakuya452 发表于 2017-12-10 16:41
自测了下,这个MOD在原本的h3era.exe就会有出错跳出的情况,具体没仔细研究(我都把命令忘光了啊..要检查 ...
WoG中文站 ( 辽B2-20210485-10 )|辽公网安备 21128202000228 号
GMT+8, 2024-12-27 08:24 , Processed in 0.187467 second(s), 13 queries , Gzip On, File On.
Powered by Discuz! X3.4
Copyright © 2004-2022, Beijing Second Sight Technology Co., LTD.