android 使用ollvm混淆so

使用到的工具

  1. ndk 21.4.7075529(android studio上下载的)
  2. cmake 3.10.2.4988404(android studio上下载的)
  3. llvm-9.0.1
  4. llvm-mingw-20230130-msvcrt-x86_64.zip
  5. Python 3.11.5

环境配置

添加cmake mingw环境变量如下图:
在这里插入图片描述

编译

  1. 下载好[llvm-9.0.1源码后解压到文件夹新建一个build文件夹
    在这里插入图片描述
  2. 在新建的build文件夹下面新建一个空的文本文件并重命名为CMakeLists.txt
    在这里插入图片描述
  3. 使用cmd cd到这个build文件夹并执行预编译指令
cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release ../
  1. 执行编译命令
mingw32-make.exe -j8

j8:代表开启 8个线程去编译 如果电脑性能好的话可以自行添加如就j16 j32等

  1. 编译完成如下图
    在这里插入图片描述

移植到ndk

!!!必须使用自己电脑编译后生成的文件替换

  1. 复制头文件
    将编译出的\obfuscator-llvm-9.0.1\build\lib\clang\9.0.1\include目录下的头文件(__stddef_max_align_t.h、stddef.h、stdarg.h、float),复制
    \Android\Sdk\ndk\21.4.7075529\sysroot\usr\include目录下
  2. 将编译出的\obfuscator-llvm-9.0.1\build\bin目录下的clang.exe、clang++.exe、clang-format.exe文件替换到android_sdk\ndk\21.1.6352462\toolchains\llvm\prebuilt\windows-x86_64\bin目录下

混淆使用

在工程中的CMakeLists.txt添加这个配置

#设置llvm debug模式混淆编译
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -mllvm -sub -mllvm -sobf -mllvm -fla -mllvm -bcf" )
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -mllvm -sub -mllvm -sobf -mllvm -fla -mllvm -bcf" )#设置llvm release模式混淆编译
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -mllvm -sub -mllvm -sobf -mllvm -fla -mllvm -bcf ")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -mllvm -sub -mllvm -sobf -mllvm -fla -mllvm -bcf")

混淆说明

OLLVM 的使用Instructions Substitution (指令替换)-mllvm -sub: 启用instructions substitution-mllvm -sub_loop=3: 对每个函数混淆3次,默认1词Control Flow Flattening (控制流平坦化)-mllvm -fla: 启用control flow flattening-mllvm -split: 启用block切分,提升平展程度-mllvm -split_num=3: 对每个block混淆3次,默认1词Bogus Control Flow (虚假控制流)-mllvm -bcf: 启用 bogus control flow-mllvm -bcf_loop=3: 对一个函数混淆3次,默认1次-mllvm -bcf_prob=40: 代码块被混淆的概率是40%,默认30%-mllvm -sobf: 字符串加密

过程中遇到的坑

  1. 一直完后编译项目报错:
    1
    解决方法:再sdk里面的cmake文件夹中的android.toolchain.cmake文件中添加如下代码后重启AndroidStudio
SET (CMAKE_C_COMPILER_WORKS 1)
SET (CMAKE_CXX_COMPILER_WORKS 1)

在这里插入图片描述
在这里插入图片描述

  1. 实测必须使用在本机上编译生成的exe文件替换ndk下面的文件才会生效

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/587966.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

redis发布订阅模式

需要两个终端。 首先我们打开第一个终端,使用SUBSCRIBE命令来订阅一个频道。 打开另一个终端,发布信息使用PUBLISH,后面加上频道的名称和消息的内容 返回去看第一个终端 订阅频道的终端可以有多个。但是订阅频道有一些局限性,比如…

蓝队面经速查手册

文章目录 常见安全设备+安全产品溯源应急响应+入侵排查思路日志文件日志分析工具安全加固外围打点常用排查命令主机后门webshell的排查思路Webshell工具的流量特征服务器存在 webshell,如何处理?排查 shell 应该用什么命令来进行排…

ubuntu-server部署hive-part2-安装hadoop

参照 https://blog.csdn.net/qq_41946216/article/details/134345137 操作系统版本:ubuntu-server-22.04.3 虚拟机:virtualbox7.0 安装hadoop ​​​​​​下载上传 下载地址 https://archive.apache.org/dist/hadoop/common/hadoop-3.3.4/ 以root用…

nodeJs 实现视频的转换(超详细教程)

前段时间拿到一个视频是4k的,没法播放,于是通过 node.js 和 ffmpeg 实现了视频的转换。在win10 系统下实现。 所需工具 node 16.19 直接安装 ffmpeg-5.1.1-essentials_build 解压后重名 ffmpeg 放到C盘 然后配置下环境变量 Git-2.42.0.2-64-bit 直接…

list使用与模拟实现

目录 list使用 reverse sort unique splice list模拟实现 类与成员函数声明 节点类型的定义 非const迭代器的实现 list成员函数 构造函数 尾插 头插 头删 尾删 任意位置插入 任意位置删除 清空数据 析构函数 拷贝构造函数 赋值重载函数 const迭代器的设计 …

Canal1.1.5整Springboot在MQ模式和TCP模式监听mysql

canal本实验使用的是1.1.5,自行决定版本:[https://github.com/alibaba/canal/releases] canal 涉及的几个角色 canal-admin:canal 后台管理系统,管理 canal 服务canal-deployer:即canal-server(客户端&…

vue结合Elempent-Plus/UI穿梭框更改宽度以及悬浮文本显示

由于分辨率不同会导致文本内容显示不全,如下所示: 因此需要 1、悬浮到对应行上出现悬浮信息 实现代码如下所示: 这里只演示Vue3版本代码,Vue2版本不再演示 区别就在插槽使用上Vue3使用:#default“”;Vu…

计算机网络-HTTP相关知识-RSA和ECDHE及优化

HTTPS建立基本流程 客户端向服务器索要并验证服务器的公钥。通过密钥交换算法(如RSA或ECDHE)协商会话秘钥,这个过程被称为“握手”。双方采用会话秘钥进行加密通信。 RSA流程 RSA流程包括四次握手: 第一次握手:客户…

【论文阅读】DETR 论文逐段精读

【论文阅读】DETR 论文逐段精读 文章目录 【论文阅读】DETR 论文逐段精读📖DETR 论文精读【论文精读】🌐前言📋摘要📚引言🧬相关工作🔍方法💡目标函数📜模型结构⚙️代码 &#x1f4…

idea端口占用

报错:Verify the connector‘s configuration, identify and stop any process that‘s listening on port XXXX 翻译: 原因: 解决: 一、重启大法 二、手动关闭 启动spring项目是控制台报错,详细信息如下&#xff…

InterliJ IDEA基本设置

安装好idea后,将软件打开,可以进行基础设置 1.打开软件,先安装插件-汉化包(不推荐,最好使用英文版),本次我们使用汉化版本完成基本设置,后期希望大家适应英文版的开发环境。&#x…

BetterZip for Mac2024最新mac解压缩软件

作为一名软件专家,对于市面上各类软件都有较为深入的了解,下面介绍的是一款适用于Mac系统的解压缩软件——BetterZip,将从其功能特点、使用方法、用户体验及适用人群等方面进行详细介绍。 BetterZip5-安装包绿色版下载如下: htt…