佳丽云

英雄无敌3-WoG中文站

 找回密码
 英雄注册|Register
查看: 4950|回复: 17

看了ERA API引发的思考

[复制链接]

该用户从未签到

138

回帖

14万

金币

1

精华

4级 Famous Hero

Rank: 4

积分
1319

杰出贡献TE联赛殿军

发表于 2013-1-24 08:15:51 | 显示全部楼层 |阅读模式
今天晚上看了下ERA帮助里面的API小节,原来所谓的ERA SDK就1个era.h,包含了一个命名空间以及若干angel.dll导出函数的定义。不是我贪心,真的,这尼玛的不得不吐槽啊。在给的例子里面ApiHook最后一个CodeAddr的参数还用了个硬编码地址。关于触发器硬编码地址的问题,我用谷歌搜索了下,发现除了俄罗斯一论坛有个讨论帖子以外就没有其他资料可循了。根据API的功能总结了下,要实现复杂的功能必须依赖于DLL处在游戏进程空间这个条件来修改内存。沧海在回复我帖子的时候提过这个问题,仔细一看尼玛还真蛋碎啊。
目前来看有几个问题要解决:
1:API的详细的用法。另外我英文不好,希望有英文好的翻译一下那个环节,谢谢了。
2:硬编码地址的寻找。即便用OD这样的动态调试器也不见得能够有效的找出它们。
3:内存地址随机化问题。win7默认没有强制所有程序地址随机化,但是估计后来的系统会这样。还有就是win7可能也会做这样的设置,那时候这些dll里面的硬编码地址都会失效,想想什么后果。
4:人力资源问题。虽然是业余写写,但是还是希望有几个人可以在网上商量沟通。
我也做了个例子,点击指挥官图标事件的。
编译器:VC++6
1)创建一个简单DLL工程
2)配置inlucde目录加上TOOLS/ERA/SDK
3)输入代码编译组建
4)拷贝文件到eraplugins

  1. #include "stdafx.h"
  2. #include "era.h"
  3. #include <stdio.h>
  4. using namespace Era;
  5. void __stdcall OnOpenCommanderWindow_Handler(TEvent* Event) //点击指挥官图标操作器
  6. {
  7. ExecErmCmd("IF:M^梦魇骑士你乱点指挥官,我要划圈圈诅咒你^;");
  8. }
  9. extern "C" __declspec(dllexport) BOOL APIENTRY DllMain(
  10.      HANDLE hModule,
  11.                     DWORD  ul_reason_for_call,
  12.                     LPVOID lpReserved)
  13. {
  14. if(ul_reason_for_call != DLL_PROCESS_ATTACH) return TRUE; //不是attach到进程则直接返回
  15. ConnectEra(); //加载angel.dll并导出函数地址以备用,详见era.h
  16. RegisterHandler(OnOpenCommanderWindow_Handler, "OnOpenCommanderWindow"); //注册

  17.     return TRUE;
  18. }
复制代码
未命名.jpg

评分

2

查看全部评分

  • TA的每日心情
    开心
    2020-9-19 16:27
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]火元素使者

    9896

    回帖

    64万

    金币

    19

    精华

    管理员

    风侠

    Rank: 12Rank: 12Rank: 12

    积分
    52327

    论坛元老魅力之星封魔玩家

    发表于 2013-1-24 08:29:25 | 显示全部楼层
    本来想研究研究ERA结构,一看这阵式,估计只能研究ERA的使用了。我只懂一点点VB编程,不懂dll。不过,以前的中文插件都是深入dll才做出来的。
  • TA的每日心情
    奋斗
    2015-1-22 08:29
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]野猪

    919

    回帖

    1万

    金币

    1

    精华

    论坛嘉宾

    掘坑者的铁锹

    Rank: 9Rank: 9Rank: 9

    积分
    1522

    退役版主

    发表于 2013-1-24 08:35:45 | 显示全部楼层
    本来SOD就是95时代的遗老遗少,指望能在硬编码上倒腾出新花样来纯粹是和自己过不去。
    而且我有一帖说过了,因为当时的技术限制SOD用了很多不得已而为之的蠢办法,结果就是WOG也跟着倒霉。
    所以,严格来说,与其试图继续在SOD的基础上作文章,反倒不如重起炉灶新作一个程序调用资源。本来LUA的359是有点希望……
    至于ERA么,本质上还是没有脱离WOG的范围。
    某真祖的酒馆留言簿:据说在诅咒之地上作战时,怪物强化III无法完全生效。
    某真祖的酒馆留言簿:魔镜大法能使一些生物施法无效但不能反射。

    该用户从未签到

    138

    回帖

    14万

    金币

    1

    精华

    4级 Famous Hero

    Rank: 4

    积分
    1319

    杰出贡献TE联赛殿军

     楼主| 发表于 2013-1-24 09:07:22 | 显示全部楼层
    个人觉得这是时间精力的问题,既然别人老外能写出插件,难道我们就不可以吗。只是这活太费力罢了。
  • TA的每日心情
    郁闷
    2015-6-6 16:12
  • 签到天数: 52 天

    连续签到: 1 天

    [LV.5]女巫

    4949

    回帖

    3万

    金币

    35

    精华

    超级版主

    Rank: 11Rank: 11Rank: 11Rank: 11

    积分
    34677

    论坛守望者论坛元老杰出贡献

    发表于 2013-1-24 09:07:46 | 显示全部楼层
    看来我没有看错楼主哦.
    继续研究研究

    该用户从未签到

    138

    回帖

    14万

    金币

    1

    精华

    4级 Famous Hero

    Rank: 4

    积分
    1319

    杰出贡献TE联赛殿军

     楼主| 发表于 2013-1-24 09:12:34 | 显示全部楼层

    回复 5# 的帖子

    只有等周末抽时间看,还的上班哎。
  • TA的每日心情
    奋斗
    2015-1-22 08:29
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]野猪

    919

    回帖

    1万

    金币

    1

    精华

    论坛嘉宾

    掘坑者的铁锹

    Rank: 9Rank: 9Rank: 9

    积分
    1522

    退役版主

    发表于 2013-1-24 10:54:20 | 显示全部楼层
    原帖由 梦魇骑士 于 2013-1-24 09:07 发表
    个人觉得这是时间精力的问题,既然别人老外能写出插件,难道我们就不可以吗。只是这活太费力罢了。
    不是简单的插件问题,如果你只在乎写插件的话我自然是拍手称赞。但要是你想要做出WOG所不能的话,那还是另找一个引擎比较妥当。
    HOMM3现在可以算一款”老游戏“,它的结构不像新时代的同伴那样拥有广大的扩展性和兼容性(当然严格来说,HOMM3的文件和程序结构还算是比较开放的了),我们只求修修补补,最多添砖加瓦。要想彻底改造,那真是谨谢不敏。

    最近论坛很多人会一拍脑袋,说”我这样来改造H3/WOG/ERA是最好的“……我表示很心寒。而且其中的个别几个还特别喜欢YY出一个不切实际的想法硬要别人帮他实现。
    希望楼主不是这种人。也希望楼主是爱着HOMM3和它的一切的人。

    评分

    1

    查看全部评分

    某真祖的酒馆留言簿:据说在诅咒之地上作战时,怪物强化III无法完全生效。
    某真祖的酒馆留言簿:魔镜大法能使一些生物施法无效但不能反射。

    该用户从未签到

    223

    回帖

    6203

    金币

    0

    精华

    4级 Famous Hero

    Rank: 4

    积分
    1143
    发表于 2013-1-25 00:29:08 | 显示全部楼层
    太高端了

    评分

    1

    查看全部评分

  • TA的每日心情

    2016-11-6 01:55
  • 签到天数: 548 天

    连续签到: 2 天

    [LV.9]龙巫妖

    1万

    回帖

    363万

    金币

    1

    精华

    论坛嘉宾

    狼行天下

    Rank: 9Rank: 9Rank: 9

    积分
    100624

    退役版主论坛守望者魅力之星

    发表于 2013-1-25 08:16:03 | 显示全部楼层
    LZ乃专业人士也,鉴定完毕
    跟K大、沧老湿、007好好切磋切磋,基情无限哦
    1、英雄无敌3追随神迹下载整合,总有一款适合你!
    2、WOG地图下载汇总,一网打尽!!
    3、三宝书等卷轴下载,新手必看!!老手必藏!!
    4、广大会员们有福了!论坛之星大红包!!
    5、WOG大陆英雄酒馆火爆营业中!!
    6、没有WOG币?来领红包!
    7、最火爆的WOG讨论群QQ36152349和超级群75673563,期待你的加入
    8、WOG中文站微博 http://t.sina.com.cn/wogcn
    9、登录后点击导航栏左侧的“查看新帖”非常方便

    该用户从未签到

    138

    回帖

    14万

    金币

    1

    精华

    4级 Famous Hero

    Rank: 4

    积分
    1319

    杰出贡献TE联赛殿军

     楼主| 发表于 2013-1-25 09:33:00 | 显示全部楼层

    回复 9# 的帖子

    我和007昨天已经勾搭上了

    该用户从未签到

    409

    回帖

    8927

    金币

    4

    精华

    论坛嘉宾

    Rank: 9Rank: 9Rank: 9

    积分
    1187
    发表于 2013-12-2 00:11:51 | 显示全部楼层
    Era works even on Windows 8 64 bits, but I had to enable compatibility mode with Windows XP Service Pack 2. Address randomization is a problem, right, but we cannot rebuild everything from scratch. Because if SoD base image address changes from 0x400000 to anything else, almost all UN:C hacks/wog and plugin code will become invalid. Only VCMI is free from these drawbacks. Though to say the truth Win XP..Win 8 allow playing our old Heroes 3 game, so it's not a real problem.

    Era SDK is not perfect. It's very simple. But it introduces normal event system, which is rather scalable. I hope Era 2.60 will also add internationalization support based on universal language files with alphabetic keys and values.

    3.59 LUA engine has means for installing hooks in the code right from LUA. But again, using absolute addresses.

    该用户从未签到

    23

    回帖

    6283

    金币

    1

    精华

    论坛嘉宾

    Core WoG Team Member

    Rank: 9Rank: 9Rank: 9

    积分
    108

    退役版主

    发表于 2013-12-2 00:15:25 | 显示全部楼层
    Sorry, the above post was written by me. Forgot to relogin.
  • TA的每日心情
    开心
    2021-11-2 11:44
  • 签到天数: 754 天

    连续签到: 1 天

    [LV.10]圣龙

    8815

    回帖

    1万

    金币

    17

    精华

    论坛嘉宾

    寄蜉蝣于天地,渺沧海之一粟。

    Rank: 9Rank: 9Rank: 9

    积分
    42459

    退役版主社区QQ达人论坛守望者脚本测试狂论坛元老杰出贡献魅力之星

    发表于 2013-12-2 17:58:50 | 显示全部楼层
    梦魇一个帖子竟把西方的如来给招来了
    “你看见的,是追随诸神脚步前进的埃拉西亚!”
    封神2.2黄金版 - 决战神之巅,英雄无敌世界的终极幻想

    该用户从未签到

    138

    回帖

    14万

    金币

    1

    精华

    4级 Famous Hero

    Rank: 4

    积分
    1319

    杰出贡献TE联赛殿军

     楼主| 发表于 2013-12-2 19:52:50 | 显示全部楼层
    Berserker 发表于 2013-12-2 00:15
    Sorry, the above post was written by me. Forgot to relogin.

    I want know more about the details of the creatures in memory. I try to research the code but without any achievement. Can you help me with my problem? Thx.

    该用户从未签到

    23

    回帖

    6283

    金币

    1

    精华

    论坛嘉宾

    Core WoG Team Member

    Rank: 9Rank: 9Rank: 9

    积分
    108

    退役版主

    发表于 2013-12-3 03:25:11 | 显示全部楼层
    Did you download WoG sources?
    IDA database
    https://dl.dropbox.com/u/44735333/wog/Heroes3f.rar
    Map editor IDA database
    https://dl.dropboxusercontent.com/u/44735333/wog/h3maped.rar
    WoG Sources (2006 year):
    http://archive.heroes35.net/download.php?id=189

    Most of Heroes structures are described in several .h files like structs.h.
    baratorch (the author of HiRez mod) also released the sources. I can search the link if you are interested and know C++ a bit.

    该用户从未签到

    152

    回帖

    7319

    金币

    6

    精华

    论坛嘉宾

    Rank: 9Rank: 9Rank: 9

    积分
    759

    退役版主

    发表于 2013-12-3 12:47:52 | 显示全部楼层
    Berserker 发表于 2013-12-3 03:25
    Did you download WoG sources?
    IDA database
    https://dl.dropbox.com/u/44735333/wog/Heroes3f.rar

    Oh,so helpful and great!
  • TA的每日心情
    开心
    2015-10-23 11:14
  • 签到天数: 58 天

    连续签到: 1 天

    [LV.5]女巫

    95

    回帖

    6606

    金币

    0

    精华

    2级 Adventuring Hero

    Rank: 2

    积分
    437
    发表于 2013-12-9 23:55:43 | 显示全部楼层
    本帖最后由 真的很Man哦 于 2013-12-9 23:59 编辑

    SOD和WOD是我玩得最久的游戏了,总共有十多年了,其间有时间偷偷抽空跑几百公里跑去和朋友玩,也是玩这游戏,真回味,要是能搞到SOD的源码就爽了(痴心妄想,哎!)
  • TA的每日心情
    开心
    2015-10-23 11:14
  • 签到天数: 58 天

    连续签到: 1 天

    [LV.5]女巫

    95

    回帖

    6606

    金币

    0

    精华

    2级 Adventuring Hero

    Rank: 2

    积分
    437
    发表于 2013-12-9 23:57:29 | 显示全部楼层
    本帖最后由 真的很Man哦 于 2013-12-10 00:00 编辑
    Berserker 发表于 2013-12-3 03:25
    Did you download WoG sources?
    IDA database
    https://dl.dropbox.com/u/44735333/wog/Heroes3f.rar

    小小程序猿一枚,有时间也研究一下WOG的源码。
    ahome_bigavatar:guest
    ahome_bigavatar:welcomelogin
    您需要登录后才可以回帖 登录 | 英雄注册|Register

    本版积分规则

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

    WoG中文站 ( 辽B2-20210485-10 )|辽公网安备 21128202000228 号

    GMT+8, 2024-11-25 13:37 , Processed in 0.871548 second(s), 18 queries , Gzip On, File On.

    Powered by Discuz! X3.4

    Copyright © 2004-2022, Beijing Second Sight Technology Co., LTD.

    快速回复 返回顶部 返回列表