sol文件解析(頭部信息)

最近由于工作需要將原本flex解析的.sol文件邏輯改為c++版本dll打包到客戶(hù)端中,從而解決端游無(wú)法采集到瀏覽器中的廣告數(shù)據(jù),所以對(duì)sol文件的解析有一定的研究,下面將部分成果公開(kāi)供大家學(xué)習(xí)和補(bǔ)足用。

sol文件是swf文件所產(chǎn)生的,所以flex讀取sol文件只需要使用
var so:SharedObject = SharedObject.getLocal("xxx");即可獲取到flex本地?cái)?shù)據(jù),我們并不需要了解sol是如何編碼的,解碼的過(guò)程SharedObject已經(jīng)幫我們做了。

如果改為c++版則需要我們自己解析sol,解析之前我們就必須了解sol是如何進(jìn)行編碼的,網(wǎng)上的相關(guān)資料很少,所以只能通過(guò)最笨的方式來(lái)尋找編碼規(guī)則,我的方式是通過(guò)編寫(xiě)flex寫(xiě)入不同的值然后在使用c++讀出16進(jìn)制碼進(jìn)行比較,看存入1與存入2有什么不同,存入整數(shù)與存入字符串有什么不同從而找出規(guī)律。

部分測(cè)試代碼

對(duì)應(yīng)的讀取結(jié)果

測(cè)試結(jié)果.jpg

下面分別對(duì)不同類(lèi)型進(jìn)行解析說(shuō)明,目前只研究了基礎(chǔ)的數(shù)據(jù)類(lèi)型且AS版本為3.0,其余版本解析略有不同未做研究。

頭部信息(基礎(chǔ)信息)解析

sol文件總是以00 BF開(kāi)頭,所以我們可以先讀取這兩個(gè)數(shù)看是不是有效的sol文件再?zèng)Q定是否往下解析。
接著4個(gè)字節(jié)表示塊大小,表示此后所有字節(jié)的長(zhǎng)度。
然后是固定的10個(gè)字節(jié)54 43 53 4F 00 04 00 00 00 00
緊接著兩個(gè)字節(jié)表示SharedObject表名的長(zhǎng)度,隨后的N個(gè)字節(jié)表示表名,N等下前兩個(gè)字節(jié)表示的長(zhǎng)度。
表名后4個(gè)字節(jié)表示AS的版本00 00 00 00為2.0版 00 00 00 03為3.0版。
上面所介紹的是sol文件頭部信息,也是一些基礎(chǔ)信息,接下來(lái)的數(shù)據(jù)是sol的數(shù)據(jù)區(qū),數(shù)據(jù)區(qū)的解析根據(jù)AS不同的版本有所不同,
上面測(cè)試數(shù)據(jù)為例頭部信息解讀實(shí)例:

基本信息解析

數(shù)據(jù)區(qū)的解析將在隨后更新。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 國(guó)家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說(shuō)閱讀 11,123評(píng)論 6 13
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,098評(píng)論 25 708
  • 簡(jiǎn)介 用簡(jiǎn)單的話(huà)來(lái)定義tcpdump,就是:dump the traffic on a network,根據(jù)使用者...
    保川閱讀 5,987評(píng)論 1 13
  • 曾記昔年舊故,散值日已夕幕,攜手歸家路,誤搭錯(cuò)車(chē)返途。迷糊,迷糊,路癡孩童不如。
    冠李戴閱讀 157評(píng)論 0 0
  • 就算世界天長(zhǎng)地久,我也不愿意多等一秒,只想和你在一起,共世界同時(shí)間
    殤三盅閱讀 165評(píng)論 0 0