面向安全分析、逆向工程、游戏外挂取证的 Android 沙箱框架。支持 APK 静态/动态分析、ARM64 ELF 二进制反混淆、压缩壳解压、内核驱动通信还原。
┌─────────────────────────────────────────┐
│ 分析工具层 (tools/) │
│ ├── APK 静态分析 (AXML/DEX/证书) │
│ ├── 动态监控 (网络/文件/进程/Logcat) │
│ ├── ELF 反混淆 (OLLVM CFF/BCF/SUB 检测) │
│ ├── 沙箱模拟 (Unicorn ARM64 + API 劫持) │
│ └── 压缩壳解压 (SpraUPX/UPX-like) │
├─────────────────────────────────────────┤
│ 平台层 (规划中) │
│ ├── aegis-core (namespace/seccomp) │
│ ├── aegis-hook (LSPlant + Dobby) │
│ └── aegis-ndk (ART hook / JNI bridge) │
└─────────────────────────────────────────┘
tools/
├── apk_analyzer.py APK 静态分析 (AXML/DEX/证书/权限/风险评分)
├── run_sandbox.py 模拟器一键部署 + 动态监控
├── dyn_monitor.py 四路并行运行时监控 (网络/文件/进程/Logcat)
├── ollvm_deobfuscator.py OLLVM CFF/BCF/SUB/SPLIT 检测与反混淆
├── find_openssl_cff.py 全量函数 CFF 调度器扫描
├── sandbox_deobfuscator.py Unicorn + API 劫持 (绕过 dlopen/dlsym 隐藏)
├── elf_trace.py ELF 执行追踪
├── trace_ollvm_bridge.py seccomp-notify syscall 追踪 + OLLVM 桥接
├── unicorn_full_unpack.py SpraUPX 压缩壳解压 (ALL-RWX + exit 抑制) ★
├── spraupx_decompressor.py SpraUPX LZ4-like 解压算法 Python 实现
├── analyze_test_duizhi.py SpraUPX 打包 ELF 结构分析
├── deep_analyze_duizhi.py 压缩态函数分类与偏移扫描
├── trace_bootstrap_io.py 引导代码文件 I/O 追踪
├── dump_mmap_regions.py Unicorn mmap 区域快照导出
├── find_core_cheat_logic.py 作弊核心逻辑搜索 (dlopen 调用者/驱动接口)
├── analyze_driver_interface.py IOCTL 内核驱动通信分析
└── find_game_data_offsets.py UE4/Unity 引擎结构体偏移映射
工具
功能
tools/apk_analyzer.py
APK 纯 Python 解析:AXML 二进制 XML 解析、DEX 头部分析、签名证书提取、权限扫描、嵌入 URL 提取、风险评分
tools/run_sandbox.py
一键部署:创建 AVD → 启动模拟器 → 安装 APK → 静态分析 → 动态监控
tools/dyn_monitor.py
四路并行运行时监控:网络连接 (/proc/net/tcp)、文件操作 (find -printf)、进程状态 (ps + /proc)、Logcat 实时流
工具
功能
tools/ollvm_deobfuscator.py
OLLVM CFF(控制流平坦化)检测:调度器评分、状态变量提取、真实块识别、去混淆率。同时检测 BCF(虚假控制流)、SUB(指令替换)、SPLIT(基本块分裂)
tools/find_openssl_cff.py
全量函数 CFF 扫描,区分 OpenSSL vs 用户代码的混淆分布
工具
功能
tools/sandbox_deobfuscator.py
Unicorn ARM64 沙箱 + API 劫持:在 dlopen/dlsym 调用点安装钩子,记录运行时解析的符号,绕过动态导入隐藏。成功还原 156 个 Vulkan 函数的导入表
tools/elf_trace.py
ELF 执行追踪与行为分析
tools/trace_ollvm_bridge.py
seccomp-notify syscall 追踪 + OLLVM 分析桥接:将 syscall 序列映射到函数行为,检测代码注入、文件无关执行、隐蔽 C2
工具
功能
tools/unicorn_full_unpack.py
核心突破 — ALL-RWX + exit 抑制策略:在 Unicorn 中成功执行 3500 万条指令,解压 SpraUPX 压缩壳,恢复 96% 原始代码 (258 个函数)
tools/spraupx_decompressor.py
SpraUPX LZ4-like 解压算法的 Python 静态实现(比特流读取器 + 变长整数编码)
tools/analyze_test_duizhi.py
SpraUPX 打包 ELF 的结构分析:程序头解析、熵分析、解压桩识别
tools/deep_analyze_duizhi.py
压缩态代码的函数分类与游戏引擎偏移扫描
tools/trace_bootstrap_io.py
引导代码文件 I/O 追踪,用于定位段表结构
tools/dump_mmap_regions.py
Unicorn 运行时 mmap 区域快照与导出
工具
功能
tools/find_core_cheat_logic.py
搜索作弊核心逻辑:dlopen 调用者定位、A64HookFunction 引用追踪、内存操作函数识别
tools/analyze_driver_interface.py
内核驱动 IOCTL 通信分析:命令码解码 (_IOC 宏)、vtable 分发追踪、设备节点恢复逻辑 (/proc + mknod)
tools/find_game_data_offsets.py
UE4/Unity 引擎结构体偏移映射:从指令立即数中提取硬编码偏移,匹配已知引擎布局
Phase 1: Android 虚拟化框架 (MVP)
模块
描述
状态
项目脚手架
Monorepo (Gradle + CMake),版本目录
⬜
aegis-core
namespace 隔离、seccomp 过滤器、IO redirect
⬜
aegis-ndk
ART 符号解析、JNI bridge、Binder ioctl hook
⬜
aegis-hook
LSPlant 集成、Dobby 集成、IHookEngine 接口
⬜
app (宿主)
最小宿主 App + Stub Activity + Daemon 启动
⬜
aegis-client
AMS/PMS Hook、身份伪造
⬜
aegis-daemon
VAMS (虚拟 Activity 管理)、进程管理、Room DB
⬜
aegis-proto
Protobuf IPC 协议
⬜
IO redirect
/data/data 和 /sdcard 路径重定向
⬜
集成测试
端到端:安装 → 启动 → 交互
⬜
功能
描述
状态
Per-app UID 隔离
CLONE_NEWUSER + uid_map
⬜
四大组件代理
ContentProvider / Service / BroadcastReceiver
⬜
反检测引擎
Build spoof、/proc/self/maps 伪装、root 隐藏
⬜
插件 API
aegis-plugin-api + 加载器 + Xposed 兼容
⬜
流量监控
VPN 模式流量拦截
⬜
功能
描述
状态
桌面端
Docker + ReDroid 集成
⬜
REST API
aegisctl CLI 工具
⬜
syscall 追踪
指令级调用图可视化
⬜
pip install capstone unicorn
# APK 动态分析需要:
# Android SDK (adb + emulator) 或 Docker (ReDroid)
python tools/apk_analyzer.py apks/target.apk --output reports/
from tools .apk_analyzer import APKAnalyzer
analyzer = APKAnalyzer ("apks/target.apk" )
result = analyzer .analyze ()
# result['package'], result['permissions'], result['dex'], result['risk']
python tools/run_sandbox.py \
--apk apks/target.apk \
--avd aegis_analysis \
--system-image system-images/android-34/default/x86_64 \
--monitor
python tools/find_openssl_cff.py
from tools .ollvm_deobfuscator import OLLVMDeobfuscator
deobf = OLLVMDeobfuscator ("path/to/binary.elf" )
functions = deobf .analyze ()
for func in functions :
if func .is_ollvm_flat :
print (f"func_0x{ func .addr :x} : { func .real_blocks } real blocks" )
4. Unicorn 沙箱模拟 (绕过动态导入隐藏)
python tools/sandbox_deobfuscator.py
from tools .sandbox_deobfuscator import SandboxDeobfuscator
sandbox = SandboxDeobfuscator ("path/to/elf" )
result = sandbox .emulate (target_func = 0x3a4470 )
for call in result .api_calls :
print (f" { call .name } " )
python tools/unicorn_full_unpack.py
关键配置:
from unicorn import *
from unicorn .arm64_const import *
uc = Uc (UC_ARCH_ARM64 , UC_MODE_ARM )
# 1. ALL-RWX 内存映射 — 绕过 mprotect 权限限制
uc .mem_map (0 , seg0_size , UC_PROT_ALL )
uc .mem_map (0x260000 , seg1_size , UC_PROT_ALL )
# 2. exit 抑制 — 不让引导代码的失败检查终止执行
def hook_syscall (uc , intno , user_data ):
w8 = uc .reg_read (UC_ARM64_REG_X8 )
if w8 in (93 , 94 ): # exit / exit_group
lr = uc .reg_read (UC_ARM64_REG_X30 )
uc .reg_write (UC_ARM64_REG_PC , lr ) # 跳到调用者继续
uc .reg_write (UC_ARM64_REG_X0 , 0 )
uc .hook_add (UC_HOOK_INTR , hook_syscall )
uc .emu_start (e_entry , 0 , count = 35_000_000 )
# 3. 导出解压后代码
decompressed = uc .mem_read (0x50020000 , 0x250000 )
python tools/find_game_data_offsets.py
python tools/analyze_driver_interface.py
层
技术
静态分析
Capstone (ARM64)、纯 Python AXML/DEX 解析器
动态分析
Unicorn Engine (ARM64 模拟)、adb (Android 调试桥)
混淆分析
OLLVM CFF/BCF/SUB/SPLIT 检测、Unicorn API 劫持
压缩壳
SpraUPX LZ4-like 解压、ALL-RWX 内存策略
引擎逆向
UE4/Unity 结构体偏移映射、NEON SIMD 识别
驱动分析
IOCTL 命令解码、/proc 利用、设备节点重建
规划中
LSPlant + Dobby Hook、seccomp-notify、Docker/ReDroid
Apache 2.0