一、环境搭建:

   系统:win10_X64

   ndk版本:ndk-r12b(ndk-r12b后续版本也适用)

   cmake-3.9.1-win64-x64.msi  用于针对不同编译器生成源代码构建文件,如使用VS则生成(.sln)等VS配置文件,如果使用gcc则生成(Makefile)

mingw-w64-install.exe  基于windows的GNU gcc编译器

python2.7  跑python脚本,不要使用3.0及以上版本

cmake,mingw,python下载地址(百度网盘):https://pan.baidu.com/s/1v49gBKzF-2VAqMywvtnlUw  密码:hd7z

添加环境变量:C:\Python27

           C:\Program Files (x86)\mingw-w64\i686-7.2.0-posix-dwarf-rt_v5-rev1\mingw32\bin

           C:\Program Files\CMake\bin

环境变量请根据软件具体安装路径配置

二、编译OLLVM

  1、搞清楚概念:LLVM 和 OLLVM

    LLVM是lowlevel virtual machine的简称,是一个编译器框架。苹果公司的Xcode 4.0之后用的都是LLVM编译器。
    LLVM 诞生于2003.10伊利诺伊大学香槟分校,创始人ChrisLattner,现任苹果公司『开发者工具』部门的主管。

Obfuscator-LLVM (OLLVM)是瑞士西北应用科技大学安全实验室针对LLVM编译组件开发的代码混淆工具,该工具完全开源,目的是为了增加逆向工程的难度,保证代码的安全性。  

    Obfuscator-LLVM (OLLVM)集成了编译器,并且兼容LLVM支持的所有语言(C,C++, Objective-C, Ada and Fortran)和平台(x86, x86-64, PowerPC, PowerPC-64,ARM, Thumb, SPARC, Alpha, CellSPU, MIPS, MSP430, SystemZ,and XCore)。

2、编译说明

      git clone -b llvm-4.0 https://github.com/obfuscator-llvm/obfuscator.gitmkdir buildcd buildcmake -G “MinGW Makefiles” -DCMAKE_BUILD_TYPE=Release ../obfuscator/    mingw32-make -j7       网上很多资料上使用make命令,而不是mingw32-make命令,在我所安装的mingw并没有提供make命令,前面说明了我是在win10 64系统上通过mingw-w64-install.exe安装的。可能是系统不一样的原因。

    cmake如果不指定参数的话,会默认去选择当前电脑里已有的编译器,如果安装了VS的话,会自动去查找VS编译器

    如果打算使用vs编译

    cmake -DCMAKE_BUILD_TYPE=Release ../obfuscator/

    会生成32位的依赖版本

    cmake -G “Visual Studio 15 2017 Win64” -DCMAKE_BUILD_TYPE=Release ../obfuscator/

    “Visual Studio 15 2017 Win64” 中的15和2017是指VS中平台工具集的编号与VS版本号的对应关系,14对应2015,12对应2013,如果要用VS编译,注意根据你所安装的VS版本进行配置。上面这种方法就会生成64位版本的编译环境,不过在测试编译时,32位正常编译通过,64位踩了很多坑,所以还是不建议使用VS编译。

    使用MinGw编译时,需要加上参数

    cmake -G “MinGW Makefiles” -DCMAKE_BUILD_TYPE=Release ../obfuscator/

  3、编译过程大约需要30分钟左右或者更长,编译完成后build文件夹下可看到bin  和 lib  两个文件夹,这是后续需要用到的。

三、在ndk中使用ollvm

1、android-ndk-r12b\toolchains路径下会有个  llvm  文件夹 ,复制 llvm  文件夹的一个副本到相同的路径(即android-ndk-r12b\toolchains路径下),然后重命名该文件夹为 ollvm-4.0

2、删掉android-ndk-r12b\toolchains\ollvm-4.0\prebuilt\windows-x86_64路径下的bin 和 lib64 文件夹,将上述build目录下的bin 和 lib 两个文件夹拷贝到路径android-ndk-r12b\toolchains\ollvm-4.0\prebuilt\windows-x86_64;

3、在 android-ndk-r12b\build\core\toolchains 路径下,新建目录 arm-linux-androideabi-clang-ollvm4.0,拷贝目录 arm-linux-androideabi-clang 下的文件 config.mk 与 setup.mk 到 arm-linux-androideabi-clang-ollvm4.0 中,修改setup.mk文件;

     ## Override the toolchain prefix############################# 原始配置 #############################LLVM_TOOLCHAIN_PREBUILT_ROOT := $(call get-toolchain-root,llvm)#LLVM_TOOLCHAIN_PREFIX := $(LLVM_TOOLCHAIN_PREBUILT_ROOT)/bin/############################################################################################# 修改后 #############################OLLVM_NAME := ollvm-4.0LLVM_TOOLCHAIN_PREBUILT_ROOT := $(call get-toolchain-root,$(OLLVM_NAME))LLVM_TOOLCHAIN_PREFIX := $(LLVM_TOOLCHAIN_PREBUILT_ROOT)/bin/#其他配置不做修改......

 config.mk 保存的是该编译链对应的 CPU 架构,所以上面修改完只能编译 armeabi 和 armeabi-v7a 架构的 so。如果需要编译其他架构需要做相应的修改。文件夹名也必须按照严格的格式,如 mips 的需要添加文件夹:mipsel-linux-android-clang-ollvm4.0,修改相应的 setup.mk 文件。


四、ollvm使用

  使用 ollvm 进行 ndk 的编译需要对 Application.mk 和 Android.mk 文件做相应的修改。

  Android.mk 中添加混淆编译参数:

    LOCAL_CFLAGS += -mllvm -sub -mllvm -bcf -mllvm -fla

  参数相关的文档可以看 github 上的wiki: https://github.com/obfuscator-llvm/obfuscator/wiki

  Application.mk 中配置 NDK_TOOLCHAIN_VERSION

    APP_ABI := x86 armeabi-v7a x86_64 arm64-v8a mips armeabi mips64NDK_TOOLCHAIN_VERSION := clang-ollvm4.0五、参考文献  https://www.anquanke.com/post/id/86384  http://blog.csdn.net/wangbaochu/article/details/45370543

转载于:https://www.cnblogs.com/shuqinjun/p/8595143.html

windows系统OLLVM + NDK 混淆编译环境搭建相关推荐

  1. android studio ndk HelloWorld 编译环境搭建

    android studio NDK helloworld 项目 第一步 android studio ndk 编译环境搭建 http://yunpan.cn/c3cCxxgwrqDaL 访问密码 6 ...

  2. Windows下魔兽世界服务器通用编译环境搭建教程

    必要的编译环境软件: 对应软件 你可以去官方下载或者在文章最后的链接处进行下载 boost_1_69_0-msvc-14.1-64 cmake-3.13.2-win64-x64 ACE-6.5.0 W ...

  3. windows php7 apache,windows系统下php7+apache2.4环境搭建

    一下载php7 到 http://windows.php.net/download/  下载php7,解压下载的文件,配置php扩展目录及php.ini配置项,打开extension_dir = &q ...

  4. Windows编译环境搭建(VS2010)

    引言:   本篇文章基于教程目的(由于windows和linux相关环境搭建篇幅过大,在博客中做这些讲解),主要描述Windows的发展历程和编译环境搭建(基于 Visual Studio 2010版 ...

  5. Android源码编译环境搭建教程 (一) - Ubuntu系统构建

    Android源码编译环境搭建教程 (一) - Ubuntu系统构建 本教程为感兴趣的同学提供Android源码编译的环境搭建,当然这里都是基于windows系统,mac系统也差不多,将相应的软件替换 ...

  6. fushia系统的编译环境搭建

    本文讲述在Linux环境下fushia系统的编译环境搭建(系统ubuntu 14.04): Fuchsia是Google主要为IoT(物联网).PC以及移动端开发的新一代只能操作系统.与之前的Andr ...

  7. WINDOWS系统Eclipse+NDK+Android + OpenCv

    WINDOWS系统Eclipse+NDK+Android + OpenCv 参考文档博客 1 NDK环境搭建 http://jingyan.baidu.com/article/5d6edee22d90 ...

  8. Windows系统使用minGW+msys 编译ffmpeg 0.5的全过程详述

    一.环境配置 1.下载并安装 MinGW-5.1.4.exe (http://jaist.dl.sourceforge.net/sourcef - -5.1.4.exe),安装时选中 g++, min ...

  9. Jetson Xavier NX学习笔记(三)系统烧录+开机教程+YOLOv7环境搭建+错误总结(详细版)

    Jetson Xavier NX 系统烧录+开机教程+YOLOv7环境搭建+错误总结(详细版) 文章目录 Jetson Xavier NX 系统烧录+开机教程+YOLOv7环境搭建+错误总结(详细版) ...

最新文章

  1. 同事埋了个坑:Insert into select语句把生产服务器炸了
  2. 3Blue1Brown:“线性代数的本质”完整笔记
  3. 卷积神经网络在自然语言处理的应用
  4. 全球及中国塑料包装行业发展方向与应用前景调研报告2022版
  5. 攻防世界-Misc-stegano(巨详细.零基础)
  6. 【简讯】ISO确定C++的升级
  7. 太吾绘卷第一世攻略_育劳 | 花菜小当家,巧克力蛋糕卷的出道秘籍
  8. 使用Python抓取网页信息
  9. CAD CAM CAE自学手册 ANSYS 15.0有限元分析自学手册_完整版PDF电子书下载
  10. 黑马程序员—银行调度系统
  11. 计算机阵列除法器原理,并行除法器 ,并行除法器结构原理是什么?
  12. 局域网打印机共享怎么设置_XP系统设置局域网共享打印机的操作步骤
  13. Confluence导出PDF文件乱码
  14. c# chart 各个属性_c# Chart设置样式
  15. 【数据分析 —— 认识数据】
  16. L1-054 福到了 (15 分)
  17. Five nines
  18. with open()as filename
  19. 解决hexo d命令报错 ERROR Deployer not found: git
  20. adb bugreport -- Failed to get bugreportz version

热门文章

  1. java并发 cpu高_java高并发核心要点|系列5|CPU内存伪共享
  2. 用java设计秒表_运用Java编写 秒表程序
  3. 继上一篇博客--javaweb通过接口来实现多个文件压缩和下载(包括单文件下载,多文件批量下载)
  4. gaf处理一维故障信号_【推荐文章】改进局部均值分解的齿轮箱复合故障特征提取...
  5. (kruskal算法复习+模板)Eddy's picture
  6. matlab weibpdf函数,matlab建模常用函数
  7. c语言 freopen txt_C语言文件操作函数freopen详细解析
  8. html+字体图标找不到字体,bootstrap中不显示字体图标问题怎么解决?
  9. MySQL修改、删除表的结构
  10. java循环的内部改变循环变量的值_java在for循环中怎样修改参数值?