Anti-Cheat Toolkit(一)(Unity游戲開發(fā)--防作弊)

開發(fā)游戲時(shí),我們需要保護(hù)儲(chǔ)存在客戶端中的重要數(shù)據(jù),防止被玩家修改數(shù)據(jù)從而達(dá)到"開掛"的效果。

內(nèi)存修改器的下載地址:cheat ngine:https://www.cheatengine.org/index.php

當(dāng)然這種內(nèi)存修改器有很多,原理都時(shí)一樣的讨韭。

一、Anti-Cheat Toolkit 介紹


Unity Asset Store 官方插件地址:官方鏈接

二癣蟋、Anti-Cheat Toolkit 可以做什么透硝?


? 保護(hù)內(nèi)存中的變量。

? 保護(hù)和擴(kuò)展PlayerPrefs疯搅。

? 生成構(gòu)建代碼簽名濒生。

? 檢測(cè)速度。

? 檢測(cè)時(shí)間作弊幔欧。

? 檢測(cè)3種常見類型的墻壁罪治。

? 檢測(cè)外部托管程序集丽声。

? 有ObscuredPrefs / PlayerPrefs編輯器。

二觉义、1.保護(hù)內(nèi)存中的變量


假設(shè)我們?cè)谕婊甓妨_的游戲雁社,一共有五條命(存放在內(nèi)存變量中,并用一個(gè)文本顯示)晒骇,每次死亡都會(huì)導(dǎo)致生命數(shù)-1(通過(guò)點(diǎn)擊按鈕模擬死亡)霉撵。直到生命為0時(shí)結(jié)束游戲。效果如下:


demo效果

下面時(shí)實(shí)現(xiàn)代碼:

usingUnityEngine;

usingUnityEngine.UI;

namespaceTest{

publicclassNewBehaviourScript:MonoBehaviour

? ? {

[SerializeField] Text text;

[SerializeField] Button btn;

//生命數(shù)

publicintlive =5;

voidStart()

? ? ? ? {

text.text ="剩余生命:"+ live;

? ? ? ? ? ? btn.onClick.AddListener(() => {

? ? ? ? ? ? ? ? live--;

if(live >0)

? ? ? ? ? ? ? ? {

text.text ="剩余生命:"+ live;

? ? ? ? ? ? ? ? }

else

? ? ? ? ? ? ? ? {

text.text ="游戲結(jié)束";

? ? ? ? ? ? ? ? }

? ? ? ? ? ? });

? ? ? ? }

? ? }

}


Unity運(yùn)行狀態(tài)洪囤,打開我們下載好的修改器


修改器使用流程

為了方便測(cè)試(因?yàn)閮?nèi)存中5的值特別多徒坡,掃描結(jié)果不直觀)我們將測(cè)試的live值改為200,然后先First Scan 200的數(shù)據(jù)瘤缩,接著喇完,我們先點(diǎn)擊Unity的Dead按鈕,使值變?yōu)?99剥啤,然后在Cheat Engine中將value的200改為199锦溪,點(diǎn)擊Next Scan按鈕(如果結(jié)果還是多,重復(fù)減生命铐殃,直到少的為止)海洼。


修改內(nèi)存中的值:


修改內(nèi)存中的值(1)


修改內(nèi)存中的值(2)

修改完之后點(diǎn)擊Dead 發(fā)現(xiàn):


內(nèi)存修改后

使用Anti-Cheat Toolkit插件 后的代碼:

//生命數(shù)

publicCodeStage.AntiCheat.ObscuredTypes.ObscuredInt live =5;

這樣內(nèi)存中就搜索不到對(duì)應(yīng)的值,為了更加安全我們可以加上監(jiān)聽富腊,監(jiān)聽數(shù)據(jù)被意外修改后應(yīng)該怎么處理(退出游戲,彈框等等)

監(jiān)聽的方法有兩種:

????1.監(jiān)聽事件自己預(yù)設(shè):

? ? ? ? 導(dǎo)入Anti-Cheat Toolkit插件 后 域帐,選中場(chǎng)景中的任意Gameobject 右鍵 Create other -->Code Stage -->Anti-Cheat Toolkit -->Obscured Cheating Detector


添加監(jiān)聽事件

上面的數(shù)值什么的我不再一一說(shuō)明赘被,基本上百度一下就可以知道是什么意思。

事件綁定后如圖:



?2.監(jiān)聽事件代碼賦值:

????代碼如下:

????????????ObscuredCheatingDetector obscuredCheatingDetector = ObscuredCheatingDetector.AddToSceneOrGetExisting();

? ? ? ? ? ? obscuredCheatingDetector.enabled = true;

? ? ? ? ? ? ObscuredCheatingDetector.StartDetection(Obscured_CheatDetected);


public void Obscured_CheatDetected()

? ? {

? ? ? ? // 檢測(cè)到數(shù)據(jù)被意外修改后的邏輯

? ? }

運(yùn)行時(shí)會(huì)自動(dòng)創(chuàng)建Anti-Cheat Toolkit 的物體并掛載ObscuredCheatingDetector 腳本肖揣,并添加上監(jiān)聽的事件

總結(jié):1.不論是自動(dòng)創(chuàng)建的Anti-Cheat Toolkit物體都是不銷毀的

? ? ? ? 2.Anti-Cheat Toolkit插件提供了很多加密的類型民假,如ObscuredFloat,ObscuredString龙优,ObscuredVector3等等羊异,其內(nèi)部代碼也不難理解,就是 對(duì)原始數(shù)據(jù)進(jìn)行了簡(jiǎn)單的異或處理彤断,從而達(dá)到加密的效果野舶。(原理:A^B=C,C^B=A)

? ? ? ? 3.同時(shí)還提供了ObscuredPrefs來(lái)替代PlayerPrefs宰衙。

剩下的內(nèi)容等有時(shí)間再給大家分享平道,另外有時(shí)間會(huì)再出一個(gè)Unity混淆的插件,和這個(gè)插件配合使用效果會(huì)更好供炼。

參考文章:https://blog.csdn.net/wangjiangrong/article/details/93021172

每天多學(xué)一點(diǎn)一屋,每天進(jìn)步一點(diǎn)窘疮。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市冀墨,隨后出現(xiàn)的幾起案子闸衫,更是在濱河造成了極大的恐慌,老刑警劉巖诽嘉,帶你破解...
    沈念sama閱讀 212,542評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件楚堤,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡含懊,警方通過(guò)查閱死者的電腦和手機(jī)身冬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)岔乔,“玉大人酥筝,你說(shuō)我怎么就攤上這事〕牛” “怎么了嘿歌?”我有些...
    開封第一講書人閱讀 158,021評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)茁影。 經(jīng)常有香客問(wèn)我宙帝,道長(zhǎng),這世上最難降的妖魔是什么募闲? 我笑而不...
    開封第一講書人閱讀 56,682評(píng)論 1 284
  • 正文 為了忘掉前任步脓,我火速辦了婚禮,結(jié)果婚禮上浩螺,老公的妹妹穿的比我還像新娘靴患。我一直安慰自己,他們只是感情好要出,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,792評(píng)論 6 386
  • 文/花漫 我一把揭開白布鸳君。 她就那樣靜靜地躺著,像睡著了一般患蹂。 火紅的嫁衣襯著肌膚如雪或颊。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,985評(píng)論 1 291
  • 那天传于,我揣著相機(jī)與錄音囱挑,去河邊找鬼。 笑死格了,一個(gè)胖子當(dāng)著我的面吹牛看铆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播盛末,決...
    沈念sama閱讀 39,107評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼弹惦,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼否淤!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起棠隐,我...
    開封第一講書人閱讀 37,845評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤石抡,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后助泽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體啰扛,經(jīng)...
    沈念sama閱讀 44,299評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,612評(píng)論 2 327
  • 正文 我和宋清朗相戀三年嗡贺,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了隐解。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,747評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡诫睬,死狀恐怖煞茫,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情摄凡,我是刑警寧澤续徽,帶...
    沈念sama閱讀 34,441評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站亲澡,受9級(jí)特大地震影響钦扭,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜床绪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,072評(píng)論 3 317
  • 文/蒙蒙 一客情、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧会涎,春花似錦裹匙、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)籽御。三九已至练慕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間技掏,已是汗流浹背铃将。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留哑梳,地道東北人劲阎。 一個(gè)月前我還...
    沈念sama閱讀 46,545評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像鸠真,于是被迫代替她去往敵國(guó)和親悯仙。 傳聞我的和親對(duì)象是個(gè)殘疾皇子龄毡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,658評(píng)論 2 350

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

  • 本文介紹一些用Unity開發(fā)手機(jī)游戲一些必備插件沦零。 1:Ultimate Mobile Pro 包含Unity與i...
    BeMyCall閱讀 3,455評(píng)論 0 4
  • C#問(wèn)題 1.在類的構(gòu)造函數(shù)前加上static會(huì)報(bào)什么錯(cuò)?為什么? 答:在構(gòu)造函數(shù)如果有public修飾的靜態(tài)構(gòu)造...
    元宇宙協(xié)會(huì)閱讀 9,016評(píng)論 4 17
  • 久違的晴天,家長(zhǎng)會(huì)货岭。 家長(zhǎng)大會(huì)開好到教室時(shí)路操,離放學(xué)已經(jīng)沒多少時(shí)間了。班主任說(shuō)已經(jīng)安排了三個(gè)家長(zhǎng)分享經(jīng)驗(yàn)千贯。 放學(xué)鈴聲...
    飄雪兒5閱讀 7,515評(píng)論 16 22
  • 今天感恩節(jié)哎屯仗,感謝一直在我身邊的親朋好友。感恩相遇搔谴!感恩不離不棄魁袜。 中午開了第一次的黨會(huì),身份的轉(zhuǎn)變要...
    迷月閃星情閱讀 10,559評(píng)論 0 11
  • 可愛進(jìn)取己沛,孤獨(dú)成精慌核。努力飛翔,天堂翱翔申尼。戰(zhàn)爭(zhēng)美好垮卓,孤獨(dú)進(jìn)取。膽大飛翔师幕,成就輝煌粟按。努力進(jìn)取,遙望霹粥,和諧家園灭将。可愛游走...
    趙原野閱讀 2,723評(píng)論 1 1