首页 > 其他分享 >安卓使用OLLVM混淆.so

安卓使用OLLVM混淆.so

时间:2024-04-02 17:34:13浏览次数:27  
标签:__ 混淆 安卓 控制流 基本块 so OLLVM mllvm 代码

编译OLLVM

git clone https://github.com/heroims/obfuscator.git -b llvm-9.0.1 --depth 1
cd obfuscator
cmake -S ./ -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build

编译好后从build/bin/目录把下面几个文件拷贝到/toolchains/llvm/prebuilt/linux-x86_64/bin/
clangclang++clang-9.0clang-format
把以下几个文件从build/include/拷贝到/sysroot/usr/include/
Stdarg.hStddef.h__stddef_max_align_t.hfloat.hstdbool.h

命令和编译选项简介

  • fla:控制流扁平化;该选项使用函数级别的混淆来隐藏程序的结构。这通过随机重命名函数、添加不必要的控制流和删除调用的函数来实现。
    这个模式主要是把一些if-else语句,嵌套成do-while语句,增加了反编译和分析代码的难度。

    -mllvm -fla:激活控制流扁平化

  • split:该选项使用控制流混淆来增加程序的复杂性。这通过将函数分成几个基本块、添加随机的跳转指令和在运行时随机重组这些基本块来实现。这使得代码的流程更难以跟踪,从而增加了破解和反编译的难度。

    -mllvm -split:激活基本块分割。在一起使用时改善展平。
    -mllvm -split_num=3:如果激活了传递,则在每个基本块上应用3次。默认值:1

  • sub:指令替换;该选项使用字符串混淆来隐藏代码中的常量字符串。这通过将字符串分成几个小块、将其存储在数组中并在运行时重新组合来实现。
    这个模式主要用功能上等效但更复杂的指令序列替换标准二元运算符(+ , – , & , | 和 ^),使得分析代码和查找敏感信息更加困难。

    -mllvm -sub:激活指令替换
    -mllvm -sub_loop=3:如果激活了传递,则在函数上应用3次。默认值:1

  • bcf:虚假控制流程;该选项使用基本块级别的混淆来隐藏代码的结构。这通过改变基本块之间的控制流、添加不必要的基本块和移除基本块之间的条件分支来实现。这个模式主要嵌套几层判断逻辑,一个简单的运算都会在外面包几层if-else,所以这个模式加上编译速度会慢很多因为要做几层假的逻辑包裹真正有用的代码。

    另外说一下这个模式编译的时候要浪费相当长时间包哪几层不是闹得!

    -mllvm -bcf:激活虚假控制流程
    -mllvm -bcf_loop=3:如果激活了传递,则在函数上应用3次。默认值:1
    -mllvm -bcf_prob=40:如果激活了传递,基本块将以40%的概率进行模糊处理。默认值:30

  • sobf:源代码混淆;该选项使用源代码混淆技术来隐藏代码的逻辑和结构。这通过使用类似加密的方式对代码进行变换,使其难以理解和分析。这可以通过运行时解密来执行,从而隐藏代码的真实功能。
    变量名混淆:将变量名更改为随机字符串,使其难以理解。
    控制流混淆:改变代码的控制流程,增加条件分支和跳转,使代码更难以分析。
    字符串加密:将字符串加密,以防止明文字符串在二进制文件中可见。
    函数名混淆:将函数名更改为随机名称,增加代码的复杂性。

    -mllvm -sobf:激活源代码混淆
    -mllvm -aesSeed=0xada46ab5da824b96a18409c49dc91dc3:用于为 AES 加密提供一个种子值,从而生成随机数以增加混淆的难度。这有助于保护软件免受逆向工程的攻击,因为它会使得分析混淆后的代码更加困难。

单个函数混淆:

__attribute((__annotate__("bcf")))
__attribute((__annotate__("fla")))
__attribute((__annotate__("sub")))
__attribute((__annotate__("split")))
__attribute((__annotate__("sobf")))

标签:__,混淆,安卓,控制流,基本块,so,OLLVM,mllvm,代码
From: https://www.cnblogs.com/flying_bat/p/18111123

相关文章

  • 转载:高质量网站,绿色纯净电脑、安卓软件下载网站推荐!
    源自虫部落这个网站没什么广告,还是蛮简洁好看的,主要以分享绿色软件为主。手机软件居多,其次是电脑软件,还有一些免费实用的网站推荐什么的。网站地址:https://fffxx.com鸭先知:https://www.yxzhi.com/专注于互联网软件、技术等优质资源分享果核剥壳:https://www.ghxi.com/绿色软......
  • 报错org.activiti.engine.ActivitiIllegalArgumentException: resource 'bpmn/file.bp
    一、代码段及报错位置1.代码段2.报错文件位置  二、报错原因:org.activiti.engine.ActivitiIllegalArgumentException:resource'bpmn/file.bpmn'notfound  三、解决方法:将resources-->bpmn-->file.bpmn复制粘贴到target-->classess-->bpmn下:......
  • 高通平台查看soc信息
    1|lahaina:/sys/devices/soc0#lsaccessory_chiphw_platformmachinenum_clusterspmic_die_revisionraw_idsoc_idchip_familyimage_crm_versionncluster_array_offsetnum_defective_partspmic_mo......
  • 使用Apache POI和Jsoup将Word文档转换为HTML
    简介在现代办公环境中,Word文档和HTML页面都是常见的信息表达方式。有时,我们需要将Word文档转换为HTML格式,以便在网页上展示或进行进一步的处理。本文将介绍如何使用ApachePOI库和Jsoup库来实现Word文档到HTML的转换,并处理文档中的图片资源。环境准备Java开发环境Apac......
  • SeaTunnel DB2 Source Connector 使用文档(含详细操作步骤)
    DB2是IBM的一款关系型数据库管理系统,JDBCDB2SourceConnector是一个用于通过JDBC读取外部数据源数据的连接器。ApacheSeaTunnel如何支持JDBCDB2SourceConnector?请参考本文档。支持引擎SparkFlinkSeaTunnelZeta引擎主要特性批处理(batch)精确一次(exactly-once)列投......
  • 磐启微PAN1020低功耗SOC芯片
    PAN1020低功耗蓝牙芯片典型应用⚫电视和机顶盒遥控器⚫无线游戏手柄⚫无线鼠键⚫智能家居需要此物料,可联系周小姐主要特性⚫RF-2.4GHz射频收发机(兼容BLE4.2)-接收灵敏度:-90dBm@1Mbps-接收信号:0dBm-可编程发射输出功率:max为13dBm,一般为8dBm-单......
  • 展锐平台sensorhub架构(SC9863A)
    安卓架构图: Sensorhub架构 SensorHub 是Sensor 软件运行环境,分为Sensor manager:管理sensordriver 采样和上报数据给AP, 接收AP 下发的命令;AP: 应用程序执行环境,HAL:sensorhal 层接口实现,SensorHubDriver: 接收HAL 层的命令并发给sensorhub,反馈sensorhub ......
  • 高亮数显驱动芯片/点阵LED驱动IC-VK16K33B/BA SOP24/SSOP24,适用于电饭煲,温控仪,数字电
    产品品牌:永嘉微电/VINKA产品型号:VK16K33B/BA封装形式:SOP24/SSOP24概述VK16K33B/BA是一种带按键扫描接口的数码管或点阵LED驱动控制专用芯片,内部集成有数据锁存器、键盘扫描、LED驱动模块等电路。数据通过I2C通讯接口与MCU通信。SEG脚接LED阳极,GRID脚接LED阴极,可支持12SEGx8......
  • P2143 [JSOI2010] 巨额奖金 题解
    P2143[JSOI2010]巨额奖金题解矩阵树定理+Kruskal最小生成树计数。思路MST都是喵喵题。引理1:所有合法的权值相同边的连边方案,得到的连通块情况是相同的。感性理解:如果不相同意味着至少有一条边可以连通一对连通块。所以我们可以这么做:先跑Kruskal标记树边,然后枚举......
  • 女朋友不想开Processon会员,我魔改了一个无限制的在线绘图软件
    前言对于复杂的逻辑或者流程来说,画一画流程图可以帮助我们更好的捋清楚逻辑。平时我女朋友也偶尔会用processon来画一下流程图,processon确实是一个很好的软件。但是免费版只能创建9个文件,所以她平时在用的时候只能删了画、画了删,用起来不是那么方便,但是又不想为了这......