擔憂游戲包體éç ´è§£ï¼Ÿæˆ–å¤–æŽ›ç ´å£žæ¸¸æˆ²å¹³è¡¡ï¼Ÿ
æ¸¸æˆ²åŒ…é«”åŠ å›ºèˆ‡å外掛æœå‹™ Safeï¼Œç‚ºä½ ä¿é§•è·èˆªï¼
在ä¿éšœæ¸¸æˆ²å®‰å…¨èˆ‡ç”¨æˆ¶é«”é©—çš„é›™é‡æŒ‘戰下,Unity Online Services(UOS)所æä¾›çš„æ¸¸æˆ²åŒ…é«”åŠ å›ºèˆ‡å外掛æœå‹™ Safeï¼Œæ£æ˜¯ç‚ºæ¸¸æˆ²é–‹ç™¼è€…é‡èº«æ‰“é€ çš„è§£æ±ºæ–¹æ¡ˆã€‚é€™é …æœå‹™æ—¨åœ¨å…¨é¢åŠ å›ºæ¸¸æˆ²çš„å®‰å…¨é˜²ç·šçš„åŒæ™‚,更有效地抵御外掛å¨è„…ï¼Œä»¥ç¢ºä¿æ¸¸æˆ²çš„公平性和æŒä¹…性。
æ¸¸æˆ²åŒ…åŠ å›º Safe
UOS Safe 是 Unity è³‡æ·±åœ˜éšŠæ‰“é€ çš„å…¨æ–¹ä½ã€ä¸€ç«™å¼çš„æ¸¸æˆ²å®‰å…¨è§£æ±ºæ–¹æ¡ˆï¼Œç‚ºæ‚¨çš„æ¸¸æˆ²ä¿é§•è·èˆªã€‚
UOS Safe å¯ä»¥ç‚ºæ‚¨çš„ Unity 應用æä¾›å…¨é¢ä¿è·ï¼Œä»¥ä¸‹æ˜¯æˆ‘å€‘çš„æ ¸å¿ƒä¿è·æŽªæ–½ï¼š
C# 程åºé›†åŠ å¯†ï¼šæˆ‘å€‘é‡‡ç”¨å…ˆé€²çš„åŠ å¯†æŠ€è¡“ï¼Œå°ç¨‹åºé›†ä¸çš„æ¯å€‹æ–¹æ³•é€²è¡ŒåŠ å¯†ï¼Œç¢ºä¿åР坆åŽçš„程åºç„¡æ³•被輕易 Dump 出原始內容,從而有效防æ¢ä»£ç¢¼è¢«é€†å‘工程和篡改。
il2cpp ä¿è·ï¼šé‡å°ä½¿ç”¨ il2cpp ç·¨è¯çš„ Unity 應用,我們æä¾›å° global-metadata.dat æ–‡ä»¶çš„åŠ å¯†æˆ–éš±è—æœå‹™ï¼Œé˜²æ¢ç›´æŽ¥ Dump 出 C# 程åºé›†å’ŒåŽŸå§‹çš„å…ƒæ•¸æ“šä¿¡æ¯ã€‚åŒæ™‚ï¼Œæˆ‘å€‘é‚„å°‡æ ¡é©— il2cpp æ ¸å¿ƒæ¨¡å¡Šçš„å…§å˜å®Œæ•´æ€§ï¼Œç¢ºä¿æ ¸å¿ƒé‚輯ä¸è¢«ç¯¡æ”¹ï¼Œç¶è·æ¸¸æˆ²çš„æ£å¸¸é‹è¡Œã€‚
資æºåŠ å¯†ï¼šæˆ‘å€‘å° Unity Asset Bundle è³‡æºæ–‡ä»¶é€²è¡Œäº†é«˜å¼·åº¦åŠ å¯†è™•ç†ï¼Œç¢ºä¿è³‡æºæ–‡ä»¶åœ¨å‚³è¼¸å’Œå˜å„²éŽç¨‹ä¸çš„安全性,防æ¢è³‡æºè¢«éžæ³•æå–和濫用。
åæ³¨å…¥/èª¿è©¦ï¼šæˆ‘å€‘é‡‡ç”¨å¤šé‡æŠ€è¡“æ‰‹æ®µï¼Œé˜²æ¢å¤–æŽ›ä½œè€…å°æ¸¸æˆ²é€²è¡Œèª¿è©¦å’Œåˆ†æžã€‚åŒæ™‚ï¼Œæˆ‘å€‘ç¦æ¢ä½¿ç”¨ Xposedã€Frida ç‰å¤–掛模塊注入器,有效阻æ¢å¤–æŽ›å°æ¸¸æˆ²å…§å˜çš„æƒ¡æ„ä¿®æ”¹ï¼Œç¢ºä¿æ¸¸æˆ²çš„公平性和穩定性。
教程æ“作æ¥é©Ÿ
接下來讓我們跟著教程æ¥é©Ÿé–‹å§‹å¸ç¿’,看看如何å°ä½ çš„ apk æ–‡ä»¶é€²è¡Œå®‰å…¨åŠ å›ºå§ï¼
1.準備工作
本教程將以 Unity 示例應用 BoatAttack.apk 為例,來展示 UOS Safe çš„æ“作æ¥é©Ÿã€‚您ä¸éœ€è¦äº‹å…ˆæº–å‚™ Unity Editor å’Œä»»ä½•é …ç›®ï¼Œå®Œæˆæ•™ç¨‹åªéœ€è¦ä¸‹è¼‰æä¾›å¥½çš„示例 Demo——BoatAttack.apk。
大家å¯ä»¥æ ¹æ“šä¸‹é¢æä¾›çš„éˆæŽ¥ï¼Œæˆ–è€…é»žæ“Šæ–‡ç« æœ€åŽçš„ã€Œé–±è®€åŽŸæ–‡ã€æŒ‰éˆ•,進入 UOS Safe 的官網,進行下載 BoatAttack.apk。
https://uos.unity.cn/doc/safe/tutorial
2. 上傳應用包
創建 UOS App
å‰å¾€ UOS 官網( https://uos.unity.cn ),點擊èœå–®æ¬„çš„ã€Œæ‡‰ç”¨ã€æŒ‰éˆ•,在彈出的é é¢ä¸Šï¼Œé»žæ“Šã€Œæ·»åŠ æ–°çš„æ‡‰ç”¨ã€æŒ‰éˆ•。
鏿“‡ä¸€å€‹å‰µå»ºå¥½çš„çµ„ç¹”ï¼Œè¼¸å…¥é …ç›®çš„åå—,點擊「創建并啟用ã€ã€‚
開啟 Safe æœå‹™
在「概覽ã€é é¢ï¼Œæ‰¾åˆ° Safe æœå‹™ï¼Œé»žæ“Šã€Œå…費試用ã€çš„æŒ‰éˆ•:
上傳 APK 文件
在「Safe -> 應用列表ã€é é¢ï¼Œé»žæ“Šä¸Šå‚³æ‡‰ç”¨çš„æŒ‰éˆ•ã€‚ç„¶åŽæ ¹æ“šé é¢çš„è¦æ±‚ï¼Œå°‡ä½ çš„ apk 文件上傳,在這里我們把æ¥é©Ÿä¸€ä¸å·²ç¶“下載好的 BoatAttack.apk 進行上傳。
上傳好 apk 文件åŽï¼Œç•Œé¢å¦‚下所示:
在åŽçºŒæ¥é©Ÿä¸æ‚¨å¯ä»¥å…ˆé…置自己的 SHA-1,å†å°åŒ…é«”é€²è¡ŒåŠ å›ºã€‚å¦‚æžœä¸é…ç½® SHA-1 ç°½åçš„è©±ï¼Œåœ¨å‰µå»ºåŠ å›ºä»»å‹™æ™‚ï¼Œæ‚¨å¯ä»¥æŽˆæ¬Š UOS Safe 使用 UOS æä¾›çš„官方 SHA-1 é€²è¡ŒåŠ å›ºï¼Œå¹¶å°åŠ å›ºåŽçš„ apk 使用該 SHA-1 進行簽å。
接下來先給大家介紹下第一種方å¼ï¼šä½¿ç”¨å®˜æ–¹çš„ SHA-1 åŠ å›ºåŒ…é«”çš„æ¥é©Ÿï¼
使用官方 SHA-1
3. å‰µå»ºåŠ å›ºä»»å‹™
如果未é…ç½® SHA-1 çš„è©±ï¼Œæ‚¨éœ€è¦æŽˆæ¬Š UOS Safe 使用 UOS æä¾›çš„官方 SHA-1 å°è©²åŒ…é«”å‰µå»ºåŠ å›ºä»»å‹™ã€‚
點擊ã€åŠ å›ºæ‡‰ç”¨ã€‘çš„æŒ‰éˆ•ï¼Œåœ¨å½ˆå‡ºçš„çª—å£ä¸ï¼Œå‹¾é¸ã€å·²çŸ¥æ›‰ï¼Œé‡‡ç”¨å®˜æ–¹ SHA-1 ç°½å】,然åŽé»žæ“Šã€ç¢ºèªã€‘ï¼Œå‰‡ç•¶å‰æ‡‰ç”¨å°±æœƒé–‹å§‹é€²è¡ŒåŠ å›ºã€‚
åŠ å›ºå®ŒæˆåŽï¼Œå¯ä»¥çœ‹åˆ°é 颿œƒé¡¯ç¤ºã€å·²åŠ å›ºã€‘ï¼Œé‚„å¯ä»¥æŸ¥çœ‹ã€åŠ å›ºè¨˜éŒ„ã€‘ã€‚
點擊ã€åŠ å›ºè¨˜éŒ„ã€‘ï¼Œå¯ä»¥æŸ¥çœ‹æŸä¸€æ¬¡çš„åŠ å›ºçš„æ—¥å¿—ä¿¡æ¯ã€‚
4. ä¸‹è¼‰åŠ å›ºåŽçš„包體
當您采用官方 SHA-1 é€²è¡ŒåŠ å›ºæ™‚ï¼Œæ‚¨å¯ä»¥åœ¨åŠ å›ºä»»å‹™å®Œæˆä¹‹åŽï¼Œä¸‹è¼‰å¸¶ç°½å的包體。
我們å†çµ¦å¤§å®¶ä»‹ç´¹ä¸‹ç¬¬äºŒç¨®æ–¹å¼ï¼šé…ç½®è‡ªå·±ç§æœ‰çš„ SHA-1 ç°½ååŽï¼Œå†å°åŒ…é«”é€²è¡ŒåŠ å›ºï¼
é…ç½®ç§æœ‰ SHA-1
如果是é…ç½®ç§æœ‰çš„ SHA-1,å‰é¢çš„æ¥é©Ÿ 1 å’Œæ¥é©Ÿ 2 是一樣的,大家接著進行æ¥é©Ÿ 3 çš„æ“作å³å¯ã€‚
3. é…置簽åè‰æ›¸ SHA-1
æ‚¨éœ€è¦æº–備好用于 apk ç°½åçš„è‰æ›¸ã€‚開發者們å¯ä»¥é€šéŽ Java Development Kit (JDK) çš„ keytool 工具來管ç†è‡ªå·±è‰æ›¸çš„ SHA-1。
å®‰è£ JDK
由于 keytool 工具是隨 JDK 一起æä¾›çš„,所以我們需è¦å…ˆå®‰è£ JDK 。如果還沒安è£éŽçš„話,å¯ä»¥å…ˆé€šéŽä¸‹é¢çš„éˆæŽ¥ï¼Œä¸‹è¼‰é©åˆä½ çš„æ“作系統的 JDK 的版本安è£åŒ…。
在這里以下載 Windows 系統的安è£åŒ…示例來講解:
https://www.oracle.com/java/technologies/downloads
解壓縮下載好的 jdk 壓縮包文件:
é…ç½® JDK 的環境變é‡
打開計算機的「屬性ã€é¢æ¿ï¼Œæ‰¾åˆ°ã€Œé«˜ç´šç³»çµ±è¨ç½®ã€ï¼Œé»žæ“Šã€Œç’°å¢ƒè®Šé‡ã€çš„æŒ‰éˆ•。找到「系統變é‡ã€ä¸çš„「Pathã€è®Šé‡ï¼Œé¸æ“‡åŽé»žæ“Šã€Œç·¨è¼¯ã€ã€‚
點擊「新建ã€ï¼Œå°‡ä½ 電腦上的 JDK 文件的 bin 目錄 , 填入環境變é‡ä¸ ,然åŽé»žæ“Šã€Œç¢ºå®šã€å³å¯ã€‚
使用 keytool 生æˆä¸€å€‹æ–°çš„密鑰å°
å¯ä»¥é€šéŽä»¥ä¸‹æŒ‡ä»¤ç”Ÿæˆç”¨äºŽ APK ç°½åçš„è‰æ›¸ï¼Œç”Ÿæˆçš„ç°½åè‰æ›¸å¯ä»¥æ˜¯ .jks 文件,也å¯ä»¥æ˜¯ .keystore 文件,ä¸åŒæ ¼å¼çš„æ–‡ä»¶ï¼Œæœ€åŽä¸€æ¥ç”Ÿæˆ APK ç°½å的方å¼ä¹Ÿæ˜¯ä¸ä¸€æ¨£çš„。
keytool -genkeypair -alias
-keyalg RSA -keysize 2048 -validity 365 -keystore
ä»¥ç”Ÿæˆ .jks 文件為例:
在命令行工具窗å£ä¸è¼¸å…¥ä¸Šé¢çš„æŒ‡ä»¤åŽï¼Œæœƒæç¤ºç”¨æˆ¶éœ€è¦ã€Œè¼¸å…¥å¯†é‘°åº«å£ä»¤ã€ï¼Œè‡ªå·±è¨ç½®ä¸‹å¯†é‘°å³å¯ï¼Œè¼¸å…¥å¯†é‘°åŽçª—å£ä¸Šä¸æœƒé¡¯ç¤ºè¼¸å…¥çš„å—符。最åŽä¸€æ¥è©¢å•æ˜¯å¦æ£ç¢ºï¼Œè«‹è¼¸å…¥å—符「Yã€ã€‚
ç•¶ç°½åæ–‡ä»¶ç”ŸæˆåŽï¼Œå°‡æœƒåœ¨ä½ æŒ‡å®šçš„æ–‡ä»¶å¤¾è·¯å¾‘ä¸‹ï¼Œçœ‹åˆ°å°æ‡‰çš„ç°½åæ–‡ä»¶ï¼šmykeystore.jks。
ä»¥ç”Ÿæˆ .keystore 文件為例:
當執行完上é¢å‘½ä»¤ã€ç°½å文件生æˆåŽï¼Œé€²å…¥ä½ æŒ‡å®šçš„æ–‡ä»¶å¤¾è·¯å¾‘ä¸‹ï¼Œæœƒçœ‹åˆ°å°æ‡‰çš„ç°½åæ–‡ä»¶ï¼šmykeystore.keystore。
查看 SHA-1
在已有簽åè‰æ›¸çš„æƒ…æ³ä¸‹ï¼Œå¯ä»¥é€šéŽä»¥ä¸‹æŒ‡ä»¤æŸ¥çœ‹è‰æ›¸çš„ SHA-1 ä¿¡æ¯ï¼Œå…ˆå¾©åˆ¶ä¸€ä¸‹ã€‚
keytool -list -v -keystore
在簽åé…置欄輸入 SHA-1
åœ¨å‰µå»ºåŠ å›ºä»»å‹™å‰ï¼Œå…ˆåœ¨ã€Œç°½åé…ç½®ã€ä¸ï¼Œé»žæ“Šã€Œç·¨è¼¯ã€æŒ‰éˆ•,編輯并ä¿å˜æ‚¨çš„ SHA-1。
4. å‰µå»ºåŠ å›ºä»»å‹™
之å‰å·²ç¶“完æˆäº† apk 的上傳,ç¾åœ¨å°±å¯ä»¥å°è©²åŒ…é«”å‰µå»ºåŠ å›ºä»»å‹™äº†ï¼Œé»žæ“ŠæŒ‰éˆ•å¯å‰µå»ºåŠ å›ºä»»å‹™ã€‚
5. ä¸‹è¼‰åŠ å›ºåŽçš„包體
å¦‚æžœæ‚¨åœ¨å‰µå»ºåŠ å›ºä»»å‹™å‰ä¸Šå‚³äº†è‡ªå·±çš„ SHA-1,那么ç‰å¾…創建任務完æˆï¼Œå°±å¯ä»¥ä¸‹è¼‰ã€ŒåŠ å›ºæ‡‰ç”¨åŒ…ï¼ˆæœªç°½å版)ã€ã€‚
在彈出的窗å£ä¸ï¼Œé»žæ“Šã€Œç¢ºèªã€æŒ‰éˆ•。
ä¾‹å¦‚ï¼Œä¸‹è¼‰çš„åŠ å›ºåŽçš„ apk 文件為:
6.APK å°é½Š
ä¸‹è¼‰åŠ å›ºå®Œçš„ apk åŽï¼Œéœ€è¦å° apk åšä¸€ä¸‹å°é½Šã€‚由于 zipalign 工具是 Android SDK ä¸çš„一個工具,它主è¦ç”¨äºŽå„ªåŒ– APK 文件。所以è¦ç²å– zipalign,需è¦å…ˆå®‰è£ Android SDK。
å®‰è£ SDK
大家å¯ä»¥å‰å¾€ Android Studio å®˜ç¶²ä¸‹è¼‰å¹¶å®‰è£ Android Studioï¼Œå®ƒå°‡è‡ªå‹•åŒ…å« Android SDK。
https://developer.android.com/studio
下載完安è£åŒ…之åŽï¼Œå¯è‡ªè¡Œæ ¹æ“šé é¢çš„æç¤ºé€²è¡Œå®‰è£ Android Studio:
安è£å®Œ Android Studio 之åŽï¼Œæ‰¾åˆ° build-tools 文件夾下的 zipalign.exe 的文件路徑,并進行復制。例如,我當å‰çš„目錄為:
D:\AndroidStudio\build-tools\35.0.0\zipalign.exe
å°‡ zipalign.exe çš„è·¯å¾‘æ·»åŠ åˆ°ç³»çµ±çš„ç’°å¢ƒè®Šé‡ä¸
和之å‰çš„ JDK 的環境變é‡çš„é…置的æ¥é©Ÿæ˜¯ä¸€æ¨£çš„,在「編輯環境變é‡ã€çª—å£ï¼Œé»žæ“Šã€Œæ–°å»ºã€ï¼Œå°‡ä½ 電腦上的 zipalign.exe 文件的目錄,填入環境變é‡ä¸ï¼Œç„¶åŽé»žæ“Šã€Œç¢ºå®šã€å³å¯ã€‚
APK å°é½Š
執行以下命令,查看生æˆçš„ apk 包體是å¦å°é½Šäº†ï¼ˆæ³¨æ„:在 Android11 åŽï¼Œä¸é€²è¡Œ 4 å—節å°é½Šæœƒå°Žè‡´å®‰è£å¤±?。?/p>
zipalign -c -v 4
<待檢查apk路徑>
如果 apk 已經å°é½Šäº†ï¼Œæœƒåœ¨å‘½ä»¤è¡Œä¸å¯çœ‹åˆ°é¡žä¼¼ä¸‹é¢çš„ä¿¡æ¯ã€‚
Verifying alignment of your-app.apk (4)
some_file.png (OK - compressed)
...
some_other_file.xml (OK - compressed)
Verification successful
如果 apk 未å°é½Šï¼Œéœ€è¦ä½¿ç”¨ zipalign 工具執行下é¢çš„å‘½ä»¤ï¼Œå° apk 包體進行å°é½Šã€‚
zipalign -p -f -v 4
<未å°å…¶çš„apk>
<å°é½ŠåŽçš„apk>
執行完上é¢å‘½ä»¤åŽï¼Œå¯ä»¥åœ¨æ–‡ä»¶å¤¾ä¸çœ‹åˆ°ç”Ÿæˆçš„å°é½ŠåŽçš„ apk 文件。
7.APK ç°½å
å¦‚æžœæ‚¨åœ¨å‰µå»ºåŠ å›ºä»»å‹™å‰ä¸Šå‚³äº†è‡ªå·±çš„ SHA-1,您需è¦åœ¨ apk 包體å°é½ŠåŽï¼Œå¹¶å°å…¶é€²è¡Œç°½å。
如果之å‰ä½¿ç”¨çš„æ˜¯ .jks 的方å¼ç°½å密鑰的,則執行下é¢å‘½ä»¤ä¾†ç°½ååŽï¼Œæœƒç”Ÿæˆä¸€å€‹æ–°çš„ç°½ååŽçš„æ–‡ä»¶ã€‚
.\apksigner sign --ks
--ks-key-alias
<ç°½åå°æ‡‰çš„alias>
--out
<ç°½ååŽapk路徑>
<å¾…ç°½åapk路徑>
執行完上é¢å‘½ä»¤åŽï¼Œå¯ä»¥åœ¨ç•¶å‰çš„æ–‡ä»¶å¤¾ä¸çœ‹åˆ°ç”Ÿæˆçš„ç°½ååŽçš„ apk 文件:
如果之å‰ä½¿ç”¨çš„æ˜¯ .keystore 的方å¼ç°½å密鑰的,則執行下é¢å‘½ä»¤ä¾†ç°½ååŽï¼Œç°½ååŽçš„ APK會默èªç›´æŽ¥è¦†è“‹åŽŸæ–‡ä»¶ã€‚
所以 å¦‚æžœä½ æƒ³ä¿ç•™åŽŸ APK 文件 ,å¯ä»¥å…ˆå¾©åˆ¶å®ƒï¼Œç„¶åŽå°å¾©åˆ¶åŽçš„æ–‡ä»¶é€²è¡Œç°½å:
java -jar apksigner.jar sign --ks
--ks-key-alias
<ç°½åå°æ‡‰çš„alias>
<å¾…ç°½åapk路徑>
使用該命令時,建è°å…ˆæ‰¾åˆ°ä½ çš„ apksigner.jar 文件所在的路徑,例如,我當å‰çš„路徑是: D:\AndroidStudio\build-tools\35.0.0\lib\apksigner.jar 。
為了方便æ“作,å¯ä»¥å°‡ä¹‹å‰æ¥é©Ÿå·²ç¶“生æˆçš„å°é½ŠåŽå¾…ç°½åçš„ apk :AlignedBoatAttack2.apk,也放在這個 lib 路徑下。
執行完命令åŽï¼Œåœ¨ lib 目錄下å¯çœ‹åˆ°ç°½åæˆåŠŸåŽçš„ apk 文件:
本期教程我們先分享講解到這里啦,下一期å†è¦‹ï¼
Unity Online Services (UOS) 是一個專為游戲開發者è¨è¨ˆçš„ä¸€ç«™å¼æ¸¸æˆ²äº‘æœå‹™å¹³è‡ºï¼Œæä¾›è¦†è“‹æ¸¸æˆ²å…¨ç”Ÿå‘½å‘¨æœŸçš„開發ã€é‹ç‡Ÿå’ŒæŽ¨å»£æ”¯æŒã€‚
了解更多 UOS 相關信æ¯ï¼š
官網:https://uos.unity.cn
æŠ€è¡“äº¤æµ QQ 群:823878269
公眾號:UOS 游戲云æœå‹™
Unity 官方微信
第一時間了解Unity引擎動å‘,å¸ç¿’進階開發技能
æ¯ä¸€å€‹â€œé»žè´Šâ€ã€â€œåœ¨çœ‹â€ï¼Œéƒ½æ˜¯æˆ‘們å‰é€²çš„動力
ç‰¹åˆ¥è²æ˜Žï¼šä»¥ä¸Šå…§å®¹(å¦‚æœ‰åœ–ç‰‡æˆ–è¦–é »äº¦åŒ…æ‹¬åœ¨å…§)為自媒體平臺“網易號â€ç”¨æˆ¶ä¸Šå‚³å¹¶ç™¼å¸ƒï¼Œæœ¬å¹³è‡ºåƒ…æä¾›ä¿¡æ¯å˜å„²æœå‹™ã€‚
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.