CHANGMEN的个人博客,专注于网络安全领域。
Crystal Palace 官方文档详细中文版
最近更新:2026-04-11   |   字数总计:14.5k   |   阅读估时:64分钟   |   阅读量:
  1. 目录
  2. 概述
    1. 什么是 Crystal Palace?
    2. 核心目标:战术 (Tradecraft) 与功能 (Capability) 分离
    3. 主要特性
    4. 通用规范 (The Common Convention)
    5. 战术与功能的配对
    6. 定义
  3. 核心概念深度解析
    1. 1. 位置无关代码 (PIC) 的挑战
    2. 2. Crystal Palace 的解决方案
    3. 3. COFF 与 PICO 结构对比
    4. 4. 链接流程详解
  4. 安装与构建
    1. 环境要求
    2. 安装步骤
    3. 从源码构建
    4. 构建演示程序
  5. 命令行使用详解
    1. 基本用法
    2. 传递变量参数
    3. 配置文件与钩子
    4. Yara 规则生成
    5. 调试选项
  6. 规范文件与命令参考
    1. 架构标签
    2. 栈操作模型
    3. 加载与导出命令
    4. make 命令选项详解
    5. 链接与资源命令
    6. 数据处理与加密命令
    7. 控制流与变量命令
    8. Hook 与插桩命令
    9. 二进制变形与 ised 命令
  7. 动态函数解析 (DFR) 深度解析
    1. 什么是 DFR?
    2. DFR 工作原理
    3. ror13 哈希算法
    4. DFR 配置
    5. C 代码中的 DFR 使用
    6. resolver 函数实现示例
    7. DFR 最佳实践
  8. PICO 开发规范详解
    1. PICO 与 BOF 的区别
    2. PICO 编译器标志
    3. PICO 限制与注意事项
    4. PICO 参数传递
    5. 导出内部函数
    6. PICO 内存布局
  9. 二进制变形选项详解
    1. +optimize (链接时优化)
    2. +mutate (指令变异)
    3. +disco (函数发现)
    4. +shatter (代码块粉碎)
    5. +regdance (寄存器舞蹈)
    6. +blockparty (块派对)
    7. 组合使用
  10. ised 指令流编辑器详解
    1. ised 基本语法
    2. 动词详解
    3. pattern 语法
    4. 选项标志
    5. 实战示例
    6. ised 实现原理
  11. Hook 机制详解
    1. attach 命令
    2. redirect 命令
    3. protect 命令
    4. Hook 链
    5. Hook 最佳实践
  12. LibTCG 完整函数参考
    1. LibTCG 核心数据结构
      1. 1. IMPORTFUNCS 结构体
    2. LibTCG 函数完整列表
      1. 1. 核心 PICO 运行时函数
        1. PicoGetExport
        2. PicoEntryPoint
        3. PicoCodeSize
        4. PicoDataSize
        5. PicoLoad
      2. 2. DLL 加载与解析函数
        1. ParseDLL
        2. LoadDLL
        3. LoadSections
        4. ProcessImports
        5. ProcessRelocations
        6. EntryPoint
        7. SizeOfDLL
        8. GetDataDirectory
      3. 3. 模块与函数查找函数
        1. findModuleByHash
        2. findFunctionByHash
      4. 4. 实用工具函数
        1. ror13hash
        2. adler32sum
        3. __resolve_hook
        4. dprintf
      5. 5. 宏定义
        1. PTR_OFFSET
        2. DEREF
        3. WIN_GET_CALLER
    3. LibTCG 完整使用示例
      1. 示例 1: 完整的 DLL 加载器
      2. 示例 2: PICO 运行时集成
      3. 示例 3: 自定义 GetProcAddress 与 Hook
  13. 共享库创建指南
    1. 库结构
    2. 创建库
    3. 使用库
    4. LibTCG 示例
  14. Yara 规则生成
    1. 基本用法
    2. 生成的规则示例
    3. 规则特点
    4. 高级选项
  15. 常见陷阱与解决方案
    1. 1. 全局变量访问失败
    2. 2. 字符串常量无法使用
    3. 3. API 调用失败
    4. 4. 编译器优化破坏代码
    5. 5. 栈对齐问题
    6. 6. 死代码消除过度
  16. 实战案例:KaplaStrike 架构分析
    1. 第一部分:理解问题 - EDR 检测机制详解
      1. 1.1 为什么传统加载器会被检测?
      2. 1.2 调用栈检查 - 最关键的检测点
      3. 1.3 内存扫描与 MEM_PRIVATE 问题
    2. 第二部分:C2 载荷架构演进
      1. 2.1 传统 Reflective DLL Injection (rDLL)
      2. 2.2 User-Defined Reflective Loader (UDRL)
    3. 第三部分:从零开始 - KaplaStrike 开发历程
      1. 3.1 阶段一:建立基线 (simple_rdll)
      2. 3.2 阶段二:Module Overloading
      3. 3.3 阶段三:.pdata 注册
      4. 3.4 阶段四:NtContinue 入口转移
      5. 3.5 阶段五:Call Stack Spoofing (Draugr)
      6. 3.6 阶段六:Sleep Masking
    4. 第四部分:完整构建流程
      1. 4.1 项目结构
      2. 4.2 Spec 文件详解
    5. 第五部分:测试与验证
      1. 5.1 EDR 测试矩阵
    6. 第六部分:关键经验总结
      1. 6.1 核心原则
      2. 6.2 完整控制链的价值
      3. 6.3 开发建议
  17. 最佳实践总结
    1. 开发流程
    2. 安全建议
  18. 附录:命令速查表
    1. 栈操作
    2. 对象创建
    3. 数据处理
    4. Hook
    5. 变形
  19. 附录:内部实现原理
    1. Rebuilder 类
    2. Attach 类
    3. 安全建议
  20. 附录:命令速查表
    1. 栈操作
    2. 对象创建
    3. 数据处理
    4. Hook
    5. 变形
  21. 附录:内部实现原理
    1. Rebuilder 类
    2. Attach 类