游客:
注册
|
登录
会员
|
搜索
|
统计
|
帮助
轩辕春秋文化论坛
»
步步为营
» DOS版三国志英杰传的研究心得——序
兴唐传·瓦岗山异闻录(20150519版)发布
(2015-5-19)
论坛营运现状公告
(2014-8-10)
三国志12pk版下载
(2013-4-20)
《精忠报国岳飞传》制作组对外开放
(2013-1-16)
岳飞传解密剧本发布
(2011-4-12)
招募各版斑竹和网站管理技术人员
(2006-4-19)
<< 上一主题
|
下一主题 >>
投票
交易
悬赏
活动
打印
|
推荐
|
订阅
|
收藏
|
开通个人空间
|
加入资讯
标题: DOS版三国志英杰传的研究心得——序, 可能也是最没用的研究心得。
本主题由 阿尔法孝直 于 2025-1-5 22:41 设置高亮
漫漫苦短
组别
百姓
级别
在野武将
功绩
0
帖子
9
编号
545816
注册
2023-12-25
#1
发表于 2025-1-5 19:19
资料
短消息
只看该作者
DOS版三国志英杰传的研究心得——序
我在新年的发帖提到了许多玩家,那些都是让我敬重的前辈们。他们大部分都是极限练级玩家,龙吟还有阿尔法孝直则是研究汇编代码的高手,并且有相当知名的文章,还有一些,周瑜则算其中兼而有之的玩家,并且还有一篇
《英杰传详细流程攻略》
。网上也有部分做MOD,有一部分是用曹操传MOD做的,也有用原始游戏做的,不过大部分都是在游戏数据和剧本上的修改,其中很多人所用的工具
剧本初步解析
和
剧本编辑器
,还得再次感谢一下龙吟前辈。
所以我打算既研究三国志英杰传游戏底层代码,又在研究了这个游戏的各种逻辑后挑战极限练级规划并记录成果,最好还能尝试修改这个游戏(不仅仅是游戏数据和剧本上的),实现一些在原本游戏基础上的一些新功能(完善Bug,拓展原有功能等等)。
这些事情我去年就开始做了,然而实际上收效甚微,所以开始打算以发帖记录的方式来敦促自己,并将这些成果分享在步步为营上,希望有更多的人能了解这个游戏,体验在战棋游戏中刘皇叔的传奇经历。
[
本帖最后由 漫漫苦短 于 2025-1-17 19:09 编辑
]
[广告]
安装Alexa工具条,提高轩辕排名,支持轩辕发展!
漫漫苦短
组别
百姓
级别
在野武将
功绩
0
帖子
9
编号
545816
注册
2023-12-25
#2
发表于 2025-1-5 19:19
资料
短消息
只看该作者
第一节 游戏文件的分析工具介绍
DOS版游戏中有许多文件,其中最重要的当属main.exe,这是个16位程序,现在的64位系统打不开,于是我们只能借助DOSBox来模拟16位系统环境打开游戏,当然要想查看整个程序的16进制内容也可以用UltraEdit等软件来打开。网上的反汇编软件大部分都不支持查看16位程序(也可能是我搜寻工具的能力不足),更别说看到其中的汇编代码了,不过还是有个程序可以看到,就是最强大的交互式反汇编软件IDAPro,likelove曾经也使用过这个软件分析,在设计与修改区可以下载一个idb文件,就是他的分析成果,我使用的是从吾爱破解上的IDA_Pro_v8.3_Portable版本,可以下载一起研究。
(待补充图片)
还是要补充一句,我的研究成果参考了大量龙吟,周瑜,阿尔法孝直,likelove等人的文帖,可以说没有前辈们的研究我将寸步难行,感谢这些前辈们的付出,我作为一个后人能看到研究这些已心满意足了。
[广告]
安装Alexa工具条,提高轩辕排名,支持轩辕发展!
漫漫苦短
组别
百姓
级别
在野武将
功绩
0
帖子
9
编号
545816
注册
2023-12-25
#3
发表于 2025-1-5 19:19
资料
短消息
只看该作者
第二节 main.exe的初步解析(一)
打开软件后,再在软件中打开游戏的main.exe,就会看到一个提示界面,有几个参数是可以改的,不过我当时研究的时候不熟就没改,不过这没有太大的影响。
(待补充修改方法)
终于进入反汇编的界面了,在IDA-View界面可以看到左边有一行行诸如“seg000:BCE6”(这个是start函数的起始地址),再多翻翻可以看到不同的地址。其中 :左边的是段地址,:右边的是偏移地址,比较重要的seg001, seg002, 还有dseg,dseg就是数据的段地址。其实这部分内容我也不能准确解释清楚,能大致明白就行。
在Hex-View界面可以看到类似UltraEdit打开main.exe的界面,看到几乎满屏的16进制数,其实这些数大部分都能与在UltraEdit看到的main.exe对应起来,当然初次对应起来是要花许多的时间的,希望大家都能记住第一次将二者对应上带来的惊喜。
[广告]
安装Alexa工具条,提高轩辕排名,支持轩辕发展!
漫漫苦短
组别
百姓
级别
在野武将
功绩
0
帖子
9
编号
545816
注册
2023-12-25
#4
发表于 2025-1-11 19:19
资料
短消息
只看该作者
第三节 main.exe的初步解析(二)
将内存中的main.exe(Hex-View界面)与存储中的main.exe(UltraEdit界面)两者对应上也只是研究的第一步,现在我们来观察两者不能完全对应的地方。
1.首先存储中的main.exe的0-69FF是对应不上内存中的main.exe,当然这也不能表明这段是没有的或者是IDAPro把它忽略了,这段数据其实就是main.exe的可执行文件头,鉴于本人的水平有限,这个文件头的研究分析在这里先按下不表(等我知识到位了再解释吧)。
2.然后发现内存中的main.exe 1000:0000开始的数据和存储中的main.exe 6A00开始的数据是一样的,继续浏览能发现它们似乎是按照顺序依次对应上的,我们总算是找到了两者的一点对应关系。
图片附件
:
IDA.png
(2025-1-11 19:19, 36.43 K)
图片附件
:
UE.png
(2025-1-11 19:19, 333.2 K)
3.然后我们接着看到了内存中的main.exe的1000开头的段地址突然变成1CF6,偏移地址变回了0000,而且一直都能发现有少数内容是对应不上的,比如这5个位置,都是由F6 0C变成了F6 1C,这中间似乎存在者某种规律,是什么原因呢?
图片附件
:
IDA_s1.png
(2025-1-11 19:19, 77.67 K)
图片附件
:
UE_s1.png
(2025-1-11 19:19, 379.71 K)
等等,这部分的段地址是1CF6,由于小端字节序的原因,它在内存中的保存的是F6 1C,于是我们可以初步得出一个结论,就是内存中的段地址会修改,这与程序载入内存的位置有关。
4.浏览到最后,内存中的main.exe的段地址经过了几次修改,变成了407D,而存储中的main.exe的数据到头了,就像两条交汇的路终于到了分叉的时候。内存中的main.exe的内容还在继续不过大部分都是??。
图片附件
:
IDA_ds.png
(2025-1-11 19:19, 56.37 K)
图片附件
:
UE_ds.png
(2025-1-11 19:19, 299.6 K)
不过这部分内容并不是IDAPro不知道,而是这部分内容会根据游戏的内容产生变化,从407D:5125开始,可以简单地理解为这部分内容就是程序的堆区,与之对应的程序的栈区也是使用的407D这个段地址,只是栈区使用的是高偏移地址,并且栈是由高偏移地址向低偏移地址拓展。
[
本帖最后由 漫漫苦短 于 2025-1-11 19:23 编辑
]
[广告]
《精忠报国岳飞传完整版》火热发布
漫漫苦短
组别
百姓
级别
在野武将
功绩
0
帖子
9
编号
545816
注册
2023-12-25
#5
发表于 2025-1-12 19:19
资料
短消息
只看该作者
第四节 main.exe的初步解析(三)
当我们大致了解了内存中的main.exe和存储中的main.exe的对应关系后,可以确信内存载入一个程序其实也不算很复杂,这当然还得感谢游戏本身并没有加壳这类的手段来防止破解等等,不过我们终究还是要研究main.exe中的数据,要看IDAPro是如何对main.exe进行反汇编识别的,也就是要看汇编代码,于是我们还得回到原来的IDA-View界面,不过IDA-View界面一开始并没有原来的main.exe中的汇编码(十六进制数),不过我们可以通过设置显示出来。
图片附件
:
IDA_Settings.png
(2025-1-12 19:19, 18.98 K)
图片附件
:
IDA_Options.png
(2025-1-12 19:19, 20.54 K)
如果我们不勾选Include segment addresses, 在原来的显示seg00x:xxxx这些地方就会显示一个8位的16进制数。
在Number of opcode bytes的右边输入框输入一个数字,我们就可以在IDA-View界面左边每个地址旁看到每个语句对应的汇编码,输入的数字对应的就是每行显示的汇编码数,这样大概在分析汇编码的时候就不需要Hex-View界面了。
[广告]
真诚支持说岳,携手共创辉煌
勇者哥哥
组别
校尉
级别
左将军
好贴
1
功绩
18
帖子
1259
编号
15125
注册
2004-8-10
#6
发表于 2025-1-13 10:36
资料
文集
短消息
只看该作者
今夕是何年,技术贴支持!
[广告]
安装Alexa工具条,提高轩辕排名,支持轩辕发展!
漫漫苦短
组别
百姓
级别
在野武将
功绩
0
帖子
9
编号
545816
注册
2023-12-25
#7
发表于 2025-1-13 19:19
资料
短消息
只看该作者
回复 #6 勇者哥哥 的帖子
感谢支持,不过我感觉这目前来说也不算是技术贴,我想把标题中的“研究报告”换个名字,不知道换什么比较好?
过几天会发第一章的内容,序章也没有结束,还会有内容的。
[广告]
真诚支持说岳,携手共创辉煌
likelove
组别
百姓
级别
在野武将
功绩
0
帖子
37
编号
56074
注册
2005-12-27
#8
发表于 2025-1-13 20:57
资料
短消息
只看该作者
有同好一起研究很棒
。有时间我也分享一下研究的心得
[广告]
《精忠报国岳飞传完整版》火热发布
漫漫苦短
组别
百姓
级别
在野武将
功绩
0
帖子
9
编号
545816
注册
2023-12-25
#9
发表于 2025-1-17 19:19
资料
短消息
只看该作者
回复 #8 likelove 的帖子
很期待你的心得,我也把题目改成研究心得吧。
你的研究比我肯定更深入,我一开始下载了你在设计与修改的那里的
idb文件
,然后还用了你的
dosbox游戏修改器
,如果有可能,希望你能加个观察特定位置内存的功能。
[广告]
真诚支持说岳,携手共创辉煌
投票
交易
悬赏
活动
正在浏览此帖的会员 -
8
人在线 -
0
位会员(
0
隐身),
8
位游客
轩辕春秋文化论坛
轩辕史话
> 炎黄春秋
> 我思我在
> 法律探讨
> 三国史话
春秋文艺
> 古典小说
> 诗词歌赋
> 现代文艺
> 韦编三绝
> 对联雅座
> 滴翠亭
> 藏经阁
> 双七钟社
> 笑书神侠
> 辕门射虎
> 虎帐点兵
游戏人生
> 同人战棋手游
> 三国戏英杰传
> 三国鼎立
> 轩辕公会
> 三国志12
> 英雄史诗
> 运筹帷幄
> 人间五十年
> 步步为营
> 游行天下
> 游戏贴图
轩辕工作室
> 兴唐传·瓦岗山异闻录
> 豪华曹操传
> 精忠报国岳飞传
> 《精忠报国岳飞传》制作组
> 大一统演义
> 曹操传MOD作品交流
> 东吴霸王传
> 封神英杰传
> 杨家将
> 吕布传
> 三国无双战略版
> 北宋志·赵匡胤传
> 战旗春秋
> 曹操传MOD制作交流
> 金庸群侠传MOD交流
> 风华录
> 设计与修改
怡情岁月
> 影音经典
> 动漫先锋
> 绘画摄影
> 情感轩辕
> 衣食住行
> 体坛动力
> 谈股论金
> 水泊轩辕
参政议政
> 迎宾阁
> 鸿胪寺
> 登闻鼓
> 监造府
当前时区 GMT+8, 现在时间是 2025-1-18 15:52
京ICP备2023018092号
轩辕春秋
2003-2023 www.xycq.org.cn
Powered by
Discuz!
5.0.0
2001-2006
Comsenz Inc.
Processed in 0.010648 second(s), 10 queries , Gzip enabled
TOP
清除 Cookies
-
联系我们
-
轩辕春秋
-
Archiver
-
WAP
控制面板首页
编辑个人资料
积分交易
公众用户组
好友列表
基本概况
论坛排行
主题排行
发帖排行
积分排行
管理团队
管理统计