android 使用ollvm混淆so
使用到的工具
- ndk 21.1.6352462(android studio上下载的)
- cmake 3.10.2.4988404(android studio上下载的)
- llvm-9.0.1
- llvm-mingw-20230130-msvcrt-x86_64.zip
- Python 3.11.5
环境配置
添加cmake mingw环境变量如下图:

编译
- 下载好[llvm-9.0.1源码后解压到文件夹新建一个build文件夹

- 在新建的build文件夹下面新建一个空的文本文件并重命名为CMakeLists.txt

- 使用cmd cd到这个build文件夹并执行预编译指令
cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release ../
- 执行编译命令
mingw32-make.exe -j8
j8:代表开启 8个线程去编译 如果电脑性能好的话可以自行添加如就j16 j32等
- 编译完成如下图

移植到ndk
!!!必须使用自己电脑编译后生成的文件替换
- 复制头文件
将编译出的\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.1.6352462\sysroot\usr\include目录下 - 将编译出的\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: 字符串加密
过程中遇到的坑
- 一直完后编译项目报错:

解决方法:再sdk里面的cmake文件夹中的android.toolchain.cmake文件中添加如下代码后重启AndroidStudio
SET (CMAKE_C_COMPILER_WORKS 1)
SET (CMAKE_CXX_COMPILER_WORKS 1)


- 实测必须使用在本机上编译生成的exe文件替换ndk下面的文件才会生效
相关文章:
android 使用ollvm混淆so
使用到的工具 ndk 21.1.6352462(android studio上下载的)cmake 3.10.2.4988404(android studio上下载的)llvm-9.0.1llvm-mingw-20230130-msvcrt-x86_64.zipPython 3.11.5 环境配置 添加cmake mingw环境变量如下图: 编译 下载…...
Swift:在 Win10 上编程入门
访问 https://swift.org/download/ 找到 Windows 10:x86_64 下载 swift-5.10-RELEASE-windows10.exe 大约490MB 建议安装在 D:\Swift\ ,安装后大约占2.56GB 官网文档:https://www.swift.org/documentation/ 中文教程:The swift…...
Linux多进程通信(4)——消息队列从入门到实战!
Linux多进程通信总结——进程间通信看这一篇足够啦! 1.基本介绍 1)消息队列的本质其实是一个内核提供的链表,内核基于这个链表,实现了一个数据结构,向消息队列中写数据,实际上是向这个数据结构中插入一个…...
[Flutter]导入singular_flutter_sdk后运行到Android报错
问题: 接入归因之前,flutter项目一起正常。接入归因之后,iOS正常Android有问题。 dependencies: # Singular归因singular_flutter_sdk: ^1.3.3 针对 Flutter 的 Singular SDK 集成指南 https://support.singular.net/hc/zh-cn/articles/…...
ChatGPT新手指南:如何用AI写出专业学术论文
ChatGPT无限次数:点击直达 ChatGPT新手指南:如何用AI写出专业学术论文 在当今信息爆炸的时代,人工智能技术的快速发展为我们提供了许多新的可能性。ChatGPT作为一种先进的自然语言处理技术,不仅能够进行对话和文本生成,还可以辅助…...
【ZZULIOJ】1047: 对数表(Java)
目录 题目描述 输入 输出 样例输入 Copy 样例输出 Copy code 题目描述 输入两个正整数m和n,输出m到n之间每个整数的自然对数。 输入 输入包括两个整数m和n(m<n),之间用一个空格隔开。 输出 每行输出一个整数及其对数,整数占4…...
thinkphp6使用阿里云SDK发送短信
使用composer安装sdk "alibabacloud/dysmsapi-20170525": "2.0.24"封装发送短信类 发送到的短信参数写在env文件里面的 #发送短信配置 [AliyunSms] AccessKeyId "" AccessKeySecret "" signName"" templateCode"&…...
file_get_contents(‘php://input‘); 这个postman要如何传参
在 Postman 中传递参数给 file_get_contents(php://input); 是通过请求的 Body 部分来实现的。使用 Postman 进行 API 接口测试时,可以按照以下步骤来传递参数: 打开 Postman 并创建一个新的请求。在请求的 URL 地址栏输入你的 API 地址。选择请求方法为…...
HDFS [MSST‘10] 论文阅读笔记
原论文:The Hadoop Distributed File System (MSST’10) HDFS关键技术要点概览 设计目标:HDFS旨在可靠地存储大型数据集,并以高带宽流式传输这些数据集到用户应用程序。它通过在大量服务器上分布存储和计算资源,使得资源可以随着需求的增长而扩展,同时保持经济高效。架构组…...
Feature Pyramid Networks for object detection
FPN 总述1.引言2.相关工作3. Feature Pyramid NetworksBottom-up pathwayTop-down pathway and lateral connections 4. 应用用于 RPN用于 Fast R-CNN 核心代码复现FPN网络结构ResNet Bottleneck完整代码 总述 下图中,蓝色边框表示的是特征图,边框越粗表…...
Linux下docker运行python
前言 本机开发环境众多,python版本都好多个,虽然可以通过conda管理多个虚拟环境,但还是不能像容器那样进行进程间的隔离。于是打算试下docker下运行python,而且生产环境很多时候也是用容器来跑应用,环境统一、方便扩容…...
MacOS下载和安装HomeBrew的详细教程
在MacOS上安装Homebrew的详细教程如下:(参考官网:macOS(或 Linux)缺失的软件包的管理器 — Homebrew) 步骤1:检查系统要求 确保你的MacOS版本至少为macOS Monterey (12) (or higher) 或更高版本…...
AI技术在金融领域/银行业的应用和风险
前言 随着科技的不断发展,人工智能(AI)技术已经在各行各业得到了广泛的应用,其中包括银行业。银行业作为经济的重要组成部分,一直在不断地探索和应用新技术,以提升服务效率、风险管理和客户体验。然而&…...
每日OJ题_两个数组dp⑤_力扣10. 正则表达式匹配
目录 力扣10. 正则表达式匹配 解析代码 力扣10. 正则表达式匹配 10. 正则表达式匹配 难度 困难 给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 . 和 * 的正则表达式匹配。 . 匹配任意单个字符* 匹配零个或多个前面的那一个元素 所谓匹配,…...
开源区块链系统/技术 总结(欢迎补充,最新)
一、联盟链 1. FISCO BCOS FISCO BCOS 2.0 技术文档 — FISCO BCOS 2.0 v2.9.0 文档https://fisco-bcos-documentation.readthedocs.io/ 2. ChainMaker(长安链) 文档导航 — chainmaker-docs v2.3.2 documentationhttps://docs.chainmaker.org.cn/v2…...
LeetCode 994—— 腐烂的橘子
阅读目录 1. 题目2. 解题思路3. 代码实现 1. 题目 2. 解题思路 1.记录下初始新鲜橘子的位置到 notRotting,我们按照行把二维数组拉成一维,所以,一个vector 就可以实现了;2.如果没有新鲜橘子,那么第 0 分钟所有橘子已经…...
向上向下采样
在数字图像处理中,向上采样(upsampling)和向下采样(downsampling)是两种常见的操作,用于改变图像的分辨率。 向上采样(Upsampling): 向上采样是指增加图像的分辨率&…...
Leetcode面试经典150_Q169多数元素
题目: 给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊n/2⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 解题思路: 1. 注意“大于 ⌊n/2⌋”,…...
Spring Cloud微服务入门(五)
Sentinel的安装与使用 安装部署Sentinel 下载Sentinel: https://github.com/alibaba/Sentinel/releases Sentinel控制台 https://localhost:8080 用户和密码为sentinel 使用Sentinel 加依赖: 写配置: 输入: java -Dserver.po…...
负荷预测 | Matlab基于TCN-GRU-Attention单输入单输出时间序列多步预测
目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab基于TCN-GRU-Attention单输入单输出时间序列多步预测; 2.单变量时间序列数据集,采用前12个时刻预测未来96个时刻的数据; 3.excel数据方便替换,运行环境matlab20…...
cool-admin(midway版)前端错误处理:全局错误边界与日志上报
cool-admin(midway版)前端错误处理:全局错误边界与日志上报 【免费下载链接】cool-admin-midway 🔥 cool-admin(midway版)一个很酷的后台权限管理框架,模块化、插件化、CRUD极速开发,永久开源免费,基于midway.js 3.x、…...
别再纠结了!PLC、运动控制卡、运动控制器,5分钟帮你理清选型思路
PLC、运动控制卡与运动控制器:工程师的高效选型实战指南 当项目启动会议的倒计时开始,面对PLC、运动控制卡和运动控制器这三种技术路线,许多工程师都会陷入选择困难。这不是简单的技术对比题,而是关乎项目成败的战略决策。本文将带…...
手把手教你用Scanpy搞定空间转录组分析:从Visium数据到FISH可视化(附避坑指南)
空间转录组分析实战:从Visium到MERFISH的Scanpy全流程解析 空间转录组技术正在彻底改变我们对组织微环境的理解。想象一下,你不仅能知道细胞表达哪些基因,还能精确看到这些基因在组织中的空间分布——这正是Visium和MERFISH等技术带来的革命。…...
告别996!我用Qoder AI编程平台,一天搞定全栈电商项目(附保姆级实战流程)
从零到上线:Qoder AI全栈电商项目实战手记 凌晨三点的显示器蓝光里,我第17次调试购物车接口时,咖啡杯底黏着的便签写着"再熬三天就能交付"。这个典型的程序员996场景,在上个月使用Qoder开发新电商平台时被彻底颠覆——从…...
通义千问1.5-1.8B-Chat-GPTQ-Int4在MySQL数据库中的智能应用
通义千问1.5-1.8B-Chat-GPTQ-Int4在MySQL数据库中的智能应用 让数据库听懂人话,让查询像聊天一样简单 你有没有遇到过这样的情况:面对复杂的业务数据,明明知道想要什么结果,却不知道怎么写SQL语句?或者看着慢查询日志头…...
强化学习实战:用Python手把手实现值迭代与策略迭代算法(附完整代码)
强化学习实战:用Python手把手实现值迭代与策略迭代算法(附完整代码) 强化学习作为机器学习的重要分支,近年来在游戏AI、自动驾驶、机器人控制等领域展现出惊人潜力。对于初学者而言,理解算法原理固然重要,但…...
告别重复造轮子:用快马AI一键生成高安全性的标准化登录模块
告别重复造轮子:用快马AI一键生成高安全性的标准化登录模块 最近在开发一个需要用户系统的项目时,遇到了一个常见但耗时的问题:如何快速实现一个既安全又美观的登录模块。相信很多开发者都深有体会,每次新建项目都要从头开始写登…...
龙虾agent-browser获得chromium包问题
小龙虾非常火爆,在装agent-browser的时候,普通人往往被chromium的安装堵死了。网上的跨域安装方法一大堆,包括用镜像站点,国内所有的镜像站点都不行。但是真正能走通的,我到最后也没有试出来。最后只能自己想出一种手动…...
AFL++实战:从零开始用WSL搭建模糊测试环境(附libxml2案例)
AFL实战指南:WSL环境下的模糊测试从入门到精通 模糊测试(Fuzz Testing)作为软件安全测试的重要手段,近年来在漏洞挖掘领域展现出惊人的效果。对于Windows平台开发者而言,Windows Subsystem for Linux(WSL&…...
5步释放Win11潜能:用Win11Debloat让系统性能提升60%的实战指南
5步释放Win11潜能:用Win11Debloat让系统性能提升60%的实战指南 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutte…...
