Android JNI 擷取應用程式簽名

來源:互聯網
上載者:User

標籤:

使用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


【 聲明:著作權全部分,歡迎轉載,不用於商業用途。  --天盟】

著作權聲明:本文部落格原創文章。部落格,未經同意,不得轉載。

Android JNI 擷取應用程式簽名

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.