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

Project1

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

[讨论] 關於load_data的讀取問題

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
95
在线时间
18 小时
注册时间
2008-1-22
帖子
46
跳转到指定楼层
1
发表于 2010-5-19 18:19:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
假設我有一個檔案
它像存檔檔案一樣 有至少兩層以上的marshal字串儲存區
我想知道 如何用load_data實現讀取兩層以上字串?
因為我最近試著把該檔案在"製作遊戲安裝檔"過程時一起加密進去
不過我用File.open的方式 似乎因為有加密而讀不到、
也已經清楚只有load_data可以讀取加密過的檔案。
我參閱過說明書了
它只說:
  1. load_data(filename)
  2. 讀取 filename 指定的資料文件,重建目標。

  3. $data_actors = load_data("Data/Actors.rxdata")

  4. 這個函數基本上和 File.open(filename, "rb") { |f|
  5.   obj = Marshal.load(f)
  6. }

  7. 相同,但讀取加密檔案文件內部的文件時會有所不同。
复制代码
不過因為該檔案有兩層以上的字串儲存區
所以用load_data只能讀取到第一層

可是我想要讓它讀取兩層以上的字串
說明書卻不公開讀取的原碼

應該如何讓它讀取呢?

Lv2.观梦者 (管理员)

八云紫的式神

梦石
0
星屑
614
在线时间
1243 小时
注册时间
2008-1-1
帖子
4282

烫烫烫

2
发表于 2010-5-23 06:37:49 | 只看该作者
有个比较麻烦的方法:用Marshal.load分别读出两层,分别写入文件,然后load_data
rm for linux(wine)制作中,期待夏娜SAMA能实现到webrm上
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
95
在线时间
18 小时
注册时间
2008-1-22
帖子
46
3
 楼主| 发表于 2010-5-23 20:39:47 | 只看该作者
本帖最后由 土撥撥 于 2010-5-23 20:48 编辑

謝謝你的回答,
但是我的用意就是要讓他一次讀取整個檔案(加密檔裡面)
因為我把數據庫的檔案壓縮成5~6個檔案了,
如果再把它Marshal.load、分別寫入文件
就變得跟預設的數據庫儲存方式沒兩樣了....

是否能夠將load_data以某種方式重新定義一遍呢?
RGSS研究專員
回复 支持 反对

使用道具 举报

Lv2.观梦者 (管理员)

八云紫的式神

梦石
0
星屑
614
在线时间
1243 小时
注册时间
2008-1-1
帖子
4282

烫烫烫

4
发表于 2010-5-23 20:47:21 | 只看该作者
不太好办嗯,加密档案的是用来加密的,EB自然不会公开其源码
不过加密本身就支持打包多文件了,为什么还要分别存N次,写进一个文件里
直接生成包含那些资料的加密档案不就好吗
rm for linux(wine)制作中,期待夏娜SAMA能实现到webrm上
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
95
在线时间
18 小时
注册时间
2008-1-22
帖子
46
5
 楼主| 发表于 2010-5-23 20:50:01 | 只看该作者
本帖最后由 土撥撥 于 2010-5-23 21:10 编辑

不不不...我認為現在的加密已經沒用了(因為解密器的氾濫)

我想要先用Marshal的方式把壓縮的資料庫合併起來
(創意來自 http://rpg.blue/forum.php?mod=viewthread&tid=137212&extra=page%3D3  )、

再用一層加密(雖然一些人破解得了,但至少能防止另一部份的人)

兩層一起用
RGSS研究專員
回复 支持 反对

使用道具 举报

Lv2.观梦者 (管理员)

八云紫的式神

梦石
0
星屑
614
在线时间
1243 小时
注册时间
2008-1-1
帖子
4282

烫烫烫

6
发表于 2010-5-27 18:46:31 | 只看该作者
如果你能知道加密算法,或者拿到了解密器的源码,那么你可以直接open那个文件然后解密
如果你没有解密算法,那还是应该视为那种加密是不可破解的
如果只是为了防解密器的话,随便改改数据结构,就算是简单的把那几个rxdata文件名替换一下,把素材随便找个算法压缩一下,就能唬住不少人了,没必要双加,因为你总得用个的scripts.rxdata或者rgssad来供game.exe调用,这个文件是可以直接看到脚本或者用解包器解密的,你的外层防备无用

评分

参与人数 1星屑 +500 收起 理由
「旅」 + 500 认可答案

查看全部评分

rm for linux(wine)制作中,期待夏娜SAMA能实现到webrm上
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
95
在线时间
18 小时
注册时间
2008-1-22
帖子
46
7
 楼主| 发表于 2010-5-28 21:46:33 | 只看该作者
好吧,那我就放棄了..
謝謝你@@
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
帖子
1924
8
发表于 2010-6-16 14:10:54 | 只看该作者
重载一下 load_data,在原 load_data 读取到了第一层后再用你的解密算法扒开第二层不就好了吗?还是说我理解错了…… ><
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
95
在线时间
18 小时
注册时间
2008-1-22
帖子
46
9
 楼主| 发表于 2010-6-20 17:08:57 | 只看该作者
回复 紫苏 的帖子


    可是我根本就不知道要怎麼重載啊- -
    根本不知道加密算法要怎麼反過來寫
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
帖子
1924
10
发表于 2010-6-20 22:59:14 | 只看该作者
懵了,你不是说用 load_data 已经读取到第一层了吗,那剩下的第二层不就不是加密的,而只是 Marshal.dump 对象序列化后的字节流了吗?这样的话重定义 load_data,调用原来的 load_data,然后再 Marshal.load 一下不就 OK 了……
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-24 13:56

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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