ollvm 地址

GitHub - obfuscator-llvm/obfuscator

本文是针对win32环境搭建教程

一 。需要工具

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

2 cmake.msi  针对不同编译器生成源代码构建文件

3 ndk版本 android-ndk-r10e

所需工具参见文章最后百度网盘链接

二。开始编译

如果下载完毕,解压 你会得到一下目录

顺序执行一下命令

::编译
mkdir build
cd build
cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release ../
mingw32-make -j7

以下是编译截图

编译结束后 在build -》bin 目录下 会生成一下exe

 三。开始配置ndk

1 到ndk 目录 android-ndk-r10e\toolchains

2 新建 arm-linux-androideabi-clang-ollvm4.0 和 ollvm4.0目录

3 复制 ndk 原来 llvm-3.6 目录下的所有文件到  ollvm4.0

3.1 复制 上面编译好build-》bin 和lib 到 android-ndk-r10e\toolchains\ollvm4.0\prebuilt\windows-x86_64 目录

复制之前最好清空android-ndk-r10e\toolchains\ollvm4.0\prebuilt\windows-x86_64\目录下的bin和lib全部文件

3.2 复制 arm-linux-androideabi-clang3.6 目录下所有文件到  arm-linux-androideabi-clang-ollvm4.0

4 修改 arm-linux-androideabi-clang-ollvm4.0 -》setup.mk

参照修改配置

LLVM_NAME := ollvm-4.0
LLVM_TOOLCHAIN_ROOT := $(NDK_ROOT)/toolchains/$(LLVM_NAME)
LLVM_TOOLCHAIN_PREBUILT_ROOT := $(call host-prebuilt-tag,$(LLVM_TOOLCHAIN_ROOT))
LLVM_TOOLCHAIN_PREFIX := $(LLVM_TOOLCHAIN_PREBUILT_ROOT)/bin/TOOLCHAIN_VERSION := 4.8
TOOLCHAIN_NAME := arm-linux-androideabi-$(TOOLCHAIN_VERSION)
TOOLCHAIN_ROOT := $(NDK_ROOT)/toolchains/$(TOOLCHAIN_NAME)
TOOLCHAIN_PREBUILT_ROOT := $(call host-prebuilt-tag,$(TOOLCHAIN_ROOT))
TOOLCHAIN_PREFIX := $(TOOLCHAIN_PREBUILT_ROOT)/bin/arm-linux-androideabi-
LLVM_TOOLCHAIN_PATH := $(NDK_ROOT)/toolchains/ollvm4.0/prebuilt/windows-x86_64/bin/
TARGET_CC := $(LLVM_TOOLCHAIN_PATH)clang$(HOST_EXEEXT)
TARGET_CXX := $(LLVM_TOOLCHAIN_PATH)clang++$(HOST_EXEEXT)

通过以上操作 ollvm 环境就搭建好了 接下来就是 可以开始撸ollvm 了

四。开始使用

ollvm 混淆模式支持以下四模式

.-mllvm -fla:控制流扁平化

. -mllvm -sub:指令替换

. -mllvm -bcf:虚假控制流程

. -mllvm -sobf: 字符串加密

如果你在c++ 层 有aes xxrea 等加密 可以开启 -sobf

Android.mk 配置

LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_LDLIBS :=-llogLOCAL_MODULE := testLOCAL_SRC_FILES := Test.cppLOCAL_C_INCLUDES := $(LOCAL_PATH) #开启三种混淆方式  -mllvm -sobf 字符串模糊处理  -mllvm -sub指令替换     -mllvm -bcf  虚假控制  -mllvm -fla 平坦控制流
#APP_CPPFLAGS += -mllvm -fla -mllvm -sobf  -mllvm -sub  -mllvm -sobf
LOCAL_CFLAGS += -mllvm -sub -mllvm -bcf -mllvm -fla -mllvm -sobf
#APP_ABI := x86 armeabi-v7ainclude $(BUILD_SHARED_LIBRARY)#$(call import-module,mmp)

测试 cpp


// Created by Administrator on 2017/1/13.
//
#include "Test.h"
#include <string.h>
#include <stdio.h>#include <sys/ptrace.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <signal.h>
#include <sys/time.h>
#include <sys/inotify.h>
#include <unistd.h>
#include "Sgin.h"#include <android/log.h>
#define  LOG_TAG    "test"
#define  LOGD(...)  __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__)void enstr(char * Text)
{//printf("in enstr");char cryptograph[128]={'\0'};int count=strlen(Text);for(int i = 0; i < count; i++){cryptograph[i]=Text[i]+i+5;}printf("加密后:%s\n",cryptograph);
}void dnstr(char * Text)
{printf("in dnstr");char cryptograph[128]={'\0'};int count=strlen(Text);for(int i = 0; i < count; i++){cryptograph[i]=Text[i]-i-5;}printf("解密后:%s\n",cryptograph);
}jint JNI_OnLoad(JavaVM* vm, void* reserved){LOGD("in Jni_OnLoad ");//anit_debug2(); #反调试char Text[128]={'a','b','c','d'};enstr(Text);JNIEnv* env;if ( vm->GetEnv( reinterpret_cast<void**>(&env), JNI_VERSION_1_6 ) != JNI_OK ){return -1;}//sub_0329(env);return JNI_VERSION_1_6;
}

下面是开启ollvm 和 没有混淆代码对比

可以很明显的看到右边void enstr(char * Text) 函数多了很多分支

cfg对比 

链接:https://pan.baidu.com/s/1viG0rZNlLBRgnifKXdavrg 
提取码:oip3

参考   https://github.com/obfuscator-llvm/obfuscator

android ndk ollvm环境搭建相关推荐

  1. Android NDK 开发环境搭建(二)----来源http://www.cnblogs.com/zdz8207/archive/2012/11/27/android-ndk-install.htm

    随笔- 116  文章- 0  评论- 106  android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创) android 最新 N ...

  2. WIN10 x64搭建OLLVM4.0 android NDK 编译环境跨坑指南

    本文参考大量相关博客,甄选出有用的文章,帮助大家远离陷阱,节省时间. 目录 平台说明 环境准备 添加String混淆 集成到ndk编译工具链 模式介绍与使用方法 编译错误 Cannot open /d ...

  3. Android下NDK开发环境搭建

    Android下NDK开发环境搭建 1.     AndroidNDK安装与配置 1.1  NDK简介 Android NDK是一套允许开发人员使用本地代码(如C/C++)进行Android APP部 ...

  4. 安装目录opencv for android 教程(环境搭建篇)

    这几周朋友几篇文章介绍了改安装目录的文章. 关联文章的地址 最近android开发异常炽热,随着手机性能越来越高,图像处程序也越来越重要, 由于opencv for android 网上教程大多为英文 ...

  5. 基于Eclipse平台的Android OpenCV开发环境搭建

    基于Eclipse平台的Android OpenCV开发环境搭建 作者:雨水, 日期:2016-1-31,CSDN博客:http://blog.csdn.net/gobitan 摘要:本文主要记录了如 ...

  6. Android Studio开发环境搭建准备

    Android Studio 是一个Android开发环境,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的 Android 开发工具用于开发 ...

  7. Android源码环境搭建(aosp Ubuntu 16.04)

    Android源码环境搭建(aosp Ubuntu 16.04) FrameWork入门课视频链接:https://edu.csdn.net/course/detail/30298 FrameWork ...

  8. Unity打包基于Android的apk环境搭建总结

    Unity打包基于Android的apk环境搭建总结 资源准备 操作步骤 总结反馈 资源准备 配置Unity打包Android需要3大部分资源准备: 1.Unity准备 打开Unity,点击左上角Fi ...

  9. android studio开发环境搭建,国内服务器代理下载android sdk

    android studio开发环境搭建 1,百度android studio,下载安装: 2,启动Fetching Android SDK component information http:// ...

最新文章

  1. js 根据公历日期 算出农历_一招教会你公历换算成农历,要不要试试看
  2. 21个深度学习调参的实用技巧
  3. linux qt创建静态库,QT创建与QT无关的纯C++程序和动态/静态库
  4. php集中管理,PHPWind 7.5 SP2 公布 三大改良增强营运基本功能
  5. ubuntu16.04装机7: 挂载机械硬盘
  6. Kotlin中变量不同于Java: var 对val(KAD 02)
  7. Scala学习——隐式转换
  8. 用U3D寻找看电视的感觉!!
  9. 华为光猫上线流程、注册失败、常见语音故障处理
  10. android sony 镜像,解释如何使用Sony TV DLNA屏幕镜像功能
  11. 中国oracle ace名单
  12. ansible:jinja2对特殊符号的处理
  13. 性能测试从入门到高级进阶之路(二):小白教程influxdb+grafana+jmeter性能监控平台
  14. python str转list
  15. wpf研究之道-grid控件
  16. 扬州大学计算机软件工程博士,0836 软件工程博士点
  17. 可动态显示圆形图像或圆形文字的AvatarImageView
  18. cloc JAVA文件_Cloc简介
  19. Oracle Audit Vault部署
  20. 查看安装的kafka的版本的方法

热门文章

  1. 酷派8720手机常见问题
  2. oppo 手机Android版本能更新吗,OPPO终于想通了,终于可以升级Color OS系统!
  3. 【生活】宽心谣(赵朴初
  4. 三、1【Verilog HDL】基础语法快速入门(FPGA开发)
  5. 剪贴板增强工具(Ditto)
  6. Latex的中文输入问题
  7. nodejs基础 ps模块常用API用法
  8. 微软Office2007专业增强版 集成最新SP3
  9. 计算机统考用快捷键扣分吗,必考语文|试卷别在这里又扣分,这道题能快速和同学拉开差距...
  10. 如何用 BandiFix 修改损坏的AVI文件视频