防劫持SDK是具备防劫持兼防截屏功能的SDK,可有效防范恶意程序对应用进行界面劫持与截屏的恶意行为。
条目 | 说明 |
---|---|
兼容平台 | iOS 8.0+ |
开发环境 | XCode 4.0 + |
CPU架构 | armv7, arm64, i386, x86_64 |
SDK依赖 | libz, libresolv, libc++ |
从顶象技术官网下载SDK或者向销售人员直接获取,下面是SDK的目录结构
DXhijack_xxx_xxx_xxx_debug.zip
防劫持debug 授权集成库 DXhijack_xxx_xxx_xxx_release.zip
防劫持release 授权集成库
DXhijack_xxx_xxx_xxx_xxx.zip
文件,得到以下文件DXhijack
文件夹DXhijack.a
已授权静态库Header/DXhijack.h
头文件dx_auth_license.description
授权描述文件DXhijackiOS.framework
已授权framework 集成库将SDK目录(包含静态库及其头文件)直接拖入工程目录中,或者右击总文件夹添加文件。 或者 将DXhijackiOS.framework 拖进framework存放目录
在项目中添加 libc++.tbd
库,选择Target
-> Build Phases
,在Link Binary With Libraries
里点击加号,添加libc++.tbd
在项目中添加Linking配置,选择Target
-> Build Settings
,在Other Linker Flags
里添加-ObjC
配置
@interface DXhijack : NSObject
+(void)addFuzzy; //后台模糊效果
+(void)removeFuzzy;//后台移除模糊效果
@end
在对应的AppDelegate.m 文件中头部插入
#import "DXhijack.h"
//在AppDelegate.m 文件中applicationWillResignActive 方法调用增加
- (void)applicationWillResignActive:(UIApplication *)application {
[DXhijack addFuzzy];
}
//在AppDelegate.m 文件中applicationDidBecomeActive 方法调用移除
- (void)applicationDidBecomeActive:(UIApplication *)application {
[DXhijack removeFuzzy];
}
错误码 | 错误描述 |
---|---|
-1000 , -1101 | 授权失败,请联系顶象客服人员 |
-1102 | 试用版本已过期,请联系顶象客服人员 |
-1103 | 包名相关不正确,请校对包名信息是否跟生成库提供的包名一致 |
条目 | 说明 |
---|---|
开发目标 | Android 4.0+ |
开发环境 | Android Studio 3.0.1 或者 Eclipse + ADT |
CPU架构 | ARM 或者 x86 |
SDK三方依赖 | 无 |
SDK目录结构
dx-anti-hijack-${version}.jar
Android jar包armeabi
, armeabi-v7a
, arm64-v8a
, x86
4个abi平台的动态库文件把dx-anti-hijack-x.x.x.jar, so文件放到相应模块的libs目录下
android{
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
repositories{
flatDir{
dirs 'libs'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
}
Android 5.0(不包含5.0)以下需要在项目AndroidManifest.xml文件中添加下列权限配置:
<uses-permission android:name="android.permission.GET_TASKS"/>
-dontwarn *.com.dingxiang.mobile.**
-dontwarn *.com.mobile.strenc.**
-keep class com.security.inner.**{*;}
-keep class *.com.dingxiang.mobile.**{*;}
-keep class *.com.mobile.strenc.**{*;}
-keep class com.dingxiang.mobile.antihijack.** {*;}
3.3.1.1 初始化
建议在Application的onCreate下調用
/**
* 使用API前必須先初始化
* @param context
*/
public static void init(Context context);
3.3.1.2 反截屏功能
/**
* 反截屏功能
* @param activity
*/
public static void DGCAntiHijack.antiScreen(Activity activity);
/**
* 反截屏功能
* @param dialog
*/
public static void DGCAntiHijack.antiScreen(Dialog dialog);
3.3.1.3 反劫持检测
/**
* 调用防劫持检测,通常现在activity的onPause和onStop调用
* @return 是否存在被劫持风险
*/
public static boolean DGCAntiHijack.antiHijacking();
//使用反劫持方法
@Override
protected void onPause() {
boolean safe = DXAntiHijack.antiHijacking();
if(!safe){
Toast.makeText(getApplicationContext(), "App has entered the background", Toast.LENGTH_LONG).show();
}
super.onPause();
}
@Override
protected void onStop() {
boolean safe = DXAntiHijack.antiHijacking();
if(!safe){
Toast.makeText(getApplicationContext(), "App has entered the background", Toast.LENGTH_LONG).show();
}
super.onStop();
}
//使用反截屏方法
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DXAntiHijack.antiScreen(MainActivity.this);
}
错误码 | 错误描述 |
---|---|
-1000 , -1101 | 授权失败,请联系顶象客服人员 |
-1102 | 试用版本已过期,请联系顶象客服人员 |
-1103 | 包名或签名相关不正确,请校对包名/签名信息是否跟生成库提供的包名/签名一致 |
其他 | 设备运行在危险环境中,如注入、调试等环境 |
具体请查看:https://www.dingxiang-inc.com/docs/preview/detail/hijack-faq