Windows环境下编译与集成ollvm-tti到ndk-r17b

需积分: 50 11 下载量 100 浏览量 更新于2024-09-07 2 收藏 1KB TXT 举报
"该资源提供了关于如何在Windows环境下编译和使用OLLVM(Obfuscated LLVM)的详细步骤,特别是针对NDK-r17b版本。OLLVM是一个LLVM的分支,专注于代码混淆技术,包括字符串混淆等。" 本文档主要介绍了OLLVM(Obfuscated LLVM)的编译和在Android NDK环境中的集成使用方法,特别适用于NDK-r17b版本。OLLVM是LLVM项目的一个扩展,旨在提供代码混淆功能,以增强程序的反逆向工程能力。其中,字符串混淆是一种常见的混淆技术,可以使得程序中的字符串难以被直接识别。 一、编译OLLVM-TTI 1. 首先,通过`git clone`命令从指定的GitHub仓库克隆OLLVM-TTI的源代码。 2. 创建一个名为`build`的目录,并进入该目录。 3. 在`CMakeLists.txt`文件中,为了使OLLVM-TTI支持Windows系统,需要添加`add_definitions(-D_WINDOWS)`这一行,以解决"Cannot open /dev/random"的问题。 4. 使用`cmake`命令配置构建环境,这里指定了生成Release版本,设置LLVM库路径后缀为64,并禁用了测试套件。 5. 使用`make -j3`命令进行编译, `-j3`表示使用3个线程加速编译过程。 二、链接NDK 1. 对NDK的`toolchains/llvm`目录进行备份,以防万一需要恢复原状。 2. 删除`NDK_PATH/toolchains/llvm/prebuilt/windows-x86_64/`目录下的所有文件。 3. 将编译好的`build`目录中的`bin`、`lib`以及`lib64`文件夹复制到上述路径,完成OLLVM的集成。 三、使用混淆功能 在Android项目的`Android.mk`文件中,需要添加以下编译选项来启用OLLVM的混淆功能: ```makefile LOCAL_CFLAGS := -mllvm -sub -mllvm -bcf -mllvm -fla -mllvm -sobf ``` 这些标志分别代表不同的混淆技术,如substring substitution(-sub)、bitcode flow(-bcf)、function-level abstraction(-fla)和structured object byte flow(-sobf)。 四、获取编译后的文件 如果不想自行编译,可以从提供的网盘链接下载编译好的文件,同样需要按照上述步骤替换NDK中的相应文件。 请注意,由于原始内容中提到了百度网盘的链接,但实际操作时,用户需自行访问并下载相关文件。在使用这些编译后的文件时,确保它们与你的NDK版本兼容,并且遵循任何相关的开源许可协议。 总结,这篇文章为开发者提供了在Windows环境下编译OLLVM并将其与NDK-r17b集成的详细步骤,以实现对Android原生代码的混淆保护。通过编译和配置,开发者可以在自己的项目中利用这些混淆技术,提高代码的安全性。