NHN AppGuardはアビューズを検出した時に、次のようなポップアップウィンドウで通知する機能を提供しています。
しかし、なぜ終了したのかコードだけでは分からず、不便を感じることも多くあったと思います。
このような不便を改善するために、当社が直接実装したカスタムポップアップを利用する方法をご案内します。
検出メッセージはSDK連動を通じてカスタマイズ可能です。
まずDiresu.oを通じて、検出およびブロックした際に呼び出されるコールバック関数の登録が必要です
// classPath: Callback関数が実装されたclassのfullパス
// functionName: Callback関数名
// isUnity: Unityアプリの有無
// useMsgBox: NHN AppGuard検出、ブロックポップアップを有効にするかどうか
void o(String classPath、String functionName、boolean isUnity、boolean useMsgBox);
ただし、NHN AppGuardポップアップではなく、直接実装したポップアップを有効にするには、useMsgBox値をfalseに設定して各コールバックに合ったメッセージを作成してください。
◆ Diresu.o使用例
1) AOS(Android)
package com.nhnent.test
public class AppGuard {
public void static Callback(String msg) {
}
public class MainActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Diresu.o(“com/nhnent/test/AppGuard”, “Callback”, false, false);
}
}
Diresu.oを通じて登録したコールバック関数のmsg値に次のようにjson形式のstring値を渡します。
{
"info": {
"type": 2,
"data": "401"
}
}
(コールバック関数に渡されるmsg値はBase64でエンコードされています。したがって、Base64でのデコード作業が必要です。)
typeの値で検出の有無を確認でき、data値で検出理由を確認できます。
type
2:検出
4:ブロック
data
401:署名検出
data値が意味する検出パターンについては、ガイド文書5.2コールバックデータテーブルで確認できます。
2) iOS
この例では、AppguardHandler関数がコールバックを受ける関数であり、パラメータとして受け取るaaの中に結果値が入りますが、その結果値を基にハンドリングできます。
// コールバック関数の宣言
- (void) CallbackSample: (NSString*) json {
NSLog(@"Callback called: %@",json);
}
// コールバック関数の登録
IMP CALLBACK = [self methodForSelector:@selector(CallbackSample:)];
[Diresu o:CALLBACK :false];
検出イベントが発生すると、JSON文字列をコールバック関数に渡します。
JSON文字列の例
{
"info" : {
"type" : 2,
"data" : "100047"
}
}
type
1:ログだけを残してアプリを終了しないイベント(detected)
2:アプリをすぐに終了しなければならない検出イベント(blocked)
4:条件ブロックポリシーによるブロックイベント
data
100047:脱獄
iOSガイド文書の「8.1コールバック関数内容」項目を参照し、「8.2.2検出タイプ」項目で各ハッキングタイプ別のハンドリングを実行できます。
3) Unity > iOS
Unity> iOSの場合は、次のようにUnityコールバック関数の登録を進めてください。
// コールバック関数の宣言
[MonoPInvokeCallback(typeof(NativeDelegateNotification))]
public static void AppguardHandler(string aa) {
Debug.Log ("Unity Callback : " + aa);
}
// コールバック関数の登録
c (AppguardHandler, false);
JSON文字列の例
{
"RT" : "R0",
"PN" : "MP0",
"PG" : "M0"
}
RT:対応タイプ
PN:パターン名
PG:パターングループ
RT
R0:ログだけを残してアプリを終了しないイベント(detected)
R1:アプリをすぐに終了しなければならない検出イベント(blocked)
PN
MP0:メモリ改ざん
Unityガイド文書の「5.1コールバック関数内容」項目を参照し、「5.2.2検出タイプ」項目で各ハッキングタイプ別のハンドリングを実行できます。
SDKガイド文書は、NHN Cloud> Console> NHN AppGuardサービス選択> アプリ保護> SDKダウンロードでダウンロードできます。
そして、検出/ブロックメッセージポップアップをカスタマイズしてApp固有の検出メッセージポップアップを実装してください。
Comments