4、ollvm移植到ndk中

本文介绍了如何在Android开发中使用NDK和LLVM进行代码混淆,升级clang版本,修改makefile以添加混淆选项,以及使用IDA进行逆向工程验证混淆效果的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

准备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")

逆向出来看的时候就变得非常复杂了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值