CS/LLVM
LLVM Skeleton Pass
LLVM build와 install을 마쳤으니 LLVM Pass를 실행해보자. github에서 skeleton pass를 다운받아 실행시켜보려고 한다. 1. Clone LLVM Skeleton Pass git clone https://github.com/manggoguy/llvm-pass-skeleton.git cd llvm-pass-skeleton (clone한 path) mkdir build 소스코드의 구성을 살펴보자. 하나의 Pass당 .h와 .cpp가 하나씩 구성되어있다. ModulePass를 상속받는 클래스 생성한다. 실질적인 동작 수행은 runOnModule에서 이뤄진다. runOnModule 에서는 모듈의 모든 함수의 이름을 출력한다. 2. Source file 생성 vi test.c tar..
Window에서 LLVM build & Install 하기
Oracle VM Virtual Box로 llvm build를 계속 실패하다가 결국 window 환경에서 build하게 되었다. VM에서 실패한 이유는 메모리 부족이라고 추정하고는 있지만, 정확한 이유는 찾지 못했다. 나와 같은 문제로 VM Box로 llvm build를 실패한 사람들을 위해 window 에서 llvm build / install 하는 방법을 공유한다. 1. Download Source 먼저 LLVM Download Page에서 다운받으려는 버전을 확인하고, 해당 버전의 GitHub Release로 이동한다. https://releases.llvm.org/download.html LLVM Download Page If you'd like access to the "latest and gr..
Buffer Overflow
BOF에 대한 내용을 정리하기에 앞서, 취약점(Vulnerability)과 관련된 용어에 대해 알아보자 Vulnerability 소프트웨어에서 로그인 없이 액세스를 활성화하거나 허가되지 않은 코드를 실행하거나 컴퓨터를 손상시키는 등 공격 시 예기치 않은 컴퓨터 동작을 발생시키는 Bug 이다. Exploit 프로그램에 존재하는 Bug를 악용하는 input이다. Exploitable: Bug를 이용해서 소프트웨어를 성공적으로 장악할 수 있다. (공격하는 데 사용할 수 없다면 'exploitable 하지 않다'고 한다.) Threat 컴퓨터 보안에서 Threat은 취약성을 악용하여 보안을 위반함으로써 피해를 입힐 가능성이 있는 위험이다. 취약점 공격의 종류는 그 구분 방법에 따라 여러 가지로 나눌 수 있으며,..