本文主要是介绍4、ollvm移植到ndk中,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
准备ndk:
android-ndk-r21b-linux-x86_64
git checkout ollvm-Obfuscation
将编译好的ollvm中的bin include lib三个文件夹放到ndk中的android-ndk-r21b-linux-x86_64/android-ndk-r21b/toolchains/llvm/prebuilt/linux-x86_64目录中,进行替换
确认clang版本:默认是9.0.8,替换后是9.0.1,
然后在ubuntu环境中安装jdk,下载android studio,创建c++项目,修改cpp中的makefile文件,
增加add_definitions("-mllvm -fla"),再将函数变的复杂点 定义:
extern "C"
JNIEXPORT jstring JNICALL
Java_com_example_ollvm_1ndk_MainActivity_stringFromJNI2(JNIEnv *env, jobject thiz, jint type) {std::string hello = "Hello from C++";if(type == 2){hello = "Hello from kanxue";} else if(type == 3){hello = "Hello from perty";}else if(type == 4){hello = "Hello from nowind";}return env->NewStringUTF(hello.c_str());
}
执行gradle assemblerelease 命令
生成的so在:
home/nowind/AndroidStudioProjects/ollvm_ndk/app/build/intermediates/stripped_native_libs/release/out/lib/
然后使用ida逆向看下,确实增加了平坦化的混淆 我们再弄复杂点:
add_definitions("-mllvm -fla -mllvm -split -mllvm -split_num=3")
逆向出来看的时候就变得非常复杂了
这篇关于4、ollvm移植到ndk中的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!