RGSS加密文件解包器,可以查看RPGVR游戲里的東西和修改,要配上RPG制作文件。
有些人用著盜版的Windows,網上下載的RpgMaker,商業游戲的素材,別處抄來的RGSS腳本,復刻的老游戲的劇情,最后發布的時候卻加了密,的確是不厚道的做法。
本文將簡單介紹RGSSAD文件的解密方法,以及更好的加密方案。
作者:leexuany(小寶)
RGSSAD Extractor
RGSSAD Extractor的工作原理是讓游戲自己解密RGSSAD文件,當游戲把資源讀入內存之后,在通過腳本抓取內存。
因此RGSSAD Extractor 存在兩個缺點:
1、它提取的并不是RGSSAD包內的原始素材。你可以在游戲里添加一張jpg格式的圖片,如果不出意外RGSSAD Extractor 解出來的肯定是png格式的。雖然畫面是一樣的,但是對于我這樣的素材完美主義者,這是決不允許的。
2、它的提取速度實在是太慢了,等待的時間足以使人瘋掉。
因此我們需要知道RGSSAD的格式,然后寫自己的解包工具。
RGSSAD資源格式
開始的8字節是文件標志,用于判斷是不是RGSSAD文件。然后是n個
struct SubFile
{
unsigned long filenamesize;
filenamesize 字節的文件名;
unsigned long filesize;
filesize 字節的文件正文;
};
不過所有的SubFile結構都是xor加密過的。MagicKey的初值是0xDEADCAFE
MagicKey 的變換規則為 MagicKey = MagicKey * 7 + 3;
其中文件名是按字節異或,filenamesize filesize 以及文件正文都是按雙字異或的。
防范措施與加密方案
方案一:使用自己的加密/解密算法
第一種加密方案是修改RGSS102J.dll中的解密算法,然后自己把素材打包成RGSSAD格式。
此方案要求使用者對程序設計以及二進制文件的修改有一定的基礎。
由于小寶現在還沒有試過外掛dll這種技術,所以這里介紹一個相對簡單的方法——修改MagicKey的初始值。在前面一節中,我們知道RMXP是使用0xDEADCAFE作為MagicKey的初始值,那么我們把RGSS102J.dll中的DEADCAFE修改掉,然后自己打包就可以防范那些一般的解包工具(比如我提供的那個,還有RGSSAD Extractor)。
當然,如果你覺得有必要的話,還可以給這個修改過的dll文件加一個強殼,然后隨游戲發布。
方案二:混淆文件名
第二種加密思路是混淆文件名。在Windows操作系統下,有 //:*?"<>| 這9個字符是不能用作文件名的。除去//表示文件目錄,我們還有7個特殊字符可用。如果在原有文件名中加入這幾個本來不能用的字符,那么解包程序就會因為不能正常創建文件而提取失敗。
注:此方法需要自己打包資源文件,以及修改rxdata文件,工作量比較大。
混淆不能絕對保證自己的游戲不被盜用,它的主要目的是打擊盜用者的信心,讓他在還沒有導出全部素材的時候就已經垂頭喪氣,精疲力盡了。
當然對于游戲而言,無論什么樣的加密方案都只是增加破解者的工作強度,而不能真正保護自己的素材不被提取,因為素材終歸是要在游戲中使用的。