封魔2

英雄无敌3-WoG中文站

 找回密码
 英雄注册|Register

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

2019-7-29 19:05| 发布者: yunings| 查看: 2719| 评论: 97|原作者: 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

鲜花

握手

雷人

路过

鸡蛋
发表评论

最新评论

引用 XEricSin 2017-12-8 20:19
高端。有个疑问。这样改了之后,现有的关于直接修改和读取内存的函数会受到影响吗?
引用 sakuya452 2017-12-8 21:52
XEricSin 发表于 2017-12-8 20:19
高端。有个疑问。这样改了之后,现有的关于直接修改和读取内存的函数会受到影响吗?

应该没影响吧,估计的:D因为移动的是脚本的存放地方,而且是用的未定义的内存区域

我测的时候,是通过复制N遍同一个脚本来撑脚本大小的
引用 贤知有您 2017-12-9 08:35
感谢内存修改大师的杰作,楼主来无影去无踪,一出来就给大家一份大礼。大家多点测试看看效果如何。
引用 贤知有您 2017-12-9 08:37
话说楼主放个成品出来吧,毕竟大家都不熟悉这些工具
引用 canary 2017-12-9 13:17
厉害了~这真是粗大腿,给我抱抱!
引用 龙巫妖 2017-12-9 15:27
哇 这下有福了 好多鱼和熊掌的问题可以解决了 希望有大大继续研究 再次基础上整合优秀mod
引用 darklans 2017-12-9 17:35
围观一下牛人
引用 大舅是木头 2017-12-9 17:44
我又看到了WOG论坛的希望。
引用 点额鲤 2017-12-10 08:38
这个不明觉厉呀,支持一波。
引用 gigichart 2017-12-10 10:01
试了下,有效。
引用 2568188733 2017-12-10 11:01
测试已知 训练者 MOD无效。会出错弹出。大概是修改内存的会造成错误。
引用 sakuya452 2017-12-10 12:22
本帖最后由 sakuya452 于 2017-12-27 12:54 编辑
2568188733 发表于 2017-12-10 11:01
测试已知 训练者 MOD无效。会出错弹出。大概是修改内存的会造成错误。

我对WOG很多地方了解的少,并不了解训练者MOD,于是去查了下,好像是个游戏内置修改器的MOD

原理上,脚本移位一般不会有问题,但ERA内置直接访问或读写内存的命令,如果有些脚本或MOD里面,含有对原先脚本区域地址的访问或读写语句以使用这区域中的值(奇怪的写法用来表示自己的掌握能力?),例如UN:C11080008/4/12345之类的使用这区域中的数值,可能就会造成逻辑错误,因为从00A90D60到272D0E0这块原来的脚本区域已经不用了

既然是内置修改器的MOD,我猜里面可能就有这样的语句,在其它更合适的扩大脚本大小方法出来前,我觉得去修改出错MOD的逻辑更好

不过,还是希望你附上出错的提示框啦(我自己加载训练者MOD没出错也没无效啊..)
引用 sakuya452 2017-12-10 13:48
本帖最后由 sakuya452 于 2017-12-10 13:50 编辑
老号被冻结-无奈 发表于 2017-12-9 05:21
成功修改,谢谢楼主分享知识.正愁这30M问题之时就看到楼主神贴,想必是老天在帮我.扯远了

忍不住使用下不擅长的吐槽技能,这帖某种意义上是迟到了的,老天一定还是一名合格的围观群众
引用 2568188733 2017-12-10 15:29
sakuya452 发表于 2017-12-10 12:22
我对WOG很多地方了解的少,并不了解训练者MOD,于是去查了下,好像是个游戏内置修改器的MOD

原理上, ...

Time Stamp: Sun Dec 10 07:29:32 2017


Map Saved with:

WoG Version: 3 . 59
Built on Dec 12 2005

******************************_Exception_(trace_details)_******************************
### Location: 1 : 59
### Location: 1 : 58
### Location: 1 : 50
### Location: 1 : 554
***** Context (100 chars) *****
;
!!DL550:N^trainer.txt^;
!!HEy1:Ed/?y2;
!!SN:W^Val_Herolvl^/y2;
!!SN:W^Val_Levelcounter^/0; set co
***********************
### Location: 1 : 59
### Location: 1 : 58
### Location: 1 : 50
### Location: 1 : 1669
***** Context (100 chars) *****
;
!!VRx1:+4;
!!UN:Cx1/4/?y2;
!!VRx2:*512+9597416;
!!VRx3:*512+9597416;
!!DO31872/1/512/1:Py1/x2 Py2
***********************

EIP = {0x182E2654},  Access Violation. Attempt to {read} the inaccessible data at {0x2D369D20}

The Latest Executed ERM Receiver:

UN:Cx1/4/?y1;
!!VRx1:+4;
!!UN:Cx1/4/?y2;
!!VRx2:*512+9597416;
!!VRx3:*512+9597416;
!!DO31872/1/512

Register Context:


EAX = 0x2D369D20
EBX = 0x185C2D6C
ECX = 0x00000004
EDX = 0x00287594
ESI = 0x000001FF
EDI = 0x00000100
EBP = 0x002875B8
ESP = 0x002874C8

Stack Frame:

0x002874C8 : 0x00000100
0x002874CC : 0x000001FF
0x002874D0 : 0x185C2D6C
0x002874D4 : 0x000001FF
0x002874D8 : 0x185C2D6C
0x002874DC : 0x00000009
0x002874E0 : 0x00287518
0x002874E4 : 0x0073E765
0x002874E8 : 0x00000100
0x002874EC : 0x000001FF
0x002874F0 : 0x00000100
0x002874F4 : 0x000001FF
0x002874F8 : 0x00287520
0x002874FC : 0x00287510
0x00287500 : 0x185C2D6C
0x00287504 : 0x00000009
0x00287508 : 0x00287820
0x0028750C : 0x00287A3C
0x00287510 : 0x00000100
0x00287514 : 0x00000002
0x00287518 : 0x185C2D6C
0x0028751C : 0x00000008
0x00287520 : 0x00287588
0x00287524 : 0x0073F36B
0x00287528 : 0x00000100
0x0028752C : 0x000001FF
0x00287530 : 0x185C2D6C
0x00287534 : 0x00000000
0x00287538 : 0x00000000
0x0028753C : 0x00000002
0x00287540 : 0x00000000
0x00287544 : 0x00000000
0x00287548 : 0x00000000
0x0028754C : 0x00000000
0x00287550 : 0x00000000
0x00287554 : 0x00000031
0x00287558 : 0x01310000
0x0028755C : 0x0000000A
0x00287560 : 0x00287ABE
0x00287564 : 0x00000100
0x00287568 : 0x000001FF
0x0028756C : 0x00287594
0x00287570 : 0x00287584
0x00287574 : 0x185C2D6C
0x00287578 : 0x00287820
0x0028757C : 0x0000003B
0x00287580 : 0x00000001
0x00287584 : 0x00000100
0x00287588 : 0x000001FF
0x0028758C : 0x185C2D6C
0x00287590 : 0x00000007
0x00287594 : 0x00000004
0x00287598 : 0x0073FDAB
0x0028759C : 0x00000100
0x002875A0 : 0x000001FF
0x002875A4 : 0x185C2D6C
0x002875A8 : 0x01000063
0x002875AC : 0x2D369D20
0x002875B0 : 0x002875C4
0x002875B4 : 0x0073FDD7
0x002875B8 : 0x00287B20
0x002875BC : 0x00749416
0x002875C0 : 0x00287843
0x002875C4 : 0x00000003
0x002875C8 : 0x0447AACE
0x002875CC : 0x00287820
0x002875D0 : 0x00000100
0x002875D4 : 0x000001FF
0x002875D8 : 0x185C2D6C
0x002875DC : 0x15E07D98
0x002875E0 : 0x15E08B50
0x002875E4 : 0x00000000
0x002875E8 : 0x00000000
0x002875EC : 0x40000000
0x002875F0 : 0x15E07D98
0x002875F4 : 0x00287614
0x002875F8 : 0x00004E55
0x002875FC : 0x00000001
0x00287600 : 0x00000000
0x00287604 : 0x00000000
0x00287608 : 0x00000002
0x0028760C : 0x00000000
0x00287610 : 0x00000000
0x00287614 : 0x0028763C
0x00287618 : 0x00000000
0x0028761C : 0x00000000
0x00287620 : 0x17E90004
0x00287624 : 0x15D80000
0x00287628 : 0x0028765C
0x0028762C : 0x775F8558
0x00287630 : 0x15D80138
0x00287634 : 0x17E90000
0x00287638 : 0x15DCF0E8
0x0028763C : 0x775F8558
0x00287640 : 0x15D80138
0x00287644 : 0x17E90030
0x00287648 : 0x002876E4
0x0028764C : 0x00000000
0x00287650 : 0x00000000
0x00287654 : 0x17E90004
0x00287658 : 0x15D80000
0x0028765C : 0x00287690
0x00287660 : 0x775F8558
0x00287664 : 0x15D80138
0x00287668 : 0x17E90000
0x0028766C : 0x15DCF0E8
0x00287670 : 0x775F8558
0x00287674 : 0x15D80138
0x00287678 : 0x17E90030
0x0028767C : 0x00287720
0x00287680 : 0x00000001
0x00287684 : 0x0028766C
0x00287688 : 0x002876D0
0x0028768C : 0x0028769C
0x00287690 : 0x002876D0
0x00287694 : 0x75F655F2
0x00287698 : 0x15D80000
0x0028769C : 0x75F65608
0x002876A0 : 0x239D6234
0x002876A4 : 0x765F6FFE
0x002876A8 : 0x15DCF0E8
0x002876AC : 0x0000000B
0x002876B0 : 0x239D6204
0x002876B4 : 0x00000001
0x002876B8 : 0x002876A0
0x002876BC : 0x0028770C
0x002876C0 : 0x002876D0
0x002876C4 : 0x76941DB3
0x002876C8 : 0x15DCF0EC
0x002876CC : 0x15DCF0E8
0x002876D0 : 0x002876E0
0x002876D4 : 0x76941ED8
0x002876D8 : 0x15DCF0E8
0x002876DC : 0x0028770C
0x002876E0 : 0x002876EC
0x002876E4 : 0x74F66276
0x002876E8 : 0x0033042D
0x002876EC : 0x00287730
0x002876F0 : 0x74F6625C
0x002876F4 : 0x0033042D
0x002876F8 : 0x00000000
0x002876FC : 0x74F6467C
0x00287700 : 0x00000282
0x00287704 : 0x74F641B5
0x00287708 : 0x00000000
0x0028770C : 0x74F64224
0x00287710 : 0x15E08340
0x00287714 : 0x0033042D
0x00287718 : 0x00000000
0x0028771C : 0x00000000
0x00287720 : 0x74F64224
0x00287724 : 0x15D82D18
0x00287728 : 0x17E90034
0x0028772C : 0x00000000
0x00287730 : 0x00287760
0x00287734 : 0x00000000
0x00287738 : 0x00000000
0x0028773C : 0x74F641B5
0x00287740 : 0x0000000B
0x00287744 : 0x00000000
0x00287748 : 0x00000000
0x0028774C : 0x765F6CE9
0x00287750 : 0x765F6D91
0x00287754 : 0x76660230
0x00287758 : 0x00000001
0x0028775C : 0x00000000
0x00287760 : 0x0028778C
0x00287764 : 0x765F62FA
0x00287768 : 0x000305F0
0x0028776C : 0x00000282
0x00287770 : 0x0000000B
0x00287774 : 0x00000000
0x00287778 : 0x74F641B5
0x0028777C : 0xDCBAABCD
0x00287780 : 0x00000000
0x00287784 : 0x00000000
0x00287788 : 0x74F641B5
0x0028778C : 0x0028779C
0x00287790 : 0x002877B8
0x00287794 : 0x76660230
0x00287798 : 0x15DCF0EC
0x0028779C : 0x00287804
0x002877A0 : 0x765F6D91
0x002877A4 : 0x765F6D51
0x002877A8 : 0x239A7ACF
0x002877AC : 0x00000282
0x002877B0 : 0x163C32F0
0x002877B4 : 0x00000042
0x002877B8 : 0x00000024
0x002877BC : 0x00000001
0x002877C0 : 0x00000000
0x002877C4 : 0x00000000
0x002877C8 : 0x00000070
0x002877CC : 0xFFFFFFFF
0x002877D0 : 0xFFFFFFFF
0x002877D4 : 0x765F6CE9
0x002877D8 : 0x765F6D91
0x002877DC : 0x765F62FA
0x002877E0 : 0x00000001
0x002877E4 : 0x00000000
0x002877E8 : 0x00000000
0x002877EC : 0x002877A8
0x002877F0 : 0x00000002
0x002877F4 : 0x00287974
0x002877F8 : 0x7665A6B6
0x002877FC : 0x55ED6F93
0x00287800 : 0x43FFFFFE
0x00287804 : 0x00000000
0x00287808 : 0x765F965E
0x0028780C : 0x00004E55
0x00287810 : 0x74F641B5
0x00287814 : 0x000305F0
0x00287818 : 0x00000282
0x0028781C : 0x0000000B
0x00287820 : 0x00000009
0x00287824 : 0x22DB0D30
0x00287828 : 0x0000000A
0x0028782C : 0x163C32F0
0x00287830 : 0x15DEA340
0x00287834 : 0x00000000
0x00287838 : 0x163CE6E0
0x0028783C : 0x00000000
0x00287840 : 0x000305F0
0x00287844 : 0x00000000
0x00287848 : 0x00287874
0x0028784C : 0x765FD692
0x00287850 : 0x163C32F0
0x00287854 : 0x00000000
0x00287858 : 0x74F641B5
0x0028785C : 0x00287874
0x00287860 : 0x765FD69B
0x00287864 : 0x15DEA340
0x00287868 : 0x00000000
0x0028786C : 0x15DEA318
0x00287870 : 0x00000282
0x00287874 : 0x00287898
0x00287878 : 0x765FD762
0x0028787C : 0x15DEA318
0x00287880 : 0x00000282
0x00287884 : 0x0000000B
0x00287888 : 0x00000000
0x0028788C : 0x00000000
0x00287890 : 0x163CE560
0x00287894 : 0x00000282
0x00287898 : 0x002878C0
0x0028789C : 0x765FD71E
0x002878A0 : 0x15DEA318
0x002878A4 : 0x00000282
0x002878A8 : 0x0000000B
0x002878AC : 0x00000000


SEND THIS DUMP OR FILE "WOGCRASHLOG.TXT" (ZIPPED) TO {H3NL@NAROD.RU}
引用 2568188733 2017-12-10 15:30
sakuya452 发表于 2017-12-10 12:22
我对WOG很多地方了解的少,并不了解训练者MOD,于是去查了下,好像是个游戏内置修改器的MOD

原理上, ...

大概是我这里的问题。可以的话请大神帮忙看看。是什么情况。
引用 ming851127 2017-12-10 15:40
牛逼!这个贴如果实现对这个游戏不亚于发现美洲大陆!持续关注大佬的下一步的发帖!
引用 sakuya452 2017-12-10 16:41
2568188733 发表于 2017-12-10 15:30
大概是我这里的问题。可以的话请大神帮忙看看。是什么情况。

自测了下,这个MOD在原本的h3era.exe就会有出错跳出的情况,具体没仔细研究(我都把命令忘光了啊..要检查就要回去补..)

这是那个MOD自身的问题,有条语句的算法错了,访问到未定义的内存

只想说,我......我不是打工的,可以的话请用原版的启动程序对比测试
引用 2568188733 2017-12-10 16:52
sakuya452 发表于 2017-12-10 16:41
自测了下,这个MOD在原本的h3era.exe就会有出错跳出的情况,具体没仔细研究(我都把命令忘光了啊..要检查 ...

嗯嗯。总之还是感谢大神的成果。赞!!!!
引用 canary 2017-12-10 19:00
金大腿,还有个突破四维上限的任务等待您

查看全部评论(97)

关注我们,英3Mod一网打尽!

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.

返回顶部