3

I have a native android library that I am trying to secure with a licensing system. To do so, I need to get a unique identifier for the current Android device. I have been trying a lot of solutions but all need JAVA applications.

So my question is : is it possible to get a unique identifier from c++ code (either with NDK or c++ embedded functions) ?

Regards

sa.l_dev
  • 189
  • 1
  • 10

1 Answers1

0

Here is the CODE...

std::string getPublicStaticString(JNIEnv *env, const char *className, const char *fieldName) {
    jclass clazz = env->FindClass(className);
    if (clazz != nullptr) {
        jfieldID fid = env->GetStaticFieldID(clazz, fieldName, "Ljava/lang/String;");
    if (fid != nullptr) {
        jstring GladioReceiver = (jstring) env->GetStaticObjectField(clazz, fid);
        jboolean blnIsCopy;
        std::string mystr = env->GetStringUTFChars(GladioReceiver, &blnIsCopy);
        return mystr;
    }
}
    return "ERROR";
}

std::string CreateDeviceUniqueID(JNIEnv *env) {
    std::string strReturn;
    std::string board = getPublicStaticString(env, "android/os/Build", "BOARD");
    std::string brand = getPublicStaticString(env, "android/os/Build", "BRAND");
    std::string display = getPublicStaticString(env, "android/os/Build", "DISPLAY");
    std::string device = getPublicStaticString(env, "android/os/Build", "DEVICE");
    std::string manufacturer = getPublicStaticString(env, "android/os/Build", "MANUFACTURER");
    std::string model = getPublicStaticString(env, "android/os/Build", "MODEL");
    std::string product = getPublicStaticString(env, "android/os/Build", "PRODUCT");

    int mod = 10;
    int a1 = ((int) board.size()) % mod;
    int a2 = ((int) brand.size()) % mod;
    int a3 = ((int) display.size()) % mod;
    int a4 = ((int) device.size()) % mod;
    int a5 = ((int) manufacturer.size()) % mod;
    int a6 = ((int) model.size()) % mod;
    int a7 = ((int) product.size()) % mod;

    strReturn = "35" +
            std::to_string(a1) +
            std::to_string(a2) +
            std::to_string(a3) +
            std::to_string(a4) +
            std::to_string(a5) +
            std::to_string(a6) +
            std::to_string(a7);

    return strReturn;
}