LLVM PASS PWN
Created|Updated
|Post Views:
知
LLVM(Low Level Virtual Machine)的设计理念
- 统一(LLVM IR)
编译器通常分成三部分:
- 前端:对源码进行不完全处理 ->
- 中端:对前端产物优化
- 后端:得到机器码
llvm pass
llvm pass -> llvm IR 处理
- pass的基本类型:
- 分析型pass
- 转换型pass
- 实用型pass
*
- pass的处理单位:
- 处理函数:FounctionPass
- 处理模块:ModulePass
- 处理单个基本块:BasicBlockPass
- 处理循环:LoopPass
clang和llvm
1 | # Ubuntu-18.04 |
编译
1 | # pass |
1 | // Hello.cpp |
1 | // LLVMHello.cpp |
优化
1 | opt-10 -load ./LLVMHello.so -"hello" ./test.ll -S -o test_new.ll |
gdb调试
1 | gdb ./opt-8 |
流程
- 源码 → Clang 前端 → LLVM IR → opt 优化 → llc 后端 → 汇编代码 → 汇编器 → 可执行文件
逆向
.data.rel.ro
的最后一个函数就是RunOnFunction
![[Pasted image 20250803125108.png]]
练
RedHat2021-simpleVM
1 | find /usr/include -name "Instruction.def" |
HANDLE_OTHER_INST(55, Call , CallInst ) // Call a function
….
Author: John Doe
Copyright Notice: All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.
Related Articles
2025-06-20
MINI-LCTF2022 - kgadget
PART Iunpack1234567loo@localhost:~/ctf/kernel/xiaozaiya/kernel-PWN/kgadget/try$ tar -xvf ./kgadget.tar.xzbzImageREADME.mdrootfs.cpiorun.shloo@localhost:~/ctf/kernel/xiaozaiya/kernel-PWN/kgadget/try$ lsREADME.md bzImage kgadget.tar.xz rootfs.cpio run.sh 12loo@localhost:~/ctf/kernel/xiaozaiya/kernel-PWN/kgadget$ file rootfs.cpiorootfs.cpio: ASCII cpio archive (SVR4 with no CRC) md core && cd ./core && cpio -idv <...
2025-06-20
CISCN2017-babydriver
PART Iunpack12loo@localhost:~/ctf/kernel/xiaozaiya/kernel-PWN/CISCN2017-babydriver/try$ file ./rootfs.cpio./rootfs.cpio: ASCII cpio archive (SVR4 with no CRC) md core && cd ./core && cpio -idv < ../rootfs.cpio start.sh12345678910111213#!/bin/bashqemu-system-x86_64 \-initrd rootfs.cpio \-kernel bzImage \-cpu kvm64,+smep \-append 'console=ttyS0 root=/dev/ram kpti=1 nokaslr oops=panic panic=1' \-monitor /dev/null \-enable-kvm \-m 256M \--nographic \-smp...
2025-06-20
~/kernel
“少上网多读书” – arttnba3 结构体,函数以及变量结构体多起来之后有点乱,整理在这里 struct cred 4.4.72 12345678910111213141516171819202122232425262728293031323334353637383940struct cred { atomic_t usage; /* 0 4 */ kuid_t uid; /* 4 4 */ //不知道什么用,参考作用 kgid_t gid; /* 8 4 */ kuid_t suid; /* 12 4 */ ...
2025-06-18
QWB2018 - core
PART Iunpack12loo@localhost:~/ctf/kernel/xiaozaiya/kernel-PWN/QWB2018-core/tar/try$ lsbzImage core.cpio.gz core.tar.gz exp.c exp.sh start.sh vmlinux 12loo@localhost:~/ctf/kernel/xiaozaiya/kernel-PWN/QWB2018-core/tar/try$ file core.cpio.gzcore.cpio.gz: gzip compressed data, was "core.cpio", last modified: Sat Sep 23 02:42:27 2023, from Unix, original size modulo 2^32 120943104 gzip -> gunzip ./core.cpio.gz -> ./core.cpio md core && cd core && cpio -idv...
2025-07-26
ISCC2025-EBPF
to be continued… PART Iunpack allinone.sh run.sh12345678910111213#!/bin/shqemu-system-x86_64 \ -m 512M \ -cpu qemu64,+smep,+smap -smp 2 \ -kernel bzImage \ -append "console=ttyS0 quiet panic=-1 nokaslr" \ -initrd rootfs.cpio \ -drive file=./flag,if=virtio,format=raw,readonly=on \ -nographic \ -net nic,model=e1000 \ -no-reboot \ -monitor /dev/null runable 123456789101112131415#!/bin/shqemu-system-x86_64 \ ...
2025-08-10
2021QWB--notebook