Search code examples
androidandroid-ndkjava-native-interface

Extracting .so file in android exposes hardcoded strings. How to avoid that?


JNIEXPORT jstring JNICALL Java_com_commonutils_Encryption_APIKey(JNIEnv *env, jobject object){
    return (*env)->NewStringUTF(env, "test123");
}

Here extracting the so file exposes the value test123


Solution

  • A trivial way would be assigning characters one-by-one instead of through string literals.

    For example,

    char dummy[8] = {0};
    dummy[0] = 't';
    dummy[1] = 'e';
    dummy[2] = 's';
    dummy[3] = 't';
    dummy[4] = '1';
    dummy[5] = '2';
    dummy[6] = '3';
    return (*env)->NewStringUTF(env, dummy);