Hercules API
HerculesPlugin¶
這是基本類別和 API 的列表。
所有 API 在 Hive SDK 初始化後均可使用。
是否越獄設備¶
- 支援的平台:iOS
- 檢查iOS設備是否越獄。
- 參數: 無
- 返回值: 如果處於原始固件狀態則返回 0,若為越獄設備則返回非零值。
是否已根據設備¶
- 支援的平台:Android
- 檢查Android設備是否已根據。
- 參數: 無
- 返回值: 如果未獲得根權限則返回0,如果設備已獲得根權限則返回非零值。
IsEmulator¶
- 支援的平台:Android
- 檢查 Android 設備是否為模擬器。
- 參數: 無
- 返回值
- 對於移動設備返回 0,對於模擬器返回非零。
- 模擬器偽裝成移動設備,因此某些模擬器可能返回 0。
IsUnofficialBuild¶
- 支援平台:iOS
- 檢查 iOS 構建是否為非官方構建(未從 App Store 下載的構建)
- 它檢查構建是否經過 Fairplay 加密和簽名。從 AppStore 和 TestFlight 下載的構建被認為是官方構建。
- 參數: 無
- 返回值: 官方版本返回 0,外部安裝版本返回 1。如果檢查版本失敗,則返回 2 或更高的值。
GetFunnels¶
- 支援平台:Android
- 獲取應用程序安裝的漏斗。
- 參數: 無
- 返回值: 返回一個值,例如 ADB、Google Play 商店或 Amazon Appstore,作為應用程序安裝的路徑;如果應用程序是通過其他市場或文件管理器應用程序安裝的,則返回已安裝應用程序的包名稱。
獲取證書描述¶
- 支援平台:Android、iOS
- 獲取已簽名應用程式的證書資訊。
- 參數: 無
- 返回值
- Android: 返回 APK keystore 的通用名稱。
- iOS: 返回與配置檔相關的證書資訊。從 App Store 下載的構建將返回空值。如果應用被破解,則根據安裝方式顯示破解開發者證書的名稱或用戶的個人證書名稱。
獲取團隊ID¶
- 支援的平台:iOS
- 獲取配置檔擁有者帳戶的團隊ID。
- 參數: 無
- 返回值
- 簽署應用程式的 Apple 開發者帳戶的團隊 ID。由字母和數字組成。
- 如果應用程式被破解,則可能會使用不同的帳戶重新簽署,並且可能與下面以粗體顯示的值不同。
獲取證書哈希¶
- 支援的平台:Android
- 獲取應用於APK的簽名哈希。
- 參數: 無
- 返回值
- APK 簽名哈希值。SHA1 哈希,40 位十六進制格式的字符串。
- 簽名密鑰在上傳到 Google Play 商店或 Amazon 之後可能會改變。在檢查所使用的簽名密鑰的哈希值後,您可以將它們進行比較。如果它們與之前檢查的哈希值不同,則可以視為重新打包。
獲取代理狀態¶
- 支援的平台:Android,iOS
- 檢查設備是否具有代理設置並返回結果。
- 參數: 無
- 返回值: 如果應用代理設置,則返回非零值。
獲取VPN狀態¶
- 支援的平台:Android,iOS
- 檢查設備是否連接到VPN並返回結果。
- 參數: 無
- 返回值: 如果 VPN 連接處於活動狀態,則返回非零值。
HerculesPrefs¶
Unity引擎的PlayerPrefs類別的加密版本。
與Unity不同,它在您退出遊戲時不會自動保存,因此您必須調用Save函數。
如果您在備份設備後將遊戲數據移動到另一個設備,加密數據也可能會被複製。
參考網址: https://docs.unity3d.com/ScriptReference/PlayerPrefs.html
GetInt, GetFloat, GetString¶
- 獲取存儲在加密設置文件中的值。
-
參數
- key: 要檢索的值的鍵。
- defaultValue: 如果沒有值,則返回的默認值。
-
返回值
- 存储的值。如果没有存储的值或值已被篡改,则返回defaultValue。
- C++的**HerculesPrefsGetString** API返回的缓冲区必须使用**HerculesFreeMem** API释放。
SetInt, SetFloat, SetString¶
- 加密並儲存鍵和值。
- 如果您在未調用**Save** API的情況下退出應用程式,設置將會丟失。
- 參數
- key: 要存儲的值的鍵。
- value: 要存儲的值。
- 返回值: 無
HasKey¶
- 檢查是否有鍵。
- 參數: 要測試的鍵。
- 返回值: 如果存在鍵,則返回true(C#)或1(C++)。
刪除鍵¶
- 刪除該鍵。
- 參數: 要刪除的鍵。
- 返回值: 無
刪除所有¶
- 刪除所有鍵。
- 參數: 無
- 返回值:無
保存¶
- 更改的內容會再次加密並保存為文件。保存的內容在模組初始化時加載。
- 參數: 無
- 返回值:無
安全變數 (C/C++)¶
這是一個只能在 C/C++ 中使用的安全變數 API。
在 C# 中,使用安全變數類別 (HerculesVar) 時會內部調用它。
建議參考安全變數指南以了解如何使用它。
AddString¶
- 添加赫拉克勒斯安全字符串形式的变量。(已分配)
- 參數: 原始字串的指標。
- 返回值: 創建的安全變數的 ID。
AddVar¶
- 添加 Hercules 安全变量。 (已分配)
- 參數
- data: 創建變量時要參考的初始值的地址。
- length: 要創建的變量的大小。設置數據參數的大小。
- 返回值: 創建的安全變量的 ID。
FreeMem¶
- 釋放由 HerculesGetString API 分配的緩衝區。
- 參數: 由某些 API 分配的緩衝區地址。
- 返回值: 無
GetString¶
- 讀取 Hercules 安全字串的值。(讀取)
- 在 C++ 模板類別中,當變數的值被引用時,它會自動被調用。
- 如果在讀取字串時檢測到值被篡改,則會調用在初始化時設置的回調函數。
- 返回值
- 如果成功读取值,则返回字符串缓冲区;如果不成功,则返回nullptr。
- 返回的缓冲区必须通过**HerculesFreeMem** API释放
- 参数: 安全变量的ID。
GetVar¶
- 讀取Hercules安全變數的值。(讀取)
- 在C++模板類別中,當變數的值被引用時,它會自動被調用。
- 當讀取變數時,如果檢測到其值被篡改,則在初始化期間設置的回調函數會被調用。(這取決於策略。)
- 參數
- seq: 安全變數的 ID。
- data: 要讀取的數據緩衝區的地址。您必須設置一個與創建變數時設置的大小相同的緩衝區。
- 返回值
- 如果值成功讀取,則返回 0;對於無效參數返回正數;如果檢測到篡改則返回負數。
- 如果您在初始化階段未設置回調函數,則可以參考此返回值。
SetVar¶
- 設定 Hercules 安全變數的值。 (寫入)
- 在 C++ 模板類別中,當將值賦給變數時,會自動調用它。
- 參數
- seq: 安全變數的 ID。
- data: 要設置的數據緩衝區的地址。您必須設置與創建變數時設置的大小相同的緩衝區。
- 返回值: 無
RemoveVar¶
- 移除Hercules安全變數。(釋放)
- 在C++模板類中,當變數被釋放時,它會自動被調用。
- 參數: 要釋放的變數的 ID。
- 返回值: 無