跳轉至

Hercules API

HerculesPlugin

這是基本類別和 API 的列表。
所有 API 在 Hive SDK 初始化後均可使用。

是否越獄設備

  • 支援的平台:iOS
  • 檢查iOS設備是否越獄。
uint IsJailbrokenDevice();
uint HerculesIsJailbrokenDevice();
  • 參數:
  • 返回值: 如果處於原始固件狀態則返回 0,若為越獄設備則返回非零值。

是否已根據設備

  • 支援的平台:Android
  • 檢查Android設備是否已根據。
uint IsRootedDevice();
uint HerculesIsRootedDevice();
  • 參數:
  • 返回值: 如果未獲得根權限則返回0,如果設備已獲得根權限則返回非零值。

IsEmulator

  • 支援的平台:Android
  • 檢查 Android 設備是否為模擬器。
uint IsEmulator();
uint HerculesIsEmulator();
  • 參數:
  • 返回值
    • 對於移動設備返回 0,對於模擬器返回非零。
    • 模擬器偽裝成移動設備,因此某些模擬器可能返回 0。

IsUnofficialBuild

  • 支援平台:iOS
  • 檢查 iOS 構建是否為非官方構建(未從 App Store 下載的構建)
  • 它檢查構建是否經過 Fairplay 加密和簽名。從 AppStore 和 TestFlight 下載的構建被認為是官方構建。
uint IsUnofficialBuild();
uint HerculesIsUnofficialBuild();
  • 參數:
  • 返回值: 官方版本返回 0,外部安裝版本返回 1。如果檢查版本失敗,則返回 2 或更高的值。

GetFunnels

  • 支援平台:Android
  • 獲取應用程序安裝的漏斗。
string GetFunnels();
const char* HerculesGetFunnels();
  • 參數:
  • 返回值: 返回一個值,例如 ADB、Google Play 商店或 Amazon Appstore,作為應用程序安裝的路徑;如果應用程序是通過其他市場或文件管理器應用程序安裝的,則返回已安裝應用程序的包名稱。

獲取證書描述

  • 支援平台:Android、iOS
  • 獲取已簽名應用程式的證書資訊。
string GetCertDesc();
const char* HerculesGetCertDesc();
  • 參數:
  • 返回值
    • Android: 返回 APK keystore 的通用名稱。
    • iOS: 返回與配置檔相關的證書資訊。從 App Store 下載的構建將返回空值。如果應用被破解,則根據安裝方式顯示破解開發者證書的名稱或用戶的個人證書名稱。

獲取團隊ID

  • 支援的平台:iOS
  • 獲取配置檔擁有者帳戶的團隊ID。
string GetTeamId();
const char* HerculesGetTeamId();
  • 參數:
  • 返回值
    • 簽署應用程式的 Apple 開發者帳戶的團隊 ID。由字母和數字組成。
    • 如果應用程式被破解,則可能會使用不同的帳戶重新簽署,並且可能與下面以粗體顯示的值不同。

獲取證書哈希

  • 支援的平台:Android
  • 獲取應用於APK的簽名哈希。
string GetCertHash();
const char* HerculesGetCertHash();
  • 參數:
  • 返回值
    • APK 簽名哈希值。SHA1 哈希,40 位十六進制格式的字符串。
    • 簽名密鑰在上傳到 Google Play 商店或 Amazon 之後可能會改變。在檢查所使用的簽名密鑰的哈希值後,您可以將它們進行比較。如果它們與之前檢查的哈希值不同,則可以視為重新打包。

獲取代理狀態

  • 支援的平台:Android,iOS
  • 檢查設備是否具有代理設置並返回結果。
int GetProxyStatus();
int HerculesGetProxyStatus();
  • 參數:
  • 返回值: 如果應用代理設置,則返回非零值。

獲取VPN狀態

  • 支援的平台:Android,iOS
  • 檢查設備是否連接到VPN並返回結果。
int GetVPNStatus();
int HerculesGetVPNStatus();
  • 參數:
  • 返回值: 如果 VPN 連接處於活動狀態,則返回非零值。

HerculesPrefs

Unity引擎的PlayerPrefs類別的加密版本。
與Unity不同,它在您退出遊戲時不會自動保存,因此您必須調用Save函數。
如果您在備份設備後將遊戲數據移動到另一個設備,加密數據也可能會被複製。
參考網址: https://docs.unity3d.com/ScriptReference/PlayerPrefs.html

GetInt, GetFloat, GetString

  • 獲取存儲在加密設置文件中的值。
int GetInt(string key, int defaultValue = 0);
float GetFloat(string key, float defaultValue = 0.0f);
string GetString(string key, string defaultValue = "");
int HerculesPrefsGetInt(const char *key, int defaultValue = 0);
float HerculesPrefsGetFloat(const char *key, float defaultValue = 0);
char* HerculesPrefsGetString(const char *key, const char *defaultValue = "");
  • 參數

    • key: 要檢索的值的鍵。
    • defaultValue: 如果沒有值,則返回的默認值。
  • 返回值

    • 存储的值。如果没有存储的值或值已被篡改,则返回defaultValue。
    • C++的**HerculesPrefsGetString** API返回的缓冲区必须使用**HerculesFreeMem** API释放。

SetInt, SetFloat, SetString

  • 加密並儲存鍵和值。
  • 如果您在未調用**Save** API的情況下退出應用程式,設置將會丟失。
void SetInt(string key, int value);
void SetFloat(string key, float value);
void SetString(string key, string value);
void HerculesPrefsSetInt(const char *key, int value);
void HerculesPrefsSetFloat(const char *key, float value);
void HerculesPrefsSetString(const char *key, const char *value);
  • 參數
    • key: 要存儲的值的鍵。
    • value: 要存儲的值。
  • 返回值: 無

HasKey

  • 檢查是否有鍵。
bool HasKey(string key);
uint HerculesPrefsHasKey(const char *key);
  • 參數: 要測試的鍵。
  • 返回值: 如果存在鍵,則返回true(C#)或1(C++)。

刪除鍵

  • 刪除該鍵。
void DeleteKey(string key);
void HerculesPrefsDeleteKey(const char *key);
  • 參數: 要刪除的鍵。
  • 返回值:

刪除所有

  • 刪除所有鍵。
void DeleteAll();
void HerculesPrefsDeleteAll();
  • 參數:
  • 返回值:無

保存

  • 更改的內容會再次加密並保存為文件。保存的內容在模組初始化時加載。
void Save();
void HerculesPrefsSave();
  • 參數:
  • 返回值:無

安全變數 (C/C++)

這是一個只能在 C/C++ 中使用的安全變數 API。
在 C# 中,使用安全變數類別 (HerculesVar) 時會內部調用它。
建議參考安全變數指南以了解如何使用它。

AddString

  • 添加赫拉克勒斯安全字符串形式的变量。(已分配)
HERCULES HerculesAddString(const char *str); 
  • 參數: 原始字串的指標。
  • 返回值: 創建的安全變數的 ID。

AddVar

  • 添加 Hercules 安全变量。 (已分配)
HERCULES HerculesAddVar(const void *data, uint length);
  • 參數
    • data: 創建變量時要參考的初始值的地址。
    • length: 要創建的變量的大小。設置數據參數的大小。
  • 返回值: 創建的安全變量的 ID。

FreeMem

  • 釋放由 HerculesGetString API 分配的緩衝區。
void HerculesFreeMem(void *ptr);
  • 參數: 由某些 API 分配的緩衝區地址。
  • 返回值:

GetString

  • 讀取 Hercules 安全字串的值。(讀取)
  • 在 C++ 模板類別中,當變數的值被引用時,它會自動被調用。
  • 如果在讀取字串時檢測到值被篡改,則會調用在初始化時設置的回調函數。
char* HerculesGetString(HERCULES seq);
  • 返回值
    • 如果成功读取值,则返回字符串缓冲区;如果不成功,则返回nullptr。
    • 返回的缓冲区必须通过**HerculesFreeMem** API释放
  • 参数: 安全变量的ID。

GetVar

  • 讀取Hercules安全變數的值。(讀取)
  • 在C++模板類別中,當變數的值被引用時,它會自動被調用。
  • 當讀取變數時,如果檢測到其值被篡改,則在初始化期間設置的回調函數會被調用。(這取決於策略。)
int HerculesGetVar(HERCULES seq, void *data); 
  • 參數
    • seq: 安全變數的 ID。
    • data: 要讀取的數據緩衝區的地址。您必須設置一個與創建變數時設置的大小相同的緩衝區。
  • 返回值
    • 如果值成功讀取,則返回 0;對於無效參數返回正數;如果檢測到篡改則返回負數。
    • 如果您在初始化階段未設置回調函數,則可以參考此返回值。

SetVar

  • 設定 Hercules 安全變數的值。 (寫入)
  • 在 C++ 模板類別中,當將值賦給變數時,會自動調用它。
void HerculesSetVar(HERCULES seq, const void *data);
  • 參數
    • seq: 安全變數的 ID。
    • data: 要設置的數據緩衝區的地址。您必須設置與創建變數時設置的大小相同的緩衝區。
  • 返回值:

RemoveVar

  • 移除Hercules安全變數。(釋放)
  • 在C++模板類中,當變數被釋放時,它會自動被調用。
void HerculesRemoveVar(HERCULES seq);
  • 參數: 要釋放的變數的 ID。
  • 返回值: