使用Android JNI 获取应用程序签名。

获取基础上生成自己的签名password,这可以防止别人反编译找到自己的源代码password。

jstring Java_com_masonsdk_jni_JNIUtil_getPWD(JNIEnv* env, jobject thizz,jobject thiz){jclass native_clazz = env->GetObjectClass(thiz);    // 得到 getPackageManager 方法的 ID    jmethodID methodID_func =env->GetMethodID(native_clazz,"getPackageManager", "()Landroid/content/pm/PackageManager;");    // 获得应用包的管理器    jobject package_manager = env->CallObjectMethod(thiz, methodID_func);    // 获得 PackageManager 类    jclass pm_clazz = env->GetObjectClass(package_manager);    // 得到 getPackageInfo 方法的 ID    jmethodID methodID_pm = env->GetMethodID( pm_clazz,            "getPackageInfo", "(Ljava/lang/String;I)Landroid/content/pm/PackageInfo;");    //获取包名    jmethodID methodID_packagename =env->GetMethodID(native_clazz,"getPackageName", "()Ljava/lang/String;");    jstring name_str = static_cast<jstring>(env->CallObjectMethod(thiz, methodID_packagename));    // 获得应用包的信息    jobject package_info = env->CallObjectMethod(package_manager,            methodID_pm, name_str, 64);//env->NewStringUTF("com.example.contasdf")    // 获得 PackageInfo 类    jclass pi_clazz = env->GetObjectClass( package_info);    // 获得签名数组属性的 ID    jfieldID fieldID_signatures = env->GetFieldID( pi_clazz,            "signatures", "[Landroid/content/pm/Signature;");    // 得到签名数组。待改动    jobject signatur = env->GetObjectField(package_info, fieldID_signatures);    jobjectArray  signatures = reinterpret_cast<jobjectArray>(signatur);    // 得到签名    jobject signature = env->GetObjectArrayElement(signatures, 0);    // 获得 Signature 类。待改动    jclass s_clazz = env->GetObjectClass(signature);    // 得到 hashCode 方法的 ID    jmethodID methodID_hc = env->GetMethodID(s_clazz, "hashCode", "()I");    // 获得应用包的管理器,待改动    int hash_code = env->CallIntMethod(signature, methodID_hc);    char str[100];    sprintf(str, "%u", hash_code);    return env->NewStringUTF(str);}

源代码:

https://github.com/mentor811/AndroidUltimateEncrypt


【 声明:版权全部分,欢迎转载,不用于商业用途。 --天盟】

版权声明:本文博客原创文章。博客,未经同意,不得转载。

更多相关文章

  1. Android黑名单电话挂断(AIDL)
  2. TextView 设置背景【点击或获得焦点改变背景】
  3. android 定义 程序 Scheme 接收特定URI开启Activity
  4. Android(安卓)获得手机屏幕大小
  5. 一行命令得到签名SHA1(Android(安卓)Studio)
  6. Android获取WIFI状态下的IP地址以及MAC地址
  7. Android(安卓)服务器连接工具类HttpUtil
  8. Android:CursorAdapter、ContentResolver、startManagingCursor
  9. Android(安卓)获取ip地址

随机推荐

  1. Android 几种加密解密的方法(仅代码)
  2. Android如何调用系统相机拍照
  3. android studio (mac) 快捷键
  4. RxJava 2: 用Retrofit2架构Android(安卓)
  5. kotlin.NotImplementedError: An operati
  6. Android日期选择控件使用详解
  7. [置顶] Androd用WebView播放gif动画
  8. Android Read Only File System IOExcept
  9. android 前后台运行判断(使用场景如:在app
  10. 多个launcher时开机只启动默认的