2018 年 04 月 0 篇文章

Learning LLVM Part-1

(这个还没写完 TAT)LLVM 不仅仅是一个编译器,而是一个有很多特性的编译框架,比如 JIT、支持了很多非类 C 语言,如 Rust 等等,此外,还是一种 AppStore 上的发布方式。LLVM 和其他编译器不同的地方是:LLVM 的中间表示,即 LLVMIR 是一个创新,有了比汇编语言更好的可读性 LLVM 比其他的编译器更加模块化 LLVM 不仅仅可以实现编译优化,还可以做到:架构模拟、动态二进制分析工具、源代码变换(抽象

Data-Oriented Programming

Data-OrientedProgramming:OntheExpressivenessofNon-ControlDataAttacks 引言上一代的攻击方式是通过代码注入来劫持程序控制流 ROP 和 DOP 都是图灵完整的在程序的控制执行中执行一些简短的指令序列,使得模拟图灵机的具体操作成为可能,如赋值、运算等问题非控制数据攻击(Non-controlDataAttacks)在一些环境上(如现代浏览器),仅