国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

揭密微信跳一跳小游戲那些外掛

lyning / 1104人閱讀

摘要:所以,我們這個小游戲發布以后,我們就開始花了很多很多時間來打擊外掛。二距離判斷像素點判斷該方法采用自目前最火的跳一跳小游戲輔助程序。

作者:Hahn, 騰訊高級UI工程師
商業轉載請聯系騰訊WeTest獲得授權,非商業轉載請注明出處。
原文鏈接:http://wetest.qq.com/lab/view/364.html


WeTest 導讀

張小龍:這個游戲發布以后,其實它的效果有點超出我們的預期,我們自己開玩笑說,這個游戲突然變成了有史以來可能用戶規模最大的一個游戲,因為它的DAU大概到了1點幾億,但同時出現了很多外掛,我沒有想到這么小的一款游戲也會有那么多外掛,我朋友圈的朋友也打出了特別高的分,但是我相信不是他自己打出來的。


1 月 15 日微信在廣州召開 2018 年的微信公開課 Pro,張小龍不僅當場玩了一把跳一跳游戲并取得了900多的高分,還特別提到了跳一跳小游戲的外掛:

在跳一跳這樣一個小的游戲里面,如果一個用戶看到里面有一堆外掛得了很高的分,對其他一些每天在練習,試圖把自己的水平提高,而打一個高分的人就很不公平,他可能就沒有動力繼續去練習,繼續超越自己個人的最高分數。所以這樣一個行為,外掛行為其實會破壞整個系統的規則,并且讓規則立即變得失效。

所以,我們這個小游戲發布以后,我們就開始花了很多很多時間來打擊外掛。

本著鉆研技術的學習態度,我對目前幾款比較火的外掛進行了源碼分析,總結出了它們的一些破解思路,其實這些作者都并非惡意,作為一個程序員,還有什么比用技術挑戰規則,突破極限要有成就感呢?

一、梳理

跳一跳的游戲可以細分為兩步驟:距離判斷 + 按壓模擬,這兩步都有下面這些解決方案:

1、距離判斷:

● 簡單方案:像素點判斷

● 進階方案:OpenCV 圖像分析

2、按壓模擬:

● 簡單方案:adb/wda 指令

● 進階方案:機械臂模擬手指點擊(原創)

下面逐一介紹這里的實現方法,非常有意思。

二、距離判斷

1. 像素點判斷

該方法采用自目前最火的跳一跳小游戲「輔助程序」:wechat_jump_game。

如上圖所示,我們先定義了「棋子」和「棋盤」,需要找到的兩個目標點用橙色點標注,首先針對棋子的目標點的判斷,可以這么做:

相關代碼:

而針對棋盤中心點的確認的思路則是這樣的:

當然還有一些其他方法來盡量縮小棋盤中心點的檢測區域,這里簡單介紹下:

當然,如果恰好跳到中心點,下一個棋盤中間會有白色點,則可以直接匹配中心點的色值,得到棋盤中心點,這種情況基本百發百中:

相關代碼:

但棋盤種類比較多,形狀也各異,而且棋盤表面并非純色,還有其他顏色,所以即使像素判斷的代碼里增加了很多特殊 case,依舊不能做到非常完美:

總結一下,目前這個方案基本沒有太大問題,但如果跳一跳游戲把背景改成了非線性漸變,或隨機飄落一些物體,或棋盤表面更加復雜,那這里的算法就基本不可用了。

2. OpenCV 圖像分析

基于像素點的判斷低效而且不夠健壯,而利用 OpenCV 計算機視覺庫則可以從圖像分析層面進一步簡化判斷邏輯提升效率,首先采用該方法的跳一跳小游戲「輔助程序」來自 wechat_jump_jump。它是這么得到棋子的位置的:

相關代碼:

接下來找棋盤的中心點,假如下一個棋盤存在白色的示意點,同樣采用上面的模板匹配方法進行匹配,若匹配不上(匹配值小于某閾值,也許下個棋盤本身就是白色,所以灰度圖分辨不出),則采用第二種方案:

這里是否準確的精髓就在于高斯濾波去除圖像噪音的臨界點以及 Canny 函數中閾值的設定,需要不斷調整參數到最優狀態。

相關代碼:

三、按壓模擬

1. adb/wda 指令

這兩個分別是針對 Android 和 iOS 的命令行工具,可以將手機和電腦連接起來,并通過命令行發送指令,指令中就包含了屏幕的截圖和按壓模擬。不過 iOS 配置起來稍微麻煩一點,具體操作指引可以參考 這里。其核心的命令有:

當然,如果嫌配置麻煩,還可以通過 Android 的 AirDrop App 或 iOS 的 QuickTime 把手機屏幕投到電腦中,然后通過 Python 的 Pillow 庫來截取投屏的內容,再做進一步的圖像識別工作。

還有一點值得一提,按壓時間這部分還是有優化的空間,前面提到了跳躍距離和按壓時間基本是線性關系,但越到后面可以越發現,距離并非和按壓時間絕對成線性比例,因為游戲本身不是一個純 2D 的平面場景(2.5D),所以我們測量到的直線距離在 2.5D 場景中是有變化的,雖然影響不大,但在游戲后期棋盤越來越小,距離越來越大時,容易凸現出問題來,所以關于距離的計算有幾種不同的解決:

擬合函數的細節可以參考:

1)https://github.com/metowolf/JumpJumpHelper

2)https://github.com/wangshub/wechat_jump_game/issues/744

3)https://github.com/wangshub/wechat_jump_game/pull/841

2. 機械臂模擬手指點擊

本著學術探究的態度,結合之前折騰開源硬件的經歷,所以也斗膽想給跳一跳小游戲增加一點動手環節,把觸摸模擬這一操作通過機械臂來物理完成,于是在萬能淘寶里淘了一個一百多快錢的機械臂和部分配件,自己編寫了控制代碼,把按壓時間傳輸作為機械臂按下的停留時間,想法確定后便開始購置物品:

到貨后折騰一兩個晚上,最后成功搭建好了,大家看看效果(電容筆偶爾還是會觸碰不良)
視頻鏈接:https://v.qq.com/x/page/s0532...

四、最后

反對一切使用外掛行為!

反對一切使用外掛行為!

反對一切使用外掛行為!

通過對外掛程序源碼的研讀,學習到了非常多創新的思維,這也算是外掛留給代碼世界的果實。


關于騰訊WeTest手游安全測試團隊
騰訊WeTest手游安全測試團隊從2011年初開始對手游安全領域進行探索和技術積累,旨在通過提前發現游戲版本的安全漏洞,預警風險,打造出業界領先的手游安全測試技術方案,在工具上已經支持所有騰訊在研和運營的手游項目。團隊通過使用與正式服同樣的游戲客戶端和服務器,模擬外掛工作室制作外掛的過程,依靠自身的技術積累來提高專業程度,持續保持漏洞的發現率。

目前提供了專家測試服務,希望通過提前發現游戲版本的安全漏洞,預警風險,幫助提高騰訊游戲的品牌和口碑。

服務目前已經對外開放,點擊http://wetest.qq.com/product/sr 即可使用

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/11311.html

相關文章

  • “Python來玩微信一跳”教程(問題總結)

    摘要:原文來玩微信跳一跳教程在上一篇文章中,收到了大家大量的問題反饋,因為問題比較多,并且有很多重復的問題,所以并沒有一一回復,這里表示一下歉意,并整理了一篇問題總結,希望可以幫助大家擺脫各種錯誤信息。 原文:《Python來玩微信跳一跳教程》 在上一篇文章中,收到了大家大量的問題反饋,因為問題比較多,并且有很多重復的問題,所以并沒有一一回復,這里表示一下歉意,并整理了一篇問題總結,希望可以...

    ermaoL 評論0 收藏0
  • 基于 python + WebDriverAgent 的“一跳”小程序高分教程

    摘要:年月日,微信放出了版本,在微信首頁二樓下拉出現位置重磅推出了跳一跳小程序,瞬間刷爆朋友圈。在大家忙于游戲的時候,有人獨辟蹊徑基于實現了通過遠程操控手機跳一跳小程序小人自動跳動,將分數刷到了令人發指的地步,悄悄占領朋友圈第一。 2017年12月28日,微信放出了 6.6.1 版本,在微信首頁二樓(下拉出現)位置重磅推出了跳一跳小程序,瞬間刷爆朋友圈。 showImg(https://se...

    xumenger 評論0 收藏0
  • “Python來玩微信一跳”教程

    摘要:首先感謝神奇的戰士為大家貢獻的源碼前言今天發現神奇的戰士寫的教你用來玩微信跳一跳,心血來潮玩了玩,輕松哪些,然后收手,幫大家寫一篇細致一些的教程,希望可以幫助新手成功啟動程序。如果報錯,就需要重新安裝或者配置環境變量。 首先感謝 @神奇的戰士 為大家貢獻的python源碼! 前言 今天發現@神奇的戰士 寫的《教你用Python來玩微信跳一跳》,心血來潮玩了玩,輕松哪些599,然后收手,...

    ruicbAndroid 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<