Skip to content
williamfzc edited this page Oct 26, 2022 · 1 revision

关于 sibyl 1

详见《sibyl 1 的不足》,针对这两点:

  • 性能:更换底层后性能有较大幅度的提升,除了IDE级别的高实时场景外,完全满足CI、本地运行等需求;
  • 数据结构:底层设计深度参考 semantic ,上层最小化;

源码分析 vs 制品分析

通常分析工具分为两种:

  • 制品分析:如soot,从语言中间层(字节码)的角度进行信息提取;
  • 源码分析:如目前 github 官网中使用的 semantic,直接解析代码文本而不需要编译;

我们选择了后者,原因:

  • 信息差异
    • 在中大型项目中,
      • 编译过程经常会影响原有的代码(如AOP),无论是AST还是字节码;
      • 安全加固的考虑,强化制品反编译的难度;
    • 在制品分析时我们难以完全复原它原有的样子;
    • 我们关心且能够直接优化的载体是源码,而不是制品;
  • 兼容性
    • 不是所有的语言都有方便如java的反编译工具;