跳转至

大力神 API

HerculesPlugin

这是基本类和 API 的列表。
所有 API 在 Hive SDK 初始化后均可使用。

是否越狱设备

  • 支持的平台:iOS
  • 检查iOS设备是否越狱。
uint IsJailbrokenDevice();
uint HerculesIsJailbrokenDevice();
  • 参数:
  • 返回值: 如果处于原始固件状态,则返回0;如果是越狱设备,则返回非零值。

是否为已root设备

  • 支持的平台:Android
  • 检查Android设备是否已root。
uint IsRootedDevice();
uint HerculesIsRootedDevice();
  • 参数:
  • 返回值: 如果未获得root权限则返回0,如果设备已获得root权限则返回非零值。

IsEmulator

  • 支持的平台:Android
  • 检查Android设备是否为模拟器。
uint IsEmulator();
uint HerculesIsEmulator();
  • 参数:
  • 返回值
    • 对于移动设备返回0,对于模拟器返回非零值。
    • 模拟器伪装成移动设备,因此某些模拟器可能返回0。

IsUnofficialBuild

  • 支持的平台:iOS
  • 检查iOS构建是否为非官方构建(未从App Store下载的构建)
  • 它检查构建是否经过Fairplay加密和签名。从AppStore和TestFlight下载的构建被认为是官方构建。
uint IsUnofficialBuild();
uint HerculesIsUnofficialBuild();
  • 参数:
  • 返回值: 官方构建返回0,外部安装的构建返回1。如果检查构建失败,则返回2或更高的值。

获取漏斗

  • 支持的平台:Android
  • 获取应用安装的漏斗。
string GetFunnels();
const char* HerculesGetFunnels();
  • 参数:
  • 返回值: 返回一个值,例如 ADB、Google Play 商店或 Amazon 应用商店,作为应用安装路径,或者如果通过其他市场或文件管理器应用安装,则返回已安装应用的包名。

获取证书描述

  • 支持的平台:Android,iOS
  • 获取签名应用的证书信息。
string GetCertDesc();
const char* HerculesGetCertDesc();
  • 参数:
  • 返回值
    • Android: 返回 APK 密钥库的通用名称。
    • 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 商店或亚马逊后可能会更改。在检查所用签名密钥的哈希值后,您可以进行比较。如果它们与之前检查的哈希值不同,则可以视为重新打包。

获取代理状态

  • 支持的平台: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分配的缓冲区地址。
  • 返回值:

获取字符串

  • 读取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。
  • 返回值: