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

Project1

 找回密码
 注册会员
搜索
查看: 6624|回复: 9

[已经过期] 怎么不加密也不会让别人打开工程

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
29 小时
注册时间
2014-5-11
帖子
35
发表于 2015-7-11 22:15:50 | 显示全部楼层 |阅读模式

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

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

x
我最近玩了1款DNF单机版的游戏,我想试图打开那个工程,可是他那个游戏并没有加密啊,打开的时候显示读取角色失败!怎么才能让自己的游戏像DNF一样!

Lv1.梦旅人

梦石
0
星屑
76
在线时间
1379 小时
注册时间
2012-7-5
帖子
1698

开拓者

发表于 2015-7-11 22:24:23 | 显示全部楼层
把脚本中的读取数据库文件名和Data下对应文件名改掉 那么工程就无法读取 游戏仍能运行【然而你就不能编辑游戏了

点评

↓ 前提是那人能够在打不开工程的情况下改Script.rxdata  发表于 2015-7-13 13:01
话说这样只要改回来就好了。。。  发表于 2015-7-13 09:48

  -fk: -azogi:
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
150
在线时间
332 小时
注册时间
2013-7-6
帖子
356
发表于 2015-7-12 04:40:33 | 显示全部楼层
加密方法有两种:
混淆文件名法
--game.exe程序默认有一个script.rxdata的脚本初始位置,可以通过重写game.exe.或更改game.ini来实现混淆脚本文件,
密钥加密法
--文件在电脑里都以二进制存储,也就是1和0组成的数据。我们把1和0进行一些有规律的运算,然后在rgssxxx.dll中将运算反过来算,得到真正的数据。

解密方法这里不做讨论。
rmxp打开一个工程首先要创建game.rpgorj文件,内容为rmxp版本,其次要有data文件夹,里面要有包括script.rxdata等必要数据,其中script.rxdata是脚本数据,如果你只希望查看脚本的话就把缺失的文件从新建的工程里拷贝过来。
有什么疑问请回复- -

评分

参与人数 1星屑 +150 收起 理由
RyanBern + 150 认可答案

查看全部评分

偶是熬夜学编程的傻子
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

聪仔

梦石
0
星屑
6182
在线时间
3077 小时
注册时间
2013-12-26
帖子
3145
发表于 2015-7-12 08:04:42 | 显示全部楼层
楼主的头像简直令聪聪忍不住梦遗...
聪聪全国第三帅...
他们都叫我【人赢聪】
我的RM能力雷达图:

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
29 小时
注册时间
2014-5-11
帖子
35
 楼主| 发表于 2015-7-12 16:48:04 | 显示全部楼层
kuerlulu 发表于 2015-7-11 19:24
把脚本中的读取数据库文件名和Data下对应文件名改掉 那么工程就无法读取 游戏仍能运行【然而你就不能编辑游 ...

{:2_276:}这两个都没听懂,你可不可以把第一个教程给我做个示范,截图教教我!

点评

@wolves  发表于 2015-7-12 16:51
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
29 小时
注册时间
2014-5-11
帖子
35
 楼主| 发表于 2015-7-12 16:53:17 | 显示全部楼层
kuerlulu 发表于 2015-7-11 19:24
把脚本中的读取数据库文件名和Data下对应文件名改掉 那么工程就无法读取 游戏仍能运行【然而你就不能编辑游 ...

我试了试,游戏就不能正常运行了啊!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
61 小时
注册时间
2011-10-2
帖子
19
发表于 2015-7-12 19:24:00 | 显示全部楼层
我在网上下了 热血海贼王的工程文件 覆盖上去 发现无法修改脚本和事件内容  无论怎么修改 保存后 游戏都无变化的  估计就是楼主说的情况  研究好久了
只发现一处         他得game启动程序有1M多 替换这个就启动不了  其他开放的解密游戏  下载出来的game只有64k
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
150
在线时间
332 小时
注册时间
2013-7-6
帖子
356
发表于 2015-7-12 22:36:04 | 显示全部楼层
本帖最后由 wolves 于 2015-7-12 22:44 编辑

解释下rmxp的运行机制
rmxp的game.exe是个引导程序,用来调用那个什么rgssxxx.dll来逐条解释你写的脚本
你写的脚本编辑器里的东西存在一个script.rxdata文件里。
默认用rmxp打开工程首先要寻找script.rxdata

而游戏运行时则是game.exe找rgssxxx.dll,当然,game.exe是可以改的,也就是说可以读取不叫rgssxxx.dll的库,这就是所谓的混淆dll文件名

这个dll是用来运行脚本文件的,解释的方法是game.exe通过game.ini或者在内部设置的方法获取脚本文件位置并传递给dll,也就是说脚本文件也是可以改的。

我们常在网上下一些游戏,经常发现有"捆绑"一说
rmxp进行加密的一种手段就是捆绑
把data文件夹直接捆绑到game.exe上,关于解密手段这里不做过多解释。

rmxp读取工程先读脚本script.rxdata,失败会提示读取脚本文件失败
其次是数据库的一些文件,再然后是一些地图文件。
一般与默认工程的文件名一样,这样才能读取工程。

我们用伪码表示运行机制和读取机制:
运行:
  1. 脚本位置=game.exe设置的默认脚本位置
  2. 解释器dll=game.exe设置的默认dll位置
  3. 如果 game.ini存在
  4. game.exe读取game.ini
  5. 脚本位置=game.ini设置的默认脚本位置
  6. 解释器dll=game.ini设置的默认dll位置
  7. 结束如果
  8. 获取dll的一个函数
  9. 将脚本文件当做参数传进dll运行
  10. #注:其它脚本文件都是通过script中的脚本调用的
复制代码
从上面的代码可以看出,一个rmxp程序运行最基本的文件只有3个文件
game.exe script.rxdata game.ini

而rmxp读取机制:
  1. 开始查错
  2.     读取data下的script.rxdata
  3.     读取data下的xxx.rxdata#这里代指那些角色、地图之类的rxdata文件
  4. 如果检查到错误
  5.     输出找不到错误
  6. 结束如果
  7. 加载界面
  8. 查看资源
  9. #测试运行是把$debug变量设置为true了, 然后执行game.exe
复制代码
由上面的代码看出来rmxp读取需要的文件就很多了
要求data里的所有文件都是全的(是不是自己的无所谓),game.exe存在
而其它的,例如rgssxxx.dll则是不重要的。

所以,只要data文件夹不完整,rmxp就打不开,编辑不了工程。

作为捆绑的game.exe,data文件夹实际位置在game.exe里面,所以需要一步解密的过程。




然后说下你的问题
你的rmxp提示说读取角色数据失败,按照刚刚的顺序,说明你的script.rxdata是存在的并且可用的,所以如果缺少角色,那就从默认工程里拷贝个actors.rxdata放到data里
所谓的缺什么补什么,最后就能打开了。

评分

参与人数 2星屑 +20 梦石 +1 收起 理由
1041235896 + 20 认可答案
RyanBern + 1 认可答案

查看全部评分

偶是熬夜学编程的傻子
回复 支持 1 反对 0

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
29 小时
注册时间
2014-5-11
帖子
35
 楼主| 发表于 2015-7-13 09:10:15 | 显示全部楼层
galegade 发表于 2015-7-12 16:24
我在网上下了 热血海贼王的工程文件 覆盖上去 发现无法修改脚本和事件内容  无论怎么修改 保存后 游戏都无 ...

谢谢了!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
29 小时
注册时间
2014-5-11
帖子
35
 楼主| 发表于 2015-7-13 09:19:05 | 显示全部楼层
a1813647364 发表于 2015-7-13 06:10
谢谢了!

那个wolves谢谢!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-3-29 23:56

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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