WoG英雄无敌III 中文论坛

 找回密码
 英雄注册|Register

脚本30M限制解除方法的尝试

2019-7-29 19:05| 发布者: yunings| 查看: 261| 评论: 0|原作者: sakuya452

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那行,选择编辑区段,修改虚拟大小
QQ图片20171208182533.jpg
我们扩大到051AE12C
QQ图片20171208182916.jpg
确定,关闭区段表,保存,确定。这样,启动h3era.exe后,2935FAF地址后的一段内存(大约从2935FAF到5936000)就被分配内存,可以读写了。
之后我们修改EXE,让脚本地址转移到这部分只供我们自己用的内存空间,并扩大数据量写入限制(不要超过新分配内存区域的最大地址)。
选一个文本编辑工具,这里我使用HxDen,选文件-打开,打开h3era.exe,按Ctrl+F快捷键打开Find(查找)功能,datatype选择Hex-values(十六进制),输入600DA900(就是我们要找的00A90D60,数据存放顺序是逆序,因此要反着填)并勾上ALL,如图
QQ图片20171208184515.jpg
来到此处
QQ图片20171208184715.jpg
修改选择的4个字节的值来达成转移脚本开始地址的目的,可以右键选择的这4个字节,选择Fill selection(填充选择),就选择从2960000开始好了,按图输入
QQ图片20171208185159.jpg
作为数值,当然也是反着输,OK,再按同样方法,查找替换30000000(十六进制01C9C380),发现其实就在上面搜索结果的后面几个字节,把这个数值修改的大一些,例如2C9C380(十进制46777216,多了16M呢),但不能超过分配的内存空间(数据大小<可读写的内存空间,我们这里是2C9C380要小于5936000-2960000,都是16进制数值),结果如图
QQ图片20171208191542.jpg
然后点击快捷工具栏里的保存按钮就改好了,最好改之前备份一下

但测试方面我就没那么多脚本方便测试了..

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

鲜花

握手

雷人

路过

鸡蛋

手机版|小黑屋|WoG英雄无敌中文站    

GMT+8, 2019-8-22 09:04 , Processed in 0.249207 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.3

返回顶部