Android JNI 获取应用签名

使用Android JNI 获取应用签名。

根据获取的签名来生成自己的密码,这样可以防止别人反编译自己的源码后查找密码。

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


【 声明:版权所有,欢迎转载,请勿用于商业用途。  --天盟】

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值