游客:
注册
|
登录
会员
|
搜索
|
统计
|
帮助
轩辕春秋文化论坛
»
曹操传MOD制作交流
» 扩展引擎中的对话框 - [不借助DLL]
兴唐传·瓦岗山异闻录(20150519版)发布
(2015-5-19)
论坛营运现状公告
(2014-8-10)
三国志12pk版下载
(2013-4-20)
《精忠报国岳飞传》制作组对外开放
(2013-1-16)
岳飞传解密剧本发布
(2011-4-12)
招募各版斑竹和网站管理技术人员
(2006-4-19)
<< 上一主题
|
下一主题 >>
投票
交易
悬赏
活动
打印
|
推荐
|
订阅
|
收藏
|
开通个人空间
|
加入资讯
标题: 扩展引擎中的对话框 - [不借助DLL]
砖家叫兽
组别
士兵
级别
忠义校尉
功绩
3
帖子
274
编号
406021
注册
2010-12-7
#1
发表于 2012-2-20 11:44
资料
短消息
只看该作者
扩展引擎中的对话框 - [不借助DLL]
前言
现有的对话框数量远远不够,如何才能扩充对话框以满足更高级的需求成为了引擎探索目标。
之前蛇夫 研究过 自创角色 新引擎增加了 围攻 那几个按钮
而本人要做的方法,比较笨,但是在前人基础上进行加工,前人栽树后人乘凉,前人开路后人走,希望能够让你修改引擎更加随心所欲。
[
本帖最后由 砖家叫兽 于 2012-2-20 23:54 编辑
]
[广告]
真诚支持说岳,携手共创辉煌
砖家叫兽
组别
士兵
级别
忠义校尉
功绩
3
帖子
274
编号
406021
注册
2010-12-7
#2
发表于 2012-2-20 11:50
资料
短消息
只看该作者
前言
对我们E族来讲,完全依靠引擎而不借助外来因素是我们的最爱,也是一直探索的方向。
本人为了制作主角命名,查找到CCZ中唯一一个可以接受输入信息MFC对话框是,买入 卖出 那个输入数字的EDIT
经本人修改后虽然还有个小BUG,即默认显示数字 1 (比较麻烦的一点),但是接受汉字已经实现并且这个BUG将在将来解决。
扩充对话框,首先要从对MFC的认识开始。
推荐工具 OD EXESCOPE VC6
结合这三个工具,我们将可以用来 “修改” 出我们要的对话框
[广告]
安装Alexa工具条,提高轩辕排名,支持轩辕发展!
砖家叫兽
组别
士兵
级别
忠义校尉
功绩
3
帖子
274
编号
406021
注册
2010-12-7
#3
发表于 2012-2-20 12:01
资料
短消息
只看该作者
VC篇
VC 即 MICROSOFT VISUAL C++
微软的VC中有关于 MFC的部分 也就是创建你自己心目中的对话框的基础
首先构建工程,用引擎打开EXESCOPE,找到你要修改的对话框,按引擎中组件的顺序添加进你想要的组件 首先构造你需要的对话框样式
这一步的关键是 因为修改,只能在原有的对话框基础上修改样式,比方EDIT、PUSHBUTTON、你可以修改 XY坐标 XY 大小
在VC中创建好样子了,编译
这时候 CCZ输入数字的EDIT控件 ,仅仅接受数字,还不能接收字符。
而VC的EDIT控件是可以
这时候需要的是,修改属性,去掉EDIT控件中 接收数字 那个 选项
当然 这一步不是在EXESCOPE中直接改,而是用 E 打开 VC 编译后生产的EXE文件,找到对话框。
这一步完毕之时,你已经用VC 构造了个和 引擎中某个对话框一样的对话框
[广告]
《精忠报国岳飞传完整版》火热发布
砖家叫兽
组别
士兵
级别
忠义校尉
功绩
3
帖子
274
编号
406021
注册
2010-12-7
#4
发表于 2012-2-20 12:15
资料
短消息
只看该作者
EXESCOPE篇
上一步完成,这时候应该是打开了两个EXESCOPE 其中一个是引擎 一个是编译的VC文件
这时 先检查一下 两个相似的对话框 二进制格式是不是一样,如果是一样的,那就放心大胆的进行下一步,(其实不一样也不要紧,下面会告诉原因)
虽然本人承认方法笨,但至少不会笨到为了构造一个对话框而废掉一个对话框。
因此,对话框修改不是在E 中直接进行
打开OD,找一段空间足够大的,把 VC 编译程序 对话框整段二进制数值拷贝过来。
关键信息 待替换首地址 *exchg
同样在OD中搜索资源区段,用二进制搜索 找到与EXESCOPE 对应的 对话框二进制内容
关键信息 对话框资源的首地址 *p
因为是重复利用,所以,把原先对话框的内容也找个空间保存下来吧
首地址 *Pstore
接下来的原理很简单
三个地址 有两个地址存储了对话框的信息,包括 样式 属性 等等
还有一个地址的内容决定了 对话框会显示成什么样子
你需要做的就是,在调用对话框之前 ,复制一次内容,调用完毕,复制回去。
这个代码在OD中写。
而 实际上 资源段是被保护的 MOV [XX],XX 是会导致引擎弹出的,这就需要EXESCPOE了
用 E 打开引擎,找到头部区段,可以看到 资源段 信息,有个 【只读,保护】之类的,跟代码段不一样。代码段没有加保护,因此把相应的二进制复制到资源的那一项吧。
[广告]
安装Alexa工具条,提高轩辕排名,支持轩辕发展!
砖家叫兽
组别
士兵
级别
忠义校尉
功绩
3
帖子
274
编号
406021
注册
2010-12-7
#5
发表于 2012-2-20 12:29
资料
短消息
只看该作者
OD 篇
最终极的一篇是OD篇。
首先 需要有个接口来调出你的对话框,一般是从剧本控制。
这里的部分,交由修改者自行完成。
进入调出对话框的子函数
首先 找一个地址作为标记,默认是0 也就是原始的对话框
现在 MOV [XX],1 做一下标记
当然 记得函数末尾 要MOV [XX],0 或者在原先调用对话框的函数那里写
这个标记的实质是告诉代码的处理机制,我在执行哪一个。
对相应MFC控件功能的修改:
调用对话框你只要接入原先的函数即可。比方输入姓名,我直接接入买入卖出显示的那个对话框。仅仅修改了个别参数。
CCZ就这一点好,很多功能都可以找到相应的函数。
问题是,单纯显示出来还打不到我要的目的。
比方我修改了对话框,屏蔽了多余按钮,没有显示“买入XX要XX钱”,而对话框仍旧只接受数字。
这时候不要急,用EXESCOPE打开引擎 看看这个控件的ID
好像EDIT那个是1420,转换成十六进制 59D
然后搜索引擎中59D
看到PUSH 59D 并且底下就CALL 了一个非引擎的函数(79XXXX 77XXXXX)而且 这些函数 OD是认识的,名称是 getdlgitemint
不知道函数是什么意思对不对,百度一下。
函数很多,有用的就是这个,那么只接受数字是因为什么缘故就知道了。
你要改的 同样 百度一下,找到接受字符的函数 getdlgitemtext
然后OD 中CTRL+G 找到这个函数首地址,保存到一个地址,然后传入合适参数。
比方本人的缓冲区直接写在引擎某个区,那么调用完成后这个区段的文字 来进行下一步处理即可。
而显示方面,当然 凭借反汇编的技巧,有条件抹掉一点东西(不是NOP , 是CMP JE)
[广告]
安装Alexa工具条,提高轩辕排名,支持轩辕发展!
砖家叫兽
组别
士兵
级别
忠义校尉
功绩
3
帖子
274
编号
406021
注册
2010-12-7
#6
发表于 2012-2-20 12:36
资料
短消息
只看该作者
做完这几步以后,基本功能已经可以实现,但是还有些细节,需要在引擎中去完善
可能大家看完后还不知所云,下面我概括一下
本工作的核心是复制。对话框的修改不是靠EXESCOPE而是靠引擎。相应的数据内容保存在引擎中非资源段。这样确保了一个对话框可以多次修改使用。
其余的工作全部都是围绕这个一点来服务的。
当然如果想要对话框更强大,那就 需要一个比较完善的对话框,包含各种控件。
而精髓的精髓,还是OD本身的技巧。摸索出反汇编的很多小技巧之后,很多事情自己会有办法的。
[
本帖最后由 砖家叫兽 于 2012-2-20 12:44 编辑
]
[广告]
安装Alexa工具条,提高轩辕排名,支持轩辕发展!
投票
交易
悬赏
活动
正在浏览此帖的会员 - 共
1
人在线
轩辕春秋文化论坛
轩辕史话
> 炎黄春秋
> 我思我在
> 法律探讨
> 三国史话
春秋文艺
> 古典小说
> 诗词歌赋
> 现代文艺
> 韦编三绝
> 对联雅座
> 滴翠亭
> 藏经阁
> 双七钟社
> 笑书神侠
> 辕门射虎
> 虎帐点兵
游戏人生
> 同人战棋手游
> 三国戏英杰传
> 三国鼎立
> 轩辕公会
> 三国志12
> 英雄史诗
> 运筹帷幄
> 人间五十年
> 步步为营
> 游行天下
> 游戏贴图
轩辕工作室
> 兴唐传·瓦岗山异闻录
> 豪华曹操传
> 精忠报国岳飞传
> 《精忠报国岳飞传》制作组
> 大一统演义
> 曹操传MOD作品交流
> 东吴霸王传
> 封神英杰传
> 杨家将
> 吕布传
> 三国无双战略版
> 北宋志·赵匡胤传
> 战旗春秋
> 曹操传MOD制作交流
> 金庸群侠传MOD交流
> 风华录
> 设计与修改
怡情岁月
> 影音经典
> 动漫先锋
> 绘画摄影
> 情感轩辕
> 衣食住行
> 体坛动力
> 谈股论金
参政议政
> 迎宾阁
> 鸿胪寺
> 登闻鼓
> 监造府
当前时区 GMT+8, 现在时间是 2025-6-26 22:41
京ICP备2023018092号
轩辕春秋
2003-2023 www.xycq.org.cn
Powered by
Discuz!
5.0.0
2001-2006
Comsenz Inc.
Processed in 0.009240 second(s), 8 queries , Gzip enabled
TOP
清除 Cookies
-
联系我们
-
轩辕春秋
-
Archiver
-
WAP
控制面板首页
编辑个人资料
积分交易
公众用户组
好友列表
基本概况
论坛排行
主题排行
发帖排行
积分排行
管理团队
管理统计