Advertisement

LLVM-PASS Pwn题入门

阅读量:

国赛见到了一个LLVM PASS pwn事件发生后感到非常沮丧,并因此有机会深入学习这类问题

基础知识

为了方便学习LLVM环境的配置,请在网络上查找相关教程以完成安装。

了解LLVM PASS的本质需要掌握其核心原理。pass是编译器开发中采用的一种系统化方法,在程序指令层面实现对目标表示(如IR)的转换、分析以及性能优化等功能。通过实现对目标表示转化为更优形式的过程中完成相应的操作功能

这里来看一个图:

在这里插入图片描述

源代码经过clang编译器处理后会被转换为一种中间代码——IR这一项叫做IR的技术非常关键它充当了编译器前端与后端之间的桥梁IR的设计理念主要体现了LLVM的插件化与模块化原则通过LLVM的passes能够有效地操作其生成的IR结构此外作为编译器组件接口之一IR的功能也十分强大一般来说在开发新编程语言时只需确保能够生成LLVM IR即可

LLVM的IR有三种表示形式:

  • 存储在内存中的数据格式
    • 仅存在于内存中
      平均情况下普通人无法直接查看
    • 不可解码的中间表示(Invisible Code)
      文件扩展名为bc

全部评论 (0)

还没有任何评论哟~