本期课程以 Angr 符号执行技术为核心,对多种常见二进制混淆技术建模分析,包括间接跳转混淆、字符串混淆、虚假控制流混淆、控制流平坦化混淆以及过程间混淆等实际生产环境中常见的二进制混淆技术。课程从混淆器设计层面,分析了多种优秀的开源混淆器的实现,例如 Goron、Hikari 以及 OLLVM 等。除此之外,课程还讨论了多种先进的二进制程序分析框架,例如 angr、 capstone 、keystone、unicorn 、微码以及修补框架 lief。
课程目录
(已完结)
-
1-混淆与反混淆基础概念
-
2-约束求解与 angr 符号执行
-
3-污点分析框架构建与实战
-
4-模拟执行 unicorn 与 angr
-
5-反汇编框架 capstone
-
6-汇编框架 keystone
-
7-IDAPython 编程与基本块分析
-
8-实战静态分析反混淆
-
9-IDA 微码基本块优化器
-
10-llvm 核心概念与混淆开发
-
11-Goron 间接跳转混淆原理分析
-
12-符号执行分析间接跳转混淆
-
13-符号执行分析IPO过程间混淆
-
14-控制流平坦化建模
-
15-符号执行分析控制流平坦化
-
16-控制流平坦化修补
课程目标
学习高级程序自动化分析方法,自动化去除变种间接跳转(例如多个出口的 BR 跳转)混淆、变种控制流平坦化混淆(例如多个主分发器)。
反混淆三部曲:自动分析 -> 自动修补 -> 验证
-
分析:实现自动化混淆分析脚本; -
修补:实现自动化混淆修补脚本; -
验证:验证反混淆修补后的程序能够正常运行且无混淆特征。
控制流平坦化混淆后的 tinfl_decompress
函数,伪代码有 6k 行,逆向分析困难,通过课程教授的方法和脚本,能够还原为清晰结构,与无混淆代码接近一致的伪代码。
在 aarch 64 指令集中,ollvm 的主分发器可能出现大量嵌套、平行的结构,传统模拟执行方案很难覆盖所有情况,课程采用符号执行对分析混淆函数,利用符号执行对反混淆问题进行抽象处理,极大增反混淆方法的加适用性。
经过脚本反混淆后,目标函数结构清晰,与无混淆情况下反编译效果一致。
将反混淆后的样本与无混淆的样本反编译效果对比,如下图
双出口的 BR 跳转
修补后能够完整反编译代码
清晰、统一的控制流建模架构
间接跳转多出口路径探索
br_state_1 = run_until_br(proj, init_state, csel_selector=1) br_state_2 = run_until_br(proj, init_state, csel_selector=2)
控制流平坦化多出口路径探索
succ_state1 = run_until_lists(proj, init_state, csel_selector=1)succ_state2 = run_until_lists(proj, init_state, csel_selector=2)
课程收获
技术与能力收获
-
系统掌握 Angr 符号执行框架 -
系统掌握 keystone 、capstone、unicorn 框架基础方法 -
掌握常见混淆自动化分析方法 -
掌握编译原理中用于二进制自动逆向工程的方法 -
掌握 llvm 混淆开发、定制以及移植方法 -
掌握 IDAPython 进阶编程技术 -
掌握 IDA 微码(Microcode) 基础知识
代码与工具收获
-
支持多分发器的控制流平坦化通用反混淆脚本 (aarch64) -
支持多出口的间接跳转混淆通用反混淆脚本(aarch64) -
混淆与反混淆实验环境
实验使用的框架:llvm + angr + unicorn + keystone + capstone + lief + pwntools
报名
课程价格:999
报名咨询:后台回复 “课程”
原文始发于微信公众号(二进制磨剑):【硬核来袭!】程序分析与反混淆【已完结】
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论