Project1

标题: rgss3a解包器的ruby脚本版 [打印本页]

作者: 余烬之中    时间: 2014-7-28 16:37
标题: rgss3a解包器的ruby脚本版
本帖最后由 余烬之中 于 2014-7-28 18:39 编辑

很早就看到@fux2 的rgss3a解包算法,前几天又看到@taroxd 的ruby实现,因为他写在群组里所以准备直接过去学习的,结果…………权限不够看不到……………………

不过也在意料之中,那种东西公开的话反而不是一件好事,花了一下午对着算法自己实现了,ruby中字节不能直接异或把我绕了好一阵子,最后想到这个算法面向的是C/C++,既然是四字节应该转换为长整型就可以了,事实证明我没有猜错

对了,突然想起来@fux2 一开始我用 == "RGSSAD  "判断发现永远false 多测了几遍确认是 "RGSSAD\x00\x03" puts出来是一个可爱的小桃心:RGSSAD ♥

脚本如下:

我怎么可能把脚本给你们呢?

输出结果如下:
Begin

Try to open archive...
Archive opened successfully.

Analyse Files...
-File #1: Data\Actors.rvdata2
--Offset: 605        Length: 2445
-File #2: Data\Animations.rvdata2
--Offset: 3050        Length: 218370
-File #3: Data\Armors.rvdata2
--Offset: 221420        Length: 10555
-File #4: Data\Classes.rvdata2
--Offset: 231975        Length: 21046
-File #5: Data\CommonEvents.rvdata2
--Offset: 253021        Length: 543
-File #6: Data\Enemies.rvdata2
--Offset: 253564        Length: 11144
-File #7: Data\Items.rvdata2
--Offset: 264708        Length: 3196
-File #8: Data\Map001.rvdata2
--Offset: 267904        Length: 2245
-File #9: Data\MapInfos.rvdata2
--Offset: 270149        Length: 108
-File #10: Data\Scripts.rvdata2
--Offset: 270257        Length: 137055
-File #11: Data\Skills.rvdata2
--Offset: 407312        Length: 30440
-File #12: Data\States.rvdata2
--Offset: 437752        Length: 4961
-File #13: Data\System.rvdata2
--Offset: 442713        Length: 4360
-File #14: Data\Tilesets.rvdata2
--Offset: 447073        Length: 66326
-File #15: Data\Troops.rvdata2
--Offset: 513399        Length: 4959
-File #16: Data\Weapons.rvdata2
--Offset: 518358        Length: 12354
All files analysed.

Extract Files...
-Extracting File #1: Data\Actors.rvdata2
--Succeed.
-Extracting File #2: Data\Animations.rvdata2
--Succeed.
-Extracting File #3: Data\Armors.rvdata2
--Succeed.
-Extracting File #4: Data\Classes.rvdata2
--Succeed.
-Extracting File #5: Data\CommonEvents.rvdata2
--Succeed.
-Extracting File #6: Data\Enemies.rvdata2
--Succeed.
-Extracting File #7: Data\Items.rvdata2
--Succeed.
-Extracting File #8: Data\Map001.rvdata2
--Succeed.
-Extracting File #9: Data\MapInfos.rvdata2
--Succeed.
-Extracting File #10: Data\Scripts.rvdata2
--Succeed.
-Extracting File #11: Data\Skills.rvdata2
--Succeed.
-Extracting File #12: Data\States.rvdata2
--Succeed.
-Extracting File #13: Data\System.rvdata2
--Succeed.
-Extracting File #14: Data\Tilesets.rvdata2
--Succeed.
-Extracting File #15: Data\Troops.rvdata2
--Succeed.
-Extracting File #16: Data\Weapons.rvdata2
--Succeed.
All files extracted.

End


Now Check Completeness...
-Checking File #1: Data\Actors.rvdata2
--OK!
-Checking File #2: Data\Animations.rvdata2
--OK!
-Checking File #3: Data\Armors.rvdata2
--OK!
-Checking File #4: Data\Classes.rvdata2
--OK!
-Checking File #5: Data\CommonEvents.rvdata2
--OK!
-Checking File #6: Data\Enemies.rvdata2
--OK!
-Checking File #7: Data\Items.rvdata2
--OK!
-Checking File #8: Data\Map001.rvdata2
--OK!
-Checking File #9: Data\MapInfos.rvdata2
--OK!
-Checking File #10: Data\Scripts.rvdata2
--OK!
-Checking File #11: Data\Skills.rvdata2
--OK!
-Checking File #12: Data\States.rvdata2
--OK!
-Checking File #13: Data\System.rvdata2
--OK!
-Checking File #14: Data\Tilesets.rvdata2
--OK!
-Checking File #15: Data\Troops.rvdata2
--OK!
-Checking File #16: Data\Weapons.rvdata2
--OK!
Perfect!

作者: taroxd    时间: 2014-7-28 16:54
本帖最后由 taroxd 于 2014-7-28 17:05 编辑

代码已PM,欢迎收看,顺便求你的实现

对了,突然想起来@fux2 一开始我用 == "RGSSAD  "判断发现永远false 多测了几遍确认是 "RGSSAD\x00\x03" puts出来是一个可爱的小桃心:RGSSAD ♥

不直接打开文件看一看么囧rz...


另外我这玩意儿就是写着玩的,基本上啥都没有检查,毕竟我写了我自己都不准备用= =
作者: 双黄连2_副本2    时间: 2014-7-28 17:34
这是什么东西?
作者: kuerlulu    时间: 2014-7-28 17:40
为什么我puts不出桃心= =
LZ好腻害!【直接伸手拿taroxd的路过
作者: 双黄连2_副本2    时间: 2014-7-28 17:56
随便翻开别人加密的东西不好的说←_←
作者: taroxd    时间: 2014-7-28 18:07
看了一下……

楼主别忘了给 filename 给 force_encoding Encoding::UTF_8 一下
作者: 柳泖    时间: 2014-7-28 18:11
本帖最后由 柳泖 于 2014-7-28 04:27 编辑

你确定比RPGDERC好用吗
作者: fux2    时间: 2014-7-28 20:00
顺便弄个加密2333
作者: vince3725    时间: 2014-7-28 23:24
发图不留种,菊♂花万人捅。2333喵~




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1