# JIT_Compiler **Repository Path**: leminis/jit-compiler ## Basic Information - **Project Name**: JIT_Compiler - **Description**: 软件安全原理第二个大作业.使用自己设计的指令集和jit编译器复现 v8 jit漏洞. - **Primary Language**: C - **License**: WTFPL - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2021-12-29 - **Last Updated**: 2021-12-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 软件安全原理第二次大作业:JIT编译器 ## 简介 使用自己设计的指令集(homework IR)和JIT编译器复现Chrome V8 JIT 漏洞 CVE-2021-21220. 漏洞POC: ``` .begin @main var foo var bar .rt asgn foo, :i32, 0x80000000 cast foo, :i64 li $a0, 4 # printint ld $a1, foo addi $a1, $a1, 1 ecall # runtime: -2147483647 .jit asgn bar, :i32, 0x80000000 cast bar, :i64 li $a0, 4 # printint ld $a1, bar addi $a1, $a1, 1 ecall # jit: 2147483649 ret .end ``` ## 目录结构 - 工程计划.md : 工程的各个阶段和计划时间 - homework_IR.txt : 设计的指令集, homework IR - alloc.c : 内存分配器 - defs.h : 全局函数 - interp.c : 解释器 - jit.txt : homework IR到x86-64的转换方式 - jitcc.c : JIT编译器 - jitexec.S : TB块入口 - lexer.c : 词法分析器 - main.c : 主函数 - params.h : 全局参数 - parser.c : 语义分析器 - preproc.c : 预处理器 - runtime.c : 运行时环境 - x86-64.txt : x86-64平台的一些小tips - types.h : 基本类型定义 - x86-64def.h : x86-64平台相关定义