• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 94, comments - 250, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            http://www.ayssss.cn/

            最近老有人問我是不是出了改dota英雄技能的外掛,什么月騎無限大,劍圣無限斬,巫妖無限彈之類。
            我在這里一并回答一下,并且稍微說說原理。因為我對地圖方面其實是一竅不通,如果有說的不對的地方,還請指正。

            其實這些現象都是使用了作弊地圖導致的。本來魔獸爭霸是有一個地圖驗證的,如果你跟主機的圖不同,是進不去的(要下載地圖)。但是魔獸對地圖中的war3map.j文件是進行bcc(block check character)校驗的,bcc不同于md5,bcc一般只是用來排錯的,并不是加密算法。所以就有人寫出了這樣的代碼,可以在b文件末尾添加上一些不起作用的字串,來讓b文件的bcc校驗碼等于a文件(具體代碼我就不貼出來了,很容易搜到)。于是呢,我們就可以做到隨意修改地圖中的war3map.j ,然后再處理一下,使之跟原來的war3map.j的bcc校驗碼相同。再把改過并處理后的war3map.j文件替換原來的,這樣做出來的作弊地圖,暴雪的驗證會因為bcc校驗相同,而把它認為和原版圖是相同的。達到的效果就是,別人用正版圖建主機,你可以進入,你用盜版圖建主機,別人用正版圖也可以進入。但是別以為可以為所欲為的修改war3map.j ,雖然你突破了驗證這一關進入了游戲,但是魔獸的聯機機制是沒有辦法突破的。

            在這里稍微談一下魔獸的聯機機制,沒興趣的請略過這一段。魔獸聯機時,一直有個同步機制,每個聯機的玩家都會同時計算所有數據,一旦有不一致,就會導致掉線,這也是為什么用金山游俠之類的游戲修改器單機時可以改錢,聯機時一改就掉線。因為你只能修改你自己的機器上的數據,而無法改別人的,單方面修改的結果就是造成你跟其他人不同,你就會掉線。當然,如果所有人同時修改的話,仍然是不會掉線的,所以現在有一些聯機修改器,參加游戲的幾個玩家一起開這個修改器,可以在玩rpg時改錢什么的,我幾個同學就老是用這種修改器來通關一些很難打的rpg圖。順便說一下,這樣玩下來保存的replay是無法正常播放的,因為replay只記錄動作,你使用修改器的改動不會被記錄,播放replay時會因為你并未像你游戲時那樣修改數據,造成replay不合邏輯而出錯。再順便說一下吧,為什么所謂的人品外掛并不能實現。曾有人發帖抱怨,怎么藍胖子次次放招都多重施法,怎么某人每次都暴擊,他們是不是用了人品掛。其實這是不可能的,有人以為魔獸中的隨機數據都是由主機計算的,這樣主機就可以找到辦法來修改隨機數,造成每次都對他有利的結果。但是實際中并非如此,隨機數也是所有人一起計算的,也就是說魔獸里的隨機是個偽隨機。在一局游戲一開始時,主機會發給每個玩家一個隨機數種子(這個種子很有可能就是主機從建立主機到游戲開始所經歷的毫秒數),之后的一整局中,所有的隨機數都根據這個隨機數種子,依照事先定好的算法計算出來,這樣也就保證了所有人計算出同樣的“隨機”結果。另外,這個隨機種子也會記錄進replay,這也從一個側面說明了魔獸里的隨機是偽隨機,如果是真的隨機,replay就無法重現了。說的有點多了,下面回到正題。

            因為魔獸聯機機制的存在,你要是隨意改了war3map.j,例如改成給自己增加10000的錢,但是別人是按照的沒有修改的war3map.j,在別人機器中你是沒有那么多錢的。這時你買一個8000的物品,在你自己機器上是可以的,因為你有10000的錢,但是在其他人機器上,你錢卻根本不夠!這樣的不合理動作就會造成你跟其他人斷開連接。
            也就是說,你只能修改那些不會造成沖突的地方。例如有些作弊圖可以顯示出地圖全開的效果,因為這些顯示的東西只是在你本地機器上顯示出來的,并不會對其他玩家照成沖突。類似這樣的修改都是可行的,不會掉線。
            那么,為什么會出現這種有變態技能效果的dota作弊圖呢?我剛開始也很困惑,這么夸張的改動怎么竟然沒有掉線?我跟朋友要了個作弊圖玩的replay,在我的機器上,用正版dota地圖播放,竟然完全再現了那些變態效果!因為我對地圖方面并不了解,所以開始上網找資料,并通過qq向某些搞地圖的高人請教,又下載了那個變態版dota作弊圖和某平臺私自山寨的所謂“原版”dota圖,提取出來war3map.j來進行對比。經過n久的努力,總算搞明白他是怎么改出來這種效果的了。
            原來是因為dota使用到了game cache,而作弊圖是單方面修改了game cache中的數據,然后通過函數同步給了所有的玩家。通俗點說,game cache相當于一個池子,所有玩家共享這塊區域,任意一個玩家都可以修改這個池中的數據,也可以發出通知,讓所有人都來同步這個池子,這樣就變相修改了其他人的數據。舉個例子,例如dota里黑曜石的放逐技能,它可以減少一個人的智力,一分鐘后再歸還給他,dota里關于這個技能的函數,把目標和要歸還的智力值記錄在game cache中,1分鐘之后會再從game cache取出目標和智力值,給目標加上相應的智力值,就完成了歸還這個人的智力的過程。但是在作弊圖中,這里增加了代碼,先進行一個判斷,如果黑曜石是本機玩家,會把game cache中記錄的目標改成本方隨機的一個隊友,然后把game cache中記錄的智力值改為500,然后通知所有玩家同步game cache中的這兩個值,這樣就完成了對所有人game chche中這兩個值的修改。1分鐘一到,dota就會向這個目標“歸還”智力,這樣,本方的一個玩家就憑空增加了500智力。(那個被減少智力的倒霉玩家就無法被歸還了,可憐)
            大致的原理就是這樣了,具體細節我就不詳細敘述了。不過dota用到game cache的地方其實并不多,所以能改的地方也就那幾個。這也是為什么作弊圖要專門改這幾個地方,而不是改成例如加錢或者加攻擊力或者直接勝利之類的,不是不想改,而是無法實現。另外,暴雪官方的地圖是不會這樣使用game cache的,所以不用擔心對戰地圖被改(另外對戰圖還有暴雪標志的保護)。其他的rpg地圖,如果本身沒有用到game cache的,也就改不出來什么花樣,最多顯示個全圖之類。

            暴雪將會在1.23修補這個地圖驗證漏洞,目前1.23的補丁已經在測試中了,相信升級之后,這種改圖作弊將不復存在。只是不知國內玩家到時是不是還要繼續死守bug頻出的1.20呢?
            強行插入廣告一則:浩方平臺會再對地圖進行自己的驗證,md5驗證,作弊圖是無法通過的。
            至于做山寨dota圖的某平臺嘛,就我目前來看,它是沒有任何地圖驗證的,唉。

            應廣大群眾強烈要求,這里給出山寨版dota 6.57c的作弊圖鏈接地址,請大家自行圍觀(話說我參照這個做出了58b和59c的作弊圖,活活活):
            http://sc2dota.com/news/310.html

            无码精品久久一区二区三区 | 久久精品国产乱子伦| 久久久久人妻精品一区三寸蜜桃| 久久国产精品免费一区二区三区| 亚洲综合婷婷久久| 亚洲欧洲久久久精品| 国产情侣久久久久aⅴ免费| 久久午夜福利电影| 久久国产乱子伦免费精品| 日韩美女18网站久久精品| 亚洲va中文字幕无码久久| 久久人人爽人人爽人人片AV麻豆| 久久久精品人妻一区二区三区蜜桃| 99热成人精品热久久669| 欧美精品国产综合久久| 久久久久久一区国产精品| 亚洲va久久久噜噜噜久久| 国产亚州精品女人久久久久久| 无码八A片人妻少妇久久| 久久亚洲国产精品一区二区| 麻豆成人久久精品二区三区免费 | 久久99九九国产免费看小说| 精品熟女少妇a∨免费久久| 伊色综合久久之综合久久| 狠狠精品干练久久久无码中文字幕| 亚洲精品无码久久久影院相关影片| 99热热久久这里只有精品68| 嫩草影院久久99| 久久精品国产亚洲AV电影| 精品久久久中文字幕人妻| 亚洲精品视频久久久| 国内精品久久久久久中文字幕| 久久精品国产91久久综合麻豆自制| 久久99精品久久久久久动态图 | 人人狠狠综合久久88成人| 久久人妻少妇嫩草AV蜜桃| 亚洲欧美国产精品专区久久| 久久天天躁狠狠躁夜夜av浪潮| 精品久久久久久久久久中文字幕 | 97久久国产亚洲精品超碰热| 久久精品中文字幕无码绿巨人|