标题: [纯吐槽]dos可执行文件mz exe格式 [已更新]
性别:未知-离线 likelove

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 37
编号 56074
注册 2005-12-27


发表于 2014-10-31 17:19 资料 短消息 只看该作者
[纯吐槽]dos可执行文件mz exe格式 [已更新]

tags:dos, mz exe, segment

    首先dos exe(MZ格式)是彻底坑爹货啊,那个文件头语焉不详啊!只有大小啊、入口啊、重定位表啊,传说中的code, data, bss段都没有啊,没有段信息让人去哪找空间啊!!
   ida pro也是坑啊,seg1, seg2..., dseg,有模有样啊,可文件中丝毫找不到分段信息啊!!原来这是智能分析得来的啊!
   wdasm比较实在啊,从头到尾过一遍啊,到ffff换一段啊,不分data和code啊!!就纳了闷了,同样都是作反汇编的,差距怎么就这么大泥??
   我大度娘实在不太好用啊,除了广告你找不到什么有用的啊,谁用谁知道啊。bing凑合用一下,什么你说谷歌,这是个什么东东啊,是美女吗??
   还是老外实在,说这个dos啊,嗯嗯,这个Dos,它是没有segment的,这是码农的一相情愿啊,code, data都是混在一起的,说他是code它就是code,说是data就是data,读写运行没限制啊,传说中的实模式。这次算是懂了啊 T_T
    这个exe修改难以完成啊,你要考虑找块不用的空地啊,代码都很紧凑,没处找啊,涉及到调用还得重定位啊,自虐啊

--------
有感于mz exe格式的分析,修改

[ 本帖最后由 likelove 于 2014-11-28 09:01 编辑 ]


顶部
性别:未知-离线 likelove

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 37
编号 56074
注册 2005-12-27


发表于 2014-10-31 17:29 资料 短消息 只看该作者
初步想三国英杰传的一处修改


   在CalculateActionValue这个调用里,找个合适位置,跳到空地,再调用GetCharName取得武将名称,把目标坐标,该处的物理伤害、策略伤害值,用ShowMsg打印出来,辅助练级。(上面这些调用是在ida中自定的)
   目前已知的空位是@BD50有1000字节空位、@FB50有1800h空位、@11F50有600空位,只是不知这些地方程序用不用的到。重定位表空间充足,不会构成麻烦。


顶部
性别:未知-离线 likelove

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 37
编号 56074
注册 2005-12-27


发表于 2014-11-1 17:54 资料 短消息 只看该作者
忙活了半天的成果,显示NPC行动价值,但貌似在什么地方改变了行动价值,NPC不好好战斗了

下载后请改为exe,仅供测试

ps: 不太好解决,判断行动价值过程用到一个变量,不在堆栈中,而在一块公共区域,会被写屏数据用到,所以就被覆盖掉了…………  不知道怎么能绕过去。

ps:看行动价值请下载11L的附件

[ 本帖最后由 likelove 于 2014-11-26 14:14 编辑 ]
顶部
性别:男-离线 阿尔法孝直
(雀力日进)

闽国公
遂安军节度使
★★★★★★

Rank: 19Rank: 19Rank: 19Rank: 19
柱国(正二品) 轩辕春秋年度最佳(游戏人生区)
组别 节度使
级别 卫将军
好贴 2
功绩 1796
帖子 6036
编号 19070
注册 2004-10-16
家族 轩辕雀党


发表于 2014-11-2 23:54 资料 个人空间 短消息 只看该作者 QQ
同感,以前改英杰传,费劲千辛万苦找到某个函数的地址,然后大改特改。改完再用IDA Pro重新分析的时候发现代码段数据段 什么的全变了,程序变得面目全非不能运行了。

PS:谁有MZ EXE转32位汇编EXE的转换工具?
顶部
性别:未知-离线 likelove

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 37
编号 56074
注册 2005-12-27


发表于 2014-11-3 09:28 资料 短消息 只看该作者


QUOTE:
原帖由 阿尔法孝直 于 2014-11-2 23:54 发表
同感,以前改英杰传,费劲千辛万苦找到某个函数的地址,然后大改特改。改完再用IDA Pro重新分析的时候发现代码段数据段 什么的全变了,程序变得面目全非不能运行了。

PS:谁有MZ EXE转32位汇编EXE的 ...

是的,调用程序中函数时会遇到这问题,在文件头的重定位表中得添加重定位项。DOS文件的最大问题是不分段,没办法增加空间。改大文件新增内容都放最后也不靠谱,因为不知道那一段代码发神经就给用了  针对前面的bug,最近在看能不能调用直接写屏的功能


简述一下重定位表:
dos程序在内存中是按 段址:偏移来寻址 比如1c00:2233 (都是16进制) = 1c00*10+2233 = 1c000+2233 = 1e233

重定位项数和第一项的位置在文件头中有规定,对每一项(2个word),第1个word是偏移,第2个word是段,这两个决定了程序要修正内容的位置。当程序被加载到非期望的位置,用重定位表就可以修正指定的这些位置,保证段址都是正确的

比如在内存 0:9A00这个位置有调用 call 1c00:2233,那么需要先查下语句中1c00这个段址在内存中的位置,在这里是9a00+3=9a03,然后在重定位表中加一项 0:9A03。如现在程序加载位置整体上移了1000(相对于段),重定位表会将 call 1c00:2233 修正为 call 2c00:2233



16转32应该是没有,体系不大一样
顶部
性别:男-离线 阿尔法孝直
(雀力日进)

闽国公
遂安军节度使
★★★★★★

Rank: 19Rank: 19Rank: 19Rank: 19
柱国(正二品) 轩辕春秋年度最佳(游戏人生区)
组别 节度使
级别 卫将军
好贴 2
功绩 1796
帖子 6036
编号 19070
注册 2004-10-16
家族 轩辕雀党


发表于 2014-11-3 14:15 资料 个人空间 短消息 只看该作者 QQ
回想起这么一件事:因为DOSBOX能将DOS程序放在XP下面运行,说明DOSBOX本身自带MZ转PE的翻译程序。于是我试着用OD调试DOSBOX,运行英杰传程序后,也确实找到了部分已经被转出来的32位汇编代码。接着,我在人物行动价值的地方下了一个断,雷死人的事情发生了:在我方回合结束后,系统直接进入下一个回合了!

PS:我是知道重定向这么一回事的,当时以为在DLL文件里面才有(因为DLL的装载地址是不确定的,而DLL里面可能有全局变量)。如果只是改函数里面的内容,入口地址不变,应该不需要改重定向表吧?

[ 本帖最后由 阿尔法孝直 于 2014-11-3 14:19 编辑 ]
顶部
性别:未知-离线 likelove

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 37
编号 56074
注册 2005-12-27


发表于 2014-11-3 14:55 资料 短消息 只看该作者


QUOTE:
原帖由 阿尔法孝直 于 2014-11-3 14:15 发表
回想起这么一件事:因为DOSBOX能将DOS程序放在XP下面运行,说明DOSBOX本身自带MZ转PE的翻译程序。于是我试着用OD调试DOSBOX,运行英杰传程序后,也确实找到了部分已经被转出来的32位汇编代码。接着,我在人物行 ...

哈哈,没想过这个手段调试

DOS调试是个大问题,一般办法搞不定   经过探索,用虚拟机vmware比较好,里面装纯dos,用softice调试,随时可保存快照,恢复比较方便

另外,window下重定位确实也就dll需要,EXE基本不需要了,还是好很多
顶部
性别:男-离线 0dragon

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 45
编号 290650
注册 2008-8-26


发表于 2014-11-12 17:22 资料 短消息 只看该作者
小菜鸟路过 顶顶大神
顶部
性别:未知-离线 likelove

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 37
编号 56074
注册 2005-12-27


发表于 2014-11-19 22:17 资料 短消息 只看该作者
继续分析,有点进展,修改后的文件还不完善,还得改。

程序里还有些隐藏的内容,找到一个

dos版的main.exe,用winhex之类的工具打开,在偏移22274这个位置(注意是16进制数),把09改成0A,可以把功能菜单中的音乐时间打开,效果如图


图片附件: menu1.JPG (2014-11-19 22:17, 125.92 K)

顶部
性别:男-离线 阿尔法孝直
(雀力日进)

闽国公
遂安军节度使
★★★★★★

Rank: 19Rank: 19Rank: 19Rank: 19
柱国(正二品) 轩辕春秋年度最佳(游戏人生区)
组别 节度使
级别 卫将军
好贴 2
功绩 1796
帖子 6036
编号 19070
注册 2004-10-16
家族 轩辕雀党


发表于 2014-11-19 22:43 资料 个人空间 短消息 只看该作者 QQ
回复 #9 likelove 的帖子

印象中这个秘籍用猛了会导致所有人的三围都变成1,然后武器的威力变得非常猛……
顶部
性别:未知-离线 likelove

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 37
编号 56074
注册 2005-12-27


发表于 2014-11-22 15:22 资料 短消息 只看该作者
战斗时在最上方打印行动价值,可以用了

输出内容:武将名及其序号 行动坐标 该处行动价值 物理攻击对象 物理价值 策略 策略对象 策略价值

注意:debug菜单中有个演示功能,以前网上改的版本是不能用的(因为相关提示信息是日文的,程序会死掉),附件这个版本是没这个问题,你可以让刘备军自己和敌军斗

[ 本帖最后由 likelove 于 2014-11-28 09:04 编辑 ]


附件: MAIN2.rar (2014-11-22 15:22, 98.7 K)
该附件被下载次数 232
顶部
性别:男-离线 heyou

★★

Rank: 6Rank: 6Rank: 6
组别 校尉
级别 讨逆将军
功绩 27
帖子 670
编号 306697
注册 2009-1-20


发表于 2019-4-14 22:39 资料 个人空间 短消息 只看该作者
回复 #11 likelove 的帖子

演示功能很棒!!!很有趣

如果可以的話
有沒有修正過演示,但不顯示行動價值的版本
既然是已經發生的事,希望畫面上方能清爽點
甚至希望左上角座標的字可以小一點(或者移到左下角)
謝謝

[ 本帖最后由 heyou 于 2019-4-14 22:46 编辑 ]
顶部
性别:男-离线 heyou

★★

Rank: 6Rank: 6Rank: 6
组别 校尉
级别 讨逆将军
功绩 27
帖子 670
编号 306697
注册 2009-1-20


发表于 2019-4-14 22:47 资料 个人空间 短消息 只看该作者
覺得這個才是真正的debug mode啊!
顶部
性别:未知-离线 likelove

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 37
编号 56074
注册 2005-12-27


发表于 2019-4-18 18:07 资料 短消息 只看该作者


QUOTE:
原帖由 heyou 于 2019-4-14 22:39 发表
演示功能很棒!!!很有趣

如果可以的話
有沒有修正過演示,但不顯示行動價值的版本
既然是已經發生的事,希望畫面上方能清爽點
甚至希望左上角座標的字可以小一點(或者移到左下角)
謝謝

调试了修改脚本,直接修改原始文件的内存代码,实现以上功能,见附件,其中提供了原始文件


附件: sanyorg.rar (2019-4-18 18:07, 110.83 K)
该附件被下载次数 125
顶部
性别:男-离线 heyou

★★

Rank: 6Rank: 6Rank: 6
组别 校尉
级别 讨逆将军
功绩 27
帖子 670
编号 306697
注册 2009-1-20


发表于 2019-4-18 19:01 资料 个人空间 短消息 只看该作者
回复 #14 likelove 的帖子

首先謝謝你對素未謀面的人抽空修改
我原本是用 #11 的附件 MAIN2.rar
解壓縮後的檔案改名為MAIN.EXE
就可以在DOSBOX上運行,也可以玩到超棒的演示功能
這個新附件好像不是這樣

請問一下,我解壓縮新附件,裡面的MAIN.exe 還是1995年,似乎是原始檔案
還有dt.exe & dt.ini
這是要怎麼使用呢?

謝謝
顶部
性别:未知-离线 likelove

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 37
编号 56074
注册 2005-12-27


发表于 2019-4-19 08:15 资料 短消息 只看该作者


QUOTE:
原帖由 heyou 于 2019-4-18 19:01 发表
首先謝謝你對素未謀面的人抽空修改
我原本是用 #11 的附件 MAIN2.rar
解壓縮後的檔案改名為MAIN.EXE
就可以在DOSBOX上運行,也可以玩到超棒的演示功能
這個新附件好像不是這樣

請問一下,我解壓縮新附件 ...

dt就是修改器,参见 http://xycq.online/forum/thread-304542-1-1.html
顶部
性别:男-离线 heyou

★★

Rank: 6Rank: 6Rank: 6
组别 校尉
级别 讨逆将军
功绩 27
帖子 670
编号 306697
注册 2009-1-20


发表于 2019-4-21 10:55 资料 个人空间 短消息 只看该作者
那請問你以前有修正演示功能,但沒有其他輸出內容的MAIN.exe檔嗎?
顶部

正在浏览此帖的会员 - 共 6 人在线




当前时区 GMT+8, 现在时间是 2025-1-19 07:01
京ICP备2023018092号 轩辕春秋 2003-2023 www.xycq.org.cn

Powered by Discuz! 5.0.0 2001-2006 Comsenz Inc.
Processed in 0.015102 second(s), 11 queries , Gzip enabled

清除 Cookies - 联系我们 - 轩辕春秋 - Archiver - WAP