设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1909|回复: 5
打印 上一主题 下一主题

[随意闲聊] 关于Ruby版本置换

[复制链接]

Lv4.逐梦者

梦石
0
星屑
13559
在线时间
2753 小时
注册时间
2014-10-4
帖子
756

R考场第七期纪念奖

跳转到指定楼层
1
发表于 2018-9-8 22:39:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 SixRC 于 2018-9-8 22:40 编辑

呃 RM 内置了 Ruby
然后 就像加密和破解 没有绝对的事情
Ruby 版本的置换 只要肯努力
没啥是不可能的
就大概思考和实践了一下

所谓版本置换 其实就是换一个版本的解释器 然后把 RGSS 套过去 让 RGSS 的功能能完美的在新的版本上运行
假如有源码在 呃 没有
然后我就想了两个方案

Ruby 内置到 RM 也可以看作是 RGSS 内置到了 Ruby
RGSS 会调用一系列 Ruby 给的 api 例如创建字符串 读取变量啥啥啥的
第一个方案就是把原版本的 api 都替换成新版本的 api
只要在 api 前面一个 jmp 到新的就行
这个方案我大概实现了 有了一个很不完美的样品
不完美在于一是找不全所有的 api 或者说 找全太累 然后就会有烦人的报错
二是不同版本 Ruby 的 ruby_value_type 是不同的
这就是说 判断一个变量的类型的依据不同了 原来比方 0x22 表示数据类型 现在是 0xC
然后不同版本可能会一直报错 "方法 xxx 需要 字符串 你给老子数组干啥!"
而这个是写死在 RGSS 已经编译了的代码里的 这就很麻烦了
此外还有很多我不了解的细节

第二个方案是依据汇编写出源码来
这个应该工作量有点大 难度也大.. 但是一旦写完了 那就完事了
爱用啥版本用啥版本

我用了 RubyInstaller 编译的  下面是那个半成品表明此事可行..
换到了 1.8.7 可以运行默认脚本了 不过切个几下菜单或者啥的会弹错 因为没换干净 能运行了我就没继续了
退出游戏也会弹错 毕竟原 api 被置换了 原脚本解释器肯定不能用了..

ruby版本替换测试.zip (684.05 KB, 下载次数: 72)

能力有限 暂且如此

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
39607
在线时间
7482 小时
注册时间
2009-7-6
帖子
13482

开拓者贵宾

2
发表于 2018-9-8 23:33:57 | 只看该作者
不如重制来得方便,RGD已经有这个打算了,直接换成最新的好了

点评

黄鸡啊 你这个饼什么时候烙好啊【orz  发表于 2018-9-14 00:16
本来就是嘛,干嘛受EB的气  发表于 2018-9-9 20:35
有完整版的ruby就好了 意味着gem里的很多库就可以用了  发表于 2018-9-9 18:14
醋瞎……  发表于 2018-9-8 23:43

评分

参与人数 4+4 收起 理由
天使喝可乐 + 1 阿皮鸡马克
百里_飞柳 + 1 触哭
SixRC + 1 赞成
guoxiaomi + 1 促销

查看全部评分

RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-4-20 12:38

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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