win10 OLLVM编译环境搭建 并且实现Android jni 字符串加密

win10  OLLVM编译环境搭建  并且实现Android jni 字符串加密(以下操作限于win10并且存在Android的开发环境)

so库加密前和加密后对比

字符串加密前:

字符串加密后:

 准备工作

1.找到Android SDK目录配置好cmake环境变量 E:\AndroidSDK\cmake\3.18.1(E:\AndroidSDK为 Android SDK目录地址)。

2. 下载llvm-mingw编译环境(gcc编译器的windows版本,即可以在windows平台上使用gcc编译器),下载地址:https://github.com/mstorsjo/llvm-mingw/releases  选择最新版本,根据系统环境不一样选择自己需要的版本,我电脑是win10下载的是llvm-mingw-20230130-msvcrt-x86_64.zip,下载完后进入bin目录配置好环境变量。

环境变量配置如图:

3.编译代码下载,下载地址:https://github.com/heroims/obfuscator/tree/llvm-9.0.1 下载llvm编译的代码(分支9.0.1 这个是编译成功的版本,其它还没有测试)。

 

 1 在obfuscator-llvm-9.0.1同级目录打开win10的cmd指令创建一个build目录(obfuscator-llvm-9.0.1和build在同一级目录) 
 3 mkdir build (也可以手动创建目录)
 5 cd build (打开创建的目录)
 7 接下来开始编译代码比较耗时需要耐心等待下。
 8 cmake -G “MinGW Makefiles” -DCMAKE_BUILD_TYPE=Release -DLLVM_INCLUDE_TESTS=OFF ../obfuscator-llvm-9.0.1/ 
10 mingw32-make.exe -j12

 

 

 

将编译成功后的ollvm集成到android studio的ndk中

  • 以ndk 21.1.6352462版本举例,首先备份一下以防万一出错好还原,以下步骤复制到21.1.6352462的目录
  • 将编译后的build\bin文件夹中的clang.exe clang++.exe clang-format.exe 复制到ndk的21.1.6352462\toolchains\llvm\prebuilt\windows-x86_64\bin文件夹下,覆盖目标文件
  • 将编译后的build\lib\clang\9.0.1\include文件夹中的__stddef_max_align_t.h stddef.h stdarg.h float.h 复制到ndk的21.1.6352462\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\include文件夹下

使用ollvm对程序代码进行混淆

在android studio的local.properties文件中设置ndk 的路径

然后再CMakeLists.txt中添加:set(CMAKE_CXX_FLAGS "-mllvm -fla -mllvm -sub -mllvm -bcf -mllvm -sobf")

-mllvm -fla:fla混淆
-mllvm -sub: 启用instructions substitution
-mllvm -sub_loop=3: 对每个函数混淆3次,默认1次
-mllvm -bcf: 启用 bogus control flow
-mllvm -bcf_loop=3: 对一个函数混淆3次,默认1次
-mllvm -bcf_prob=40: 代码块被混淆的概率是40%,默认30%
-mllvm -sobf:加密字符

到此Android Studio的编译环境就配置完成,之后的so文件字符串就能加密了。

 

posted @ 2023-03-15 15:54  别人眼中的过客  阅读(1473)  评论(0编辑  收藏  举报