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