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

1
2
3
4
5
6
7
-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 @   别人眼中的过客  阅读(1623)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示