Skip to content

hpp0hpp/deobfuscate_br

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OLLVM 反混淆工具

项目简介

这是一个用于反混淆 OLLVM(Obfuscator-LLVM)混淆的 ARM64 二进制文件的工具集。OLLVM 是一种代码混淆工具,会将直接分支指令(如 bbl)转换为间接分支指令(如 brblr),增加逆向分析的难度。

本工具通过符号执行分析,识别并修复这些混淆的分支指令,生成补丁信息,然后在 IDA Pro 中应用这些补丁。

文件说明

1. angr_branch_analyzer.py(原 1.py

主要功能: 使用 angr 进行符号执行分析,识别并修复混淆的分支指令

核心功能:

  • 函数范围识别:通过函数序言和尾声模式识别函数边界
  • 基本块分析:遍历函数中的所有基本块
  • 分支指令分析:识别 brblr 等间接分支指令
  • 符号执行:使用 angr 求解分支目标地址
  • 复杂分支处理:处理包含 csel 等条件选择指令的复杂分支
  • 补丁生成:生成补丁信息 JSON 文件

使用方法:

# 修改 so_path 为目标 .so 文件路径
so_path = r'D:\desktop\保活\1215\2.so'

# 调用 process_func 处理指定地址的函数
process_func(0x14F394)

2. ida_patch_applier.py(原 2.py

主要功能: IDA Pro 脚本,读取补丁信息并应用到 IDA 数据库

核心功能:

  • 函数范围清理:删除并重新定义函数范围
  • 补丁应用:读取 JSON 文件中的补丁信息
  • 符号解析:将符号名转换为地址
  • 字节补丁:在 IDA 中直接修改二进制代码

使用方法:

  1. 在 IDA Pro 中打开目标二进制文件
  2. 在 IDA Python 控制台中运行此脚本
  3. 确保 patch_info.json 文件路径正确

3. register_dependency_analyzer.py(原 3.py

主要功能: 使用 PyVEX IR 分析寄存器依赖关系

核心功能:

  • IR 分析:将机器码转换为 PyVEX IR
  • 依赖追踪:反向追踪影响目标寄存器的所有指令
  • 地址映射:将 IR 语句映射回原始指令地址

使用场景:

  • 分析分支指令的目标寄存器依赖
  • 识别影响分支决策的所有指令

4. utils.py(原 4.py

主要功能: 工具函数集合

提供的函数:

  • disasm(): 反汇编指定地址的指令
  • chunks_to_bytes(): 将字节块列表合并为字节序列
  • bytes_to_chunks(): 将字节序列分割为4字节块
  • move_none_to_end(): 将列表中的 None 元素移动到末尾

工作流程

  1. 分析阶段angr_branch_analyzer.py

    • 加载二进制文件到 angr
    • 识别函数范围
    • 遍历所有基本块
    • 使用符号执行分析分支指令
    • 生成补丁信息 JSON 文件
  2. 应用阶段ida_patch_applier.py

    • 在 IDA Pro 中打开目标二进制
    • 读取补丁信息 JSON 文件
    • 应用补丁到 IDA 数据库

依赖库

  • angr: 二进制分析框架
  • capstone: 反汇编引擎
  • keystone: 汇编引擎
  • pyvex: IR 转换库
  • archinfo: 架构信息库
  • claripy: 符号求解器
  • idaapi, idc, idautils, ida_funcs: IDA Pro Python API

注意事项

  1. 确保所有依赖库已正确安装
  2. angr_branch_analyzer.py 中的文件路径需要根据实际情况修改
  3. ida_patch_applier.py 中的 JSON 文件路径需要正确设置
  4. 符号执行可能较慢,对于大型函数需要耐心等待
  5. 某些复杂的分支可能无法完全修复,需要手动处理

示例

# 分析函数
process_func(0x14F394)

# 输出补丁信息
# patch_info [{"addr": 0x12345, "code": "abcd1234"}, ...]

许可证

本项目仅供学习和研究使用。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages