ollvm vs2019编译

生成vs工程

在这里插入图片描述

cmake -S llvm -B build  -DLLVM_ENABLE_PROJECTS="clang" -DCMAKE_BUILD_TYPE=Release -T host=x64

如果装了多个版本vs,还需要添加 -G参数

  Visual Studio 17 2022        = Generates Visual Studio 2022 project files.
                                 Use -A option to specify architecture.
  Visual Studio 16 2019        = Generates Visual Studio 2019 project files.
                                 Use -A option to specify architecture.
  Visual Studio 15 2017 [arch] = Generates Visual Studio 2017 project files.
                                 Optional [arch] can be "Win64" or "ARM".
  Visual Studio 14 2015 [arch] = Generates Visual Studio 2015 project files.
                                 Optional [arch] can be "Win64" or "ARM".

打开 LLVM.sln

在这里插入图片描述

编译clang

在这里插入图片描述

产物

等待漫长时间后
在这里插入图片描述
注意:不是ollvm,不具备混淆功能。

编译ollvm

項目结构

在这里插入图片描述

生成vs工程

cmake -S llvm -B build  -DLLVM_ENABLE_PROJECTS="clang" -DCMAKE_BUILD_TYPE=Release -DLLVM_INCLUDE_TESTS=OFF -DLLVM_ENABLE_NEW_PASS_MANAGER=OFF  -T host=x64

剩下就和llvm过程一样了

验证

native-lib.cpp

#include <jni.h>
#include <string>

extern "C" JNIEXPORT jstring JNICALL
Java_com_example_myapplication_MainActivity_stringFromJNI(
        JNIEnv* env,
        jobject /* this */) {
    
    
    std::string hello = "Hello from C++";
    return env->NewStringUTF(hello.c_str());
}

混淆前
在这里插入图片描述

混淆后

 cppFlags '-mllvm -fla', '-mllvm -sub' ,'-mllvm -bcf'  ,'-mllvm -sobf'

指令替换
虚假控制流
控制流平坦化
字符串混淆

在这里插入图片描述
完美增加逆向难度。

参考

mingw编译

编译好的资源下载

点这

猜你喜欢

转载自blog.csdn.net/u012787710/article/details/129685834