对于 JNI 中的 Native 的代码,如何混淆防止别人看到函数名呢?下面采用一个取巧的方法:
- 尽量把所有的JNI方法都移到一个自己混淆的类中,com.sample.app.a,此类中的方法名是自己混淆的:
public class a { public static native void b(); }
- 建立一个新的代理类 com.sample.app.NativeAPIs,此类的方法名是正常的名字:
public class NativeAPIs { public static void foobar() { a.b(); } }
- 在 Native 的代码中,实现JNI 方法:
#define foobar Java_com_sample_app_a_b extern "C" JNIEXPORT jstring foobar(JNIEnv* env, jobject thiz) ......