文章出處
文章列表
這個是資源文件的映射。
根據index.swf的加載流程,直到初始化會加載:
破解方式:
var l:URLLoader = new URLLoader(); l.dataFormat = URLLoaderDataFormat.BINARY; l.addEventListener(Event.COMPLETE, function(e:*):void{ var data:ByteArray = l.data; data.uncompress(); var byteObj = unCompress(data, _resEncryptKey); data = byteObj.bytes; data.position = 0; data.uncompress(); trace(data.readUTFBytes(data.length)); }); l.load(new URLRequest('../resmark.swf'));
其中:unCompress的方法:
public static function unCompress(param1:ByteArray, param2:String) : Object { var _loc_3:Number = NaN; var _loc_4:* = new ByteArray(); var _loc_5:String = ""; var _loc_6:String = ""; param1.position = param1.length - 1; var _loc_7:String = ""; var _loc_8:* = param2.length - 1; while (_loc_8 > -1) { if (_loc_7 == "") { _loc_7 = param2.substr(_loc_8, 1); } else { _loc_7 = param2.substr(_loc_8, 1) + _loc_7; } _loc_8 = _loc_8 - 1; } _loc_3 = param1.length - param2.length - 1; var _loc_9:Number = 0; var _loc_10:* = new ByteArray(); var _loc_11:int = 0; while (_loc_11 <= _loc_3 - 2) { if (_loc_9 >= _loc_7.length) { _loc_9 = 0; } _loc_10.writeByte(param1[_loc_11] - _loc_7.charCodeAt(_loc_9)); _loc_11++; _loc_9 = _loc_9 + 1; } var _loc_12:* = new Object(); _loc_12.bytes = _loc_10; return _loc_12; }// end function
至于加密的key,就不說了。會被跨省。 解壓出來大概內容:
<resmark> <!-- 游戲資源標識系列信息 --> <!-- 如設參數isAbsoluteURL: 是否絕對路徑 主要是方便以后策劃更新數值后,設置不同路徑的調試 --> <!-- 加密類型:encryptType 無此參數 或值為0,則沒有加密,根據后綴相應加載,1為XML文件類型加密,2為SWF類型加密,3為圖片類型加密,4為純二進制文件 --> <!-- 公共域Id: domainId: 1 (公共資源),2(角色動作), 3: 其它模塊,角色創建(1000), 4:怪物、NPC動作, 9:副本 10(戰斗模塊), 11(log面板) --> <!-- 隱式加載添加優先級priority: <0(不需要進行隱式加載) >=0(按照優先級進行隱式加載)--> <!-- 是否本地儲存對象:isSharedObject 1 為本地儲存對象 --> <!-- 動作模型:角色或怪物跑及站立動作與戰斗動作(攻擊、受擊、戰斗待機)分開,但程序最終以跑和站立動作Id為準,戰斗動作需加入動作Id源參數:sourceResId= 跑和站立動作Id,程序會自動合并至同一動作對象 -->
文章列表
全站熱搜