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. 科大星云诗社动态20220113
  2. mlflow_在生产中设置MLflow
  3. [Leedcode][JAVA][第46题][全排列][回溯算法]
  4. 领域应用 | 完备的娱乐行业知识图谱库如何建成?爱奇艺知识图谱落地实践
  5. 弹幕解析播放器json客户端解析后台管理源码
  6. Python实例讲解 -- tkinter canvas (设置背景图片及文字)
  7. Java实战-山寨QQ
  8. clienttop,clientleft,scrolltop,scrollleft,offsettop,offsetleft全解析
  9. Redis BigKey
  10. 保研之路——北航网安学院直硕夏令营
  11. matlab中怎么看电压和电流值,matlab计算电压有效值
  12. 《看清你的思维图谱》读书笔记
  13. FIDO android客户端认证
  14. 这是一篇转载:HOG特征(这是我看到过的讲的最适合我的博客)
  15. 中缀转后缀并分别计算
  16. 最简单的dubbo教程-快速入门《一》
  17. JavaScript 数组塌陷
  18. Android大型实战:《亲信,优雅的从入门到进阶》-刘桂林-专题视频课程
  19. Application Cache is a Douchebag
  20. XTAL OSC的经验小结

热门文章

  1. linux系统的手机刷机包,自己动手制作个性化Linux操作系统手机刷机包
  2. 有没有办法找回testflight之前测试的软件_手机照片不小心误删了,如何才能恢复找回呢?...
  3. MongoDB-安装与设置
  4. 第2章 交换机基础配置
  5. Matlab+Ncorr
  6. htmltd文本自动换行,完美解决table中td里面的内容自动换行
  7. 【报错解决-Golang】go mod 安装第三方包提示:module declares its path as: ××× but was required as: ×××
  8. Python爬取网易云音乐辑的图片、专辑名和专辑出版时间
  9. 3DMAX游戏角色耳朵建模教程
  10. Python学习,我带着练习题来了,50道基础入门练习题(附答案)