0
[分享] 轉一些關於解密地圖的文章,以及請教些問題
nataraja

[WE] 談加密地圖的原理,破解加密地圖的可能及研究加密地圖的方法 
 

作者:Soar    文章來源:GA    點擊數:1743    更新時間:2005-12-13
 
 
 
作者: Soar     
2005-04-21  
1.不可還原式刪除加密, 即破壞性加密
說明: 這種加密難度小, 方法簡單, 比較常用
原理: 魔獸的地圖是一個mpq壓縮文件, 裡面存放了一些遊戲中和WE中要用的數據, 其中一部分數據是只有WE要用而遊戲時不要用的, 我們可以將它們移掉, 造成啟動WE無法讀到相關數據
方法: 1.用Import Manager導入這些文件的替代空文件  2.用mpq工具刪掉這些文件
破解可能: 由於需要的文件已經被移掉, 而Jass->Trigger的還原難度非常大, 所以基本不能完全還原原來的地圖

2.可還原式移動加密
說明: 這種加密比較複雜, 但可以利用一些密鑰還原
原理: 根據上面一種方法的原理, 我們把地圖裡的一些文件改名為特殊的文件名或者移動到特殊的目錄去, 並且刪掉(listfile), 這個文件是用於獲取mpq格式的文件裡面的文件列表的, 這樣WE也無法讀取到這些文件從而無法啟動
方法: 根據一定的算法把密鑰哈希成一個字符串, 然後把文件改名或者移動到用這個字符串生成的文件名裡. 還原時只要有密鑰就可以找到移動後的文件並還原
破解可能: 這些算法通常是md5等不可逆算法, 或RSA等大素數可逆算法, 加上我們根本連移動或改名後的文件名或路徑都不知道, 基本很難破, 除非你知道密鑰



3.可還原式破壞WE顯示加密
說明: 該方法簡單但如果被知道了了方法很容易破解
原理: WE啟動時和讀取地圖時會讀取一些模型, 音樂, 貼圖等, 如果我們導入一些錯誤的文件, 在WE讀取時會先讀地圖裡的文件, 就會因為這些錯誤的文件而出錯
方法: 我自己不太清楚可以導哪些文件, 大家可參考以前的一些帖子
破解可能: 如果你知道這個方法, 那麼只要從地圖裡刪除壞文件就可以了





然後講一下幾個加密中會用到的技巧:
1.刪掉(listfile), 這樣別人不能看你的文件列表, 無法知道你的加密方法
2.把war3map.j移動到Scripts\目錄下, 這樣仍然被遊戲讀取, 但是一般人不知道就會無法解壓出這個文件
3.針對一些mpq工具可能會將文件頭部的一個數改掉導致mpq工具無法處理, 通常offset是0x218, 用16進制工具把這個位置改為20 00 00 00即可還原




最後講一下如何研究加密的地圖:
1.學會Jass語言
2.用mpq工具解壓出war3map.j(如果沒有則參見上面的第二條解壓Scripts\war3map.j), 注意如果mpq工具如果不能讀取則按照上面第3條的做法修復文件頭
3.結合所學的Jass看war3map.j, 就能知道對方地圖的處理過程
4.關於地形的獲得我還沒有好辦法, 我把別人的地形文件導進自己的地圖會出現讀取錯誤, 估計是有些選項必須符合, 考慮到有些人加密地圖就是為了保護地形不讓別人"盜版", 所以我也沒有多做研究, 只要知道war3map.j的內容就可以學習別人所有的地圖處理過程了




總結一下:
解密是很難的, 但是可以通過解壓war3map.j來分析別人的地圖, 希望這篇文章對大家關於加密解密的爭論能給出一個理論依據
 
 

 

來源IP:218.162.174.*

回應本文

請問要如何解出war3map.j呀??
想把一個遊戲繁體化說???
可是打不開???
來源IP:59.112.34.*
我已經找到並解出war3map.j了。
可是我不會JASS,接下來要怎麼做啊?

沒辦法用WE打開啊?會的大大拜託教一下
來源IP:218.162.174.*
引用:s1690 的文章。  文章來源:http://bbs.99nets.com


如何修復被破壞的RPG地圖/對戰地圖

1: 破壞 MPQ 文件頭大小信息 
魔獸爭霸III的地圖就像一個Zip文件。 首先是一個 512 字節大小的地圖文件頭,它記錄了一些信息。然後附帶一個MPQ 檔案, 
這個MPQ 檔案中包含了一個地圖所需的全部文件。 MPQ 文件的前4個字節是一個標識符。它可以被識別為 』MPQ』。接下來的4個字節 
是文件頭大小,通常是16進制 hex 0x20 00 00 00的形式。 有些加密者將 0x20 00 00 00 改成一個隨機數值,例如hex 0xF6 6E BA 76這個 
樣子。 目前多數 MPQ 程序因為大小錯誤而無法打開這樣的 MPQ 檔案。而 Warcraft3 似乎忽略了這種錯誤的文件頭大小,所以這些地圖 
仍可以在魔獸中運行。 
這種加密只要把數值改回 0x20 00 00 00就可以輕易破解掉。 


2: 刪除地圖內的 war3map.wtg文件 
war3map.wtg 文件中包含了地圖中所用到的變量,觸發,數組等必需信息。但這個文件只對World-Editor有用。 
war3map.wtg 文件丟失或者被改動都將導致 World-Editor 無法讀取地圖。 
當然,這種加密也可以完美地解除。 通過一個小程序你就可以利用war3map.j 文件中存儲的信息來重建 war3map.wtg 文件。 
本網站忽略掉war3map.wtg 文件,而是直接從war3map.j 文件中提取諸如觸發數目,變量數目等信息。 
你可能注意到,既然一個簡單的 PHP 腳本就可以提取出 war3map.j,那麼使用其它腳本就有可能重建war3map.wtg 文件。 

2b: 刪除 war3map.w3c, war3map.w3s, war3map.w3r 文件 
war3map.w3c 存儲了world editor的鏡頭設置。 war3map.w3s 存儲了world editor在地圖中所設置的聲音。 war3map.w3r 存儲了world editor中的區域設定。 
這幾個文件同樣只對World Editor有用,而且同樣可以通過 war3map.j 文件進行重建。參見上面的 「刪除地圖內的 war3map.wtg 文件「 。 

3: 隱藏 war3map.j 文件 
有些耍小聰明的加密者找到了隱藏 war3map.j 的辦法,這樣我們就無法用一個網頁腳本來輕易將它解出了。 
正規的地圖中 war3map.j 是直接保存在根目錄裡的。而這些加密者發現把它移動到 「Scripts\「下面也可以正常運行。 
只要知道了這一點,就很容易破解這種加密 ;-) 非常感謝 BahamutZERO 和Quantam 

4: 打亂war3map.j 文件 
有些加密者認為自己很聰明,他們用隨機數字重命名了所有的變量和函數。這使常人很難讀懂 war3map.j 文件。但這對腳本是不起作用的。 
我為這個網站所寫的腳本根本不在乎關鍵字,它只搜索模式,所以我仍然可以從地圖中提取我所需要的信息 ;-) 
只要借助能夠重建 war3map.wtg 的腳本,這種加密方法同樣可以破解。恐怕你唯一沒法改變的就是已經重命名的變量和函數。 
但這並不重要,因為你仍然可以用world editor打開它。
來源IP:218.175.98.*
產生本頁面所需時間:0.096 秒