擔(dān)憂游戲包體遭破解?或外掛破壞游戲平衡?
游戲包體加固與反外掛服務(wù) Safe,為你保駕護(hù)航!
在保障游戲安全與用戶體驗的雙重挑戰(zhàn)下,Unity Online Services(UOS)所提供的游戲包體加固與反外掛服務(wù) Safe,正是為游戲開發(fā)者量身打造的解決方案。這項服務(wù)旨在全面加固游戲的安全防線的同時,更有效地抵御外掛威脅,以確保游戲的公平性和持久性。
游戲包加固 Safe
UOS Safe 是 Unity 資深團(tuán)隊打造的全方位、一站式的游戲安全解決方案,為您的游戲保駕護(hù)航。
UOS Safe 可以為您的 Unity 應(yīng)用提供全面保護(hù),以下是我們的核心保護(hù)措施:
C# 程序集加密:我們采用先進(jìn)的加密技術(shù),對程序集中的每個方法進(jìn)行加密,確保加密后的程序無法被輕易 Dump 出原始內(nèi)容,從而有效防止代碼被逆向工程和篡改。
il2cpp 保護(hù):針對使用 il2cpp 編譯的 Unity 應(yīng)用,我們提供對 global-metadata.dat 文件的加密或隱藏服務(wù),防止直接 Dump 出 C# 程序集和原始的元數(shù)據(jù)信息。同時,我們還將校驗 il2cpp 核心模塊的內(nèi)存完整性,確保核心邏輯不被篡改,維護(hù)游戲的正常運(yùn)行。
資源加密:我們對 Unity Asset Bundle 資源文件進(jìn)行了高強(qiáng)度加密處理,確保資源文件在傳輸和存儲過程中的安全性,防止資源被非法提取和濫用。
反注入/調(diào)試:我們采用多重技術(shù)手段,防止外掛作者對游戲進(jìn)行調(diào)試和分析。同時,我們禁止使用 Xposed、Frida 等外掛模塊注入器,有效阻止外掛對游戲內(nèi)存的惡意修改,確保游戲的公平性和穩(wěn)定性。
教程操作步驟
接下來讓我們跟著教程步驟開始學(xué)習(xí),看看如何對你的 apk 文件進(jìn)行安全加固吧!
1.準(zhǔn)備工作
本教程將以 Unity 示例應(yīng)用 BoatAttack.apk 為例,來展示 UOS Safe 的操作步驟。您不需要事先準(zhǔn)備 Unity Editor 和任何項目,完成教程只需要下載提供好的示例 Demo——BoatAttack.apk。
大家可以根據(jù)下面提供的鏈接,或者點擊文章最后的「閱讀原文」按鈕,進(jìn)入 UOS Safe 的官網(wǎng),進(jìn)行下載 BoatAttack.apk。
https://uos.unity.cn/doc/safe/tutorial
2. 上傳應(yīng)用包
創(chuàng)建 UOS App
前往 UOS 官網(wǎng)( https://uos.unity.cn ),點擊菜單欄的「應(yīng)用」按鈕,在彈出的頁面上,點擊「添加新的應(yīng)用」按鈕。
選擇一個創(chuàng)建好的組織,輸入項目的名字,點擊「創(chuàng)建并啟用」。
開啟 Safe 服務(wù)
在「概覽」頁面,找到 Safe 服務(wù),點擊「免費試用」的按鈕:
上傳 APK 文件
在「Safe -> 應(yīng)用列表」頁面,點擊上傳應(yīng)用的按鈕。然后根據(jù)頁面的要求,將你的 apk 文件上傳,在這里我們把步驟一中已經(jīng)下載好的 BoatAttack.apk 進(jìn)行上傳。
上傳好 apk 文件后,界面如下所示:
在后續(xù)步驟中您可以先配置自己的 SHA-1,再對包體進(jìn)行加固。如果不配置 SHA-1 簽名的話,在創(chuàng)建加固任務(wù)時,您可以授權(quán) UOS Safe 使用 UOS 提供的官方 SHA-1 進(jìn)行加固,并對加固后的 apk 使用該 SHA-1 進(jìn)行簽名。
接下來先給大家介紹下第一種方式:使用官方的 SHA-1 加固包體的步驟!
使用官方 SHA-1
3. 創(chuàng)建加固任務(wù)
如果未配置 SHA-1 的話,您需要授權(quán) UOS Safe 使用 UOS 提供的官方 SHA-1 對該包體創(chuàng)建加固任務(wù)。
點擊【加固應(yīng)用】的按鈕,在彈出的窗口中,勾選【已知曉,采用官方 SHA-1 簽名】,然后點擊【確認(rèn)】,則當(dāng)前應(yīng)用就會開始進(jìn)行加固。
加固完成后,可以看到頁面會顯示【已加固】,還可以查看【加固記錄】。
點擊【加固記錄】,可以查看某一次的加固的日志信息。
4. 下載加固后的包體
當(dāng)您采用官方 SHA-1 進(jìn)行加固時,您可以在加固任務(wù)完成之后,下載帶簽名的包體。
我們再給大家介紹下第二種方式:配置自己私有的 SHA-1 簽名后,再對包體進(jìn)行加固!
配置私有 SHA-1
如果是配置私有的 SHA-1,前面的步驟 1 和步驟 2 是一樣的,大家接著進(jìn)行步驟 3 的操作即可。
3. 配置簽名證書 SHA-1
您需要準(zhǔn)備好用于 apk 簽名的證書。開發(fā)者們可以通過 Java Development Kit (JDK) 的 keytool 工具來管理自己證書的 SHA-1。
安裝 JDK
由于 keytool 工具是隨 JDK 一起提供的,所以我們需要先安裝 JDK 。如果還沒安裝過的話,可以先通過下面的鏈接,下載適合你的操作系統(tǒng)的 JDK 的版本安裝包。
在這里以下載 Windows 系統(tǒng)的安裝包示例來講解:
https://www.oracle.com/java/technologies/downloads
解壓縮下載好的 jdk 壓縮包文件:
配置 JDK 的環(huán)境變量
打開計算機(jī)的「屬性」面板,找到「高級系統(tǒng)設(shè)置」,點擊「環(huán)境變量」的按鈕。找到「系統(tǒng)變量」中的「Path」變量,選擇后點擊「編輯」。
點擊「新建」,將你電腦上的 JDK 文件的 bin 目錄 , 填入環(huán)境變量中 ,然后點擊「確定」即可。
使用 keytool 生成一個新的密鑰對
可以通過以下指令生成用于 APK 簽名的證書,生成的簽名證書可以是 .jks 文件,也可以是 .keystore 文件,不同格式的文件,最后一步生成 APK 簽名的方式也是不一樣的。
keytool -genkeypair -alias
-keyalg RSA -keysize 2048 -validity 365 -keystore
以生成 .jks 文件為例:
在命令行工具窗口中輸入上面的指令后,會提示用戶需要「輸入密鑰庫口令」,自己設(shè)置下密鑰即可,輸入密鑰后窗口上不會顯示輸入的字符。最后一步詢問是否正確,請輸入字符「Y」。
當(dāng)簽名文件生成后,將會在你指定的文件夾路徑下,看到對應(yīng)的簽名文件:mykeystore.jks。
以生成 .keystore 文件為例:
當(dāng)執(zhí)行完上面命令、簽名文件生成后,進(jìn)入你指定的文件夾路徑下,會看到對應(yīng)的簽名文件:mykeystore.keystore。
查看 SHA-1
在已有簽名證書的情況下,可以通過以下指令查看證書的 SHA-1 信息,先復(fù)制一下。
keytool -list -v -keystore
在簽名配置欄輸入 SHA-1
在創(chuàng)建加固任務(wù)前,先在「簽名配置」中,點擊「編輯」按鈕,編輯并保存您的 SHA-1。
4. 創(chuàng)建加固任務(wù)
之前已經(jīng)完成了 apk 的上傳,現(xiàn)在就可以對該包體創(chuàng)建加固任務(wù)了,點擊按鈕可創(chuàng)建加固任務(wù)。
5. 下載加固后的包體
如果您在創(chuàng)建加固任務(wù)前上傳了自己的 SHA-1,那么等待創(chuàng)建任務(wù)完成,就可以下載「加固應(yīng)用包(未簽名版)」。
在彈出的窗口中,點擊「確認(rèn)」按鈕。
例如,下載的加固后的 apk 文件為:
6.APK 對齊
下載加固完的 apk 后,需要對 apk 做一下對齊。由于 zipalign 工具是 Android SDK 中的一個工具,它主要用于優(yōu)化 APK 文件。所以要獲取 zipalign,需要先安裝 Android SDK。
安裝 SDK
大家可以前往 Android Studio 官網(wǎng)下載并安裝 Android Studio,它將自動包含 Android SDK。
https://developer.android.com/studio
下載完安裝包之后,可自行根據(jù)頁面的提示進(jìn)行安裝 Android Studio:
安裝完 Android Studio 之后,找到 build-tools 文件夾下的 zipalign.exe 的文件路徑,并進(jìn)行復(fù)制。例如,我當(dāng)前的目錄為:
D:\AndroidStudio\build-tools\35.0.0\zipalign.exe
將 zipalign.exe 的路徑添加到系統(tǒng)的環(huán)境變量中
和之前的 JDK 的環(huán)境變量的配置的步驟是一樣的,在「編輯環(huán)境變量」窗口,點擊「新建」,將你電腦上的 zipalign.exe 文件的目錄,填入環(huán)境變量中,然后點擊「確定」即可。
APK 對齊
執(zhí)行以下命令,查看生成的 apk 包體是否對齊了(注意:在 Android11 后,不進(jìn)行 4 字節(jié)對齊會導(dǎo)致安裝失敗)。
zipalign -c -v 4
<待檢查apk路徑>
如果 apk 已經(jīng)對齊了,會在命令行中可看到類似下面的信息。
Verifying alignment of your-app.apk (4)
some_file.png (OK - compressed)
...
some_other_file.xml (OK - compressed)
Verification successful
如果 apk 未對齊,需要使用 zipalign 工具執(zhí)行下面的命令,對 apk 包體進(jìn)行對齊。
zipalign -p -f -v 4
<未對其的apk>
<對齊后的apk>
執(zhí)行完上面命令后,可以在文件夾中看到生成的對齊后的 apk 文件。
7.APK 簽名
如果您在創(chuàng)建加固任務(wù)前上傳了自己的 SHA-1,您需要在 apk 包體對齊后,并對其進(jìn)行簽名。
如果之前使用的是 .jks 的方式簽名密鑰的,則執(zhí)行下面命令來簽名后,會生成一個新的簽名后的文件。
.\apksigner sign --ks
--ks-key-alias
<簽名對應(yīng)的alias>
--out
<簽名后apk路徑>
<待簽名apk路徑>
執(zhí)行完上面命令后,可以在當(dāng)前的文件夾中看到生成的簽名后的 apk 文件:
如果之前使用的是 .keystore 的方式簽名密鑰的,則執(zhí)行下面命令來簽名后,簽名后的 APK會默認(rèn)直接覆蓋原文件。
所以 如果你想保留原 APK 文件 ,可以先復(fù)制它,然后對復(fù)制后的文件進(jìn)行簽名:
java -jar apksigner.jar sign --ks
--ks-key-alias
<簽名對應(yīng)的alias>
<待簽名apk路徑>
使用該命令時,建議先找到你的 apksigner.jar 文件所在的路徑,例如,我當(dāng)前的路徑是: D:\AndroidStudio\build-tools\35.0.0\lib\apksigner.jar 。
為了方便操作,可以將之前步驟已經(jīng)生成的對齊后待簽名的 apk :AlignedBoatAttack2.apk,也放在這個 lib 路徑下。
執(zhí)行完命令后,在 lib 目錄下可看到簽名成功后的 apk 文件:
本期教程我們先分享講解到這里啦,下一期再見!
Unity Online Services (UOS) 是一個專為游戲開發(fā)者設(shè)計的一站式游戲云服務(wù)平臺,提供覆蓋游戲全生命周期的開發(fā)、運(yùn)營和推廣支持。
了解更多 UOS 相關(guān)信息:
官網(wǎng):https://uos.unity.cn
技術(shù)交流 QQ 群:823878269
公眾號:UOS 游戲云服務(wù)
Unity 官方微信
第一時間了解Unity引擎動向,學(xué)習(xí)進(jìn)階開發(fā)技能
每一個“點贊”、“在看”,都是我們前進(jìn)的動力
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.