API 가이드
HerculesPlugin¶
기본 클래스 및 API 목록입니다.
모든 API들은 HiveSDK가 초기화 된 이후에 사용할 수 있습니다.
IsJailbrokenDevice¶
- 지원되는 플랫폼: iOS
- iOS 기기가 탈옥 상태인지 확인합니다.
- 매개변수: 없음
- 반환 값: 순정 펌웨어 상태이면 0, 탈옥된 기기이면 0이 아닌 값이 반환됩니다.
IsRootedDevice¶
- 지원되는 플랫폼: Android
- 안드로이드 기기가 루팅된 상태인지 확인합니다.
- 매개변수: 없음
- 반환 값: 루팅되지 않은 상태이면 0, 루팅된 기기이면 0이 아닌 값이 반환됩니다.
IsEmulator¶
- 지원되는 플랫폼: Android
- 안드로이드 기기가 에뮬레이터인지 확인합니다.
- 매개변수: 없음
- 반환 값
- 모바일 기기이면 0, 에뮬레이터이면 0이 아닌 값이 반환됩니다.
- 에뮬레이터들은 모바일 기기로 보이도록 둔갑하기 때문에 특정 에뮬레이터의 경우 0이 반환될 수 있습니다.
IsUnofficialBuild¶
- 지원되는 플랫폼: iOS
- iOS 빌드가 비공식 빌드(앱스토어에서 내려받지 않은 빌드)인지 확인합니다.
- 암호화 및 서명된 빌드인지 체크하며, AppStore 및 TestFlight에서 내려받은 빌드를 공식 빌드로 간주합니다.
- 매개변수: 없음
- 반환 값: 공식 빌드이면 0 이며, 외부에서 설치된 빌드는 1 입니다. 확인에 실패하면 2 이상의 값이 반환됩니다.
GetFunnels¶
- 지원되는 플랫폼: Android
- 앱이 설치된 유입 경로를 얻어옵니다.
- 매개변수: 없음
- 반환 값: 앱이 설치된 경로로 ADB, Google Play Store, Amazon Appstore와 같은 값이 반환되거나, 기타 다른 마켓 또는 파일탐색기 앱으로 설치한 경우 설치한 앱의 패키지명이 반환됩니다.
GetCertDesc¶
- 지원되는 플랫폼: Android, iOS
- 서명된 앱의 인증서 정보를 얻어옵니다.
- 매개변수: 없음
- 반환 값
- Android: APK 키스토어의 Common Name 을 반환합니다.
- iOS: 프로비저닝 프로파일에 연결된 인증서 정보를 반환합니다. 앱스토어에서 내려받은 빌드는 빈 값입니다. 앱이 크랙된 경우 설치 방법에 따라 크랙 개발자의 인증서 또는 유저 개인의 인증서 이름이 표시됩니다.
GetTeamId¶
- 지원되는 플랫폼: iOS
- 프로비저닝 프로파일 소유자 계정의 팀 ID 를 얻어옵니다.
- 매개변수: 없음
- 반환 값: 앱을 서명한 애플 개발자 계정의 팀 ID 이며, 영문과 숫자의 조합입니다. 앱이 크랙되는 경우 다른 계정으로 재 서명되어 값이 달라질 수 있습니다.
GetCertHash¶
- 지원되는 플랫폼: Android
- APK에 적용된 서명 해시를 얻어옵니다.
- 매개변수: 없음
- 반환 값: APK 서명해시 값으로 SHA1 해시이며 16진수 형태의 40자리 문자열입니다. 구글플레이스토어 또는 아마존 등 업로드 후 서명키가 달라질 수 있습니다. 기존에 확인한 해시와 다른 경우 리패키징으로 볼 수 있습니다.
GetProxyStatus¶
- 지원되는 플랫폼: Android, iOS
- 기기가 프록시 설정 상태인지 확인합니다.
- 매개변수: 없음
- 반환 값: 프록시 설정상태이면 0이 아닌 값 입니다.
GetVPNStatus¶
- 지원되는 플랫폼: Android, iOS
- 현재 기기가 VPN 연결 중인지 확인합니다.
- 매개변수: 없음
- 반환 값: VPN에 연결 중이면 0이 아닌 값 입니다.
HerculesPrefs¶
유니티 엔진의 PlayerPrefs 클래스 형태의 암호화 버전입니다.
유니티와 달리 게임을 종료할 때 자동으로 저장이 되지 않으니, Save함수를 호출해야 합니다.
기기 백업 후 게임 데이터를 다른 기기로 옮기면, 암호화된 데이터도 같이 복사될 수 있습니다.
참고 URL: https://docs.unity3d.com/ScriptReference/PlayerPrefs.html
GetInt, GetFloat, GetString¶
- 암호화 된 설정파일에 저장되어 있는 값을 얻어옵니다.
- 매개변수
- key: 얻어올 값의 키 입니다.
- defaultValue: 값이 없을 경우 반환될 기본 값 입니다.
- 반환 값
- 저장되어 있던 값 입니다. 저장된 값이 없거나 변조된 것으로 판단되는 경우 defaultValue가 반환됩니다.
- C++의 HerculesPrefsGetString API에서 반환된 버퍼는 HerculesFreeMem API로 해제해야 합니다.
SetInt, SetFloat, SetString¶
- key와 value를 암호화하여 보관합니다.
- Save API를 호출하지 않고 앱을 종료하면 설정된 내용이 손실됩니다.
- 매개변수
- key: 저장할 값의 키 입니다.
- value: 저장할 값 입니다.
- 반환 값: 없음
HasKey¶
- 키가 존재하는지 확인합니다.
- 매개변수: 테스트할 키 입니다.
- 반환 값: 키가 있으면 true(C#) 또는 1(C++)이 반환됩니다.
DeleteKey¶
- 지정된 키를 삭제합니다.
- 매개변수: 삭제할 키 입니다.
- 반환 값: 없음
DeleteAll¶
- 모든 키를 삭제합니다.
- 매개변수: 없음
- 반환 값: 없음
Save¶
- 변경된 내용을 다시 한번 암호화하여 파일로 저장합니다.
저장된 내용은 모듈 초기화 시 불러옵니다.(Load)
- 매개변수: 없음
- 반환 값: 없음
보안 변수 (C/C++)¶
C/C++에서만 사용할 수 있는 보안변수 API 입니다.
C#에서는 보안변수 클래스 사용시 내부에서 호출됩니다.
사용방법은 별도 준비된 보안변수 사용가이드를 참고하는 것이 좋습니다.
AddString¶
- 문자열 형태의 Hercules 보안 변수를 추가합니다. (할당)
- 매개변수: 원본 문자열의 포인터입니다.
- 반환 값: 생성한 보안 변수의 ID 입니다.
AddVar¶
- Hercules 보안 변수를 추가합니다. (할당)
- 매개변수
- data: 변수 생성 시 참조할 초기값의 주소입니다.
- length: 생성할 변수의 크기입니다. data 매개변수의 크기를 설정합니다.
- 반환 값: 생성한 보안 변수의 ID 입니다.
FreeMem¶
- HerculesGetString API 에서 할당된 버퍼를 해제합니다.
- 매개변수: 특정 API 에서 할당된 버퍼의 주소입니다.
- 반환 값: 없음
GetString¶
- Hercules 보안 문자열의 값을 읽어옵니다. (읽기)
- C++ 템플릿 클래스에서는 변수의 값 참조 시 자동으로 호출됩니다.
- 문자열을 읽어오는 시점에 값이 변조된 것을 감지하면 초기화 시 설정했던 콜백 함수가 호출됩니다.
- 매개변수: 보안 변수의 ID 입니다.
- 반환 값: 값을 성공적으로 읽어 오면 문자열 버퍼를 반환하고 실패하면 nullptr을 반환합니다. 반환된 버퍼는 HerculesFreeMem API를 통해 해제해야 합니다.
GetVar¶
- Hercules 보안 변수의 값을 읽어옵니다. (읽기)
- C++ 템플릿 클래스에서는 변수의 값 참조 시 자동으로 호출됩니다.
- 변수를 읽어오는 시점에 값이 변조된 것을 감지하면 초기화 시 설정했던 콜백 함수가 호출됩니다.
- 매개변수
- seq: 보안 변수의 ID 입니다.
- data: 읽어올 데이터 버퍼의 주소입니다. 변수 생성시 설정했던 크기와 동일한 크기의 버퍼를 전달해야 합니다.
SetVar¶
- Hercules 보안 변수의 값을 설정합니다. (쓰기)
- C++ 템플릿 클래스에서는 변수에 값 대입 시 자동으로 호출됩니다.
- 매개변수: 없음
- 반환 값: 설정할 데이터 버퍼의 주소입니다. 변수 생성시 설정했던 크기와 동일한 크기의 버퍼를 전달해야 합니다.
RemoveVar¶
- Hercules 보안 변수를 제거합니다. (해제)
- C++ 템플릿 클래스에서는 변수 해제 시 자동으로 호출됩니다.
- 매개변수: 해제할 변수의 ID 입니다.
- 반환 값: 없음