• 제목/요약/키워드: LLVM IR

검색결과 10건 처리시간 0.019초

병렬 컴퓨팅 시스템에서 LLVM 응용 연구 (Study on LLVM application in Parallel Computing System)

  • 조중석;조두산;김용연
    • 문화기술의 융합
    • /
    • 제5권1호
    • /
    • pp.395-399
    • /
    • 2019
  • 다양한 병렬 컴퓨팅 시스템을 지원하기 위해서는 LLVM IR을 벡터/행렬을 보다 효과적으로 지원할 수 있도록 확장하는 것과 LLVM IR을 machine code로 바꾸어 주는 부분을 새로운 알고리즘으로 설계하여 구현하면 된다. IR 예제에서 보았듯이 기본적으로 RISC 명령어로 구성되어 있기 때문에 RISC 명령어 생성은 자연스럽게 생성되며, 벡터 또한 현재 지원가능한데 행렬 명령어는 지원되지 못하고 있다. 벡터/행렬을 보다 강력하게 지원하기 위한 새로운 IR 구조, 명령어 생성 알고리즘 및 관련 부분의 확장이 필요하다. 이를 위해 LLVM IR의 각 명령어를 (벡터/행렬을 위한) target architecture의 적당한 명령어로 mapping을 해주는 부분 (instruction selection 알고리즘)이 중요하다. LLVM IR 명령어의 의미를 파악하고, target architecture의 각 명령어 의미와 syntax를 비교하여, 패턴이 일치하는 명령어를 선택하여 mapping을 효율적으로 해줘야 한다.

LLVM IR 대상 악성코드 탐지를 위한 이미지 기반 머신러닝 모델 (Image-Based Machine Learning Model for Malware Detection on LLVM IR)

  • 박경빈;윤요섭;또올가;임강빈
    • 정보보호학회논문지
    • /
    • 제34권1호
    • /
    • pp.31-40
    • /
    • 2024
  • 최근 정적분석 기반의 시그니처 및 패턴 탐지 기술은 고도화되는 IT 기술에 따라 한계점이 드러나고 있다. 이는 여러 아키텍처에 대한 호환 문제와 시그니처 및 패턴 탐지의 본질적인 문제이다. 악성코드는 자신의 정체를 숨기기 위하여 난독화, 패킹 기법 등을 사용하고 있으며 또한, 코드 재정렬, 레지스터 변경, 분기문 추가 등 기존 정적분석 기반의 시그니처 및 패턴 탐지 기법을 회피하고 있다. 이에 본 논문에서는 이러한 문제를 해결할 수 있는 머신러닝을 통한 LLVM IR 코드 이미지 기반 악성코드 정적분석 자동화 기술을 제안한다. 바이너리가 난독화되거나 패킹된 사실에 불구하고 정적 분석 및 최적화를 위한 중간언어인 LLVM IR로 디컴파일한다. 이후 LLVM IR 코드를 이미지로 변환하여 CNN을 이용한 알고리즘 중 전이 학습 및 Keras에서 지원하는 ResNet50v2으로 학습하여 악성코드를 탐지하는 모델을 제시한다.

IoT 가상기계의 중간코드 검증을 위한 RSIL to LLVM IR 변환기의 설계 및 구현 (A Study on RSIL to LLVM IR Translator For Verification of Intermediate Code on IoT Virtual Machine)

  • 조재현;최찬휘;손윤식;이양선
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2017년도 춘계학술발표대회
    • /
    • pp.1135-1137
    • /
    • 2017
  • 본 논문은 IoT 장치에서 동작하는 가상기계의 중간코드를 LLVM IR 코드로 변환하는 코드 변환기를 설계 및 구현하였다. LLVM 인터프리터를 통해 RSIL 코드로부터 변환된 LLVM IR 코드를 실행하고, 그 결과를 비교하여 IoT 가상기계의 중간코드를 검증하였다.

자체 수정 코드를 탐지하는 정적 분석방법의 LLVM 프레임워크 기반 구현 및 실험 (An LLVM-Based Implementation of Static Analysis for Detecting Self-Modifying Code and Its Evaluation)

  • 유재일;최광훈
    • 정보보호학회논문지
    • /
    • 제32권2호
    • /
    • pp.171-179
    • /
    • 2022
  • 자체 수정 코드(Self-Modifying-Code)란 실행 시간 동안 스스로 실행 코드를 변경하는 코드를 말한다. 이런 기법은 특히 악성코드가 정적 분석을 우회하는 데 악용된다. 따라서 이러한 악성코드를 효과적으로 검출하려면 자체 수정 코드를 파악하는 것이 중요하다. 그동안 동적 분석 방법으로 자체 수정 코드를 분석해왔으나 이는 시간과 비용이 많이 든다. 만약 정적 분석으로 자체 수정 코드를 검출할 수 있다면 악성코드 분석에 큰 도움이 될 것이다. 본 논문에서는 LLVM IR로 변환한 바이너리 실행 프로그램을 대상으로 자체 수정 코드를 탐지하는 정적 분석 방법을 제안하고, 자체 수정 코드 벤치마크를 만들어 이 방법을 적용했다. 본 논문의 실험 결과 벤치마크 프로그램을 컴파일로 변환한 최적화된 형태의 LLVM IR 프로그램에 대해서는 설계한 정적 분석 방법이 효과적이었다. 하지만 바이너리를 리프팅 변환한 비정형화된 LLVM IR 프로그램에 대해서는 자체 수정 코드를 검출하기 어려운 한계가 있었다. 이를 극복하기 위해 바이너리를 리프팅 하는 효과적인 방법이 필요하다.

Static Dalvik Bytecode Optimization for Android Applications

  • Kim, Jeehong;Kim, Inhyeok;Min, Changwoo;Jun, Hyung Kook;Lee, Soo Hyung;Kim, Won-Tae;Eom, Young Ik
    • ETRI Journal
    • /
    • 제37권5호
    • /
    • pp.1001-1011
    • /
    • 2015
  • Since just-in-time (JIT) has considerable overhead to detect hot spots and compile them at runtime, using sophisticated optimization techniques for embedded devices means that any resulting performance improvements will be limited. In this paper, we introduce a novel static Dalvik bytecode optimization framework, as a complementary compilation of the Dalvik virtual machine, to improve the performance of Android applications. Our system generates optimized Dalvik bytecodes by using Low Level Virtual Machine (LLVM). A major obstacle in using LLVM for optimizing Dalvik bytecodes is determining how to handle the high-level language features of the Dalvik bytecode in LLVM IR and how to optimize LLVM IR conforming to the language information of the Dalvik bytecode. To this end, we annotate the high-level language features of Dalvik bytecode to LLVM IR and successfully optimize Dalvik bytecodes through instruction selection processes. Our experimental results show that our system with JIT improves the performance of Android applications by up to 6.08 times, and surpasses JIT by up to 4.34 times.

악성코드 Argument Detection 방법 연구 (A Study of Malware Argument Detection)

  • 황신운;윤종희
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2021년도 춘계학술발표대회
    • /
    • pp.181-182
    • /
    • 2021
  • 악성코드 분석방법의 발전에 따라 악성코드의 분석우회기법도 나날이 발전하여 대량의 악성코드분석이 다양한 이유로 수행되지 않고 있다. 대부분의 악성코드는 소스코드가 없는 바이너리로 동적 분석이 동작하지 않는 원인을 파악하기 어렵다. 동적 분석이 실행되지 않는 악성코드들은 입력 값에 따라 악성코드가 동작하거나, 특정 시간대를 일치하는 등 다양한 트리거가 존재한다. 본 논문에서는 트리거가 필요한 악성코드에 대해 바이너리 리프팅(lifting) 기술을 활용한 새로운 동적 분석방법을 제안한다. 바이너리 리프팅 기술은 소스코드가 없는 바이너리를 LLVM IR 로 변환시키는 기술로서 이를 활용해 입력 값 유무에 따른 악성코드를 판별하고자 한다. 전달인자를 사용하는 코드와 사용하지 않는 코드간 LLVM IR 을 비교분석하여 전달인자에 따른 악성코드 동작 여부를 판별해 대량의 악성코드 동적 분석시스템의 분석률을 높이는 방안을 제안하고자 한다.

임베디드 기기 바이너리 취약점 분석 효율성 제고를 위한 중간어 변환 기술 (Intermediate-Representation Translation Techniques to Improve Vulnerability Analysis Efficiency for Binary Files in Embedded Devices)

  • 정병호;김용혁;배성일;임을규
    • 스마트미디어저널
    • /
    • 제7권1호
    • /
    • pp.37-44
    • /
    • 2018
  • 임베디드 기기는 시퀀스 제어 기능과 수치연산 기능을 활용하여 제어 프로그램에 따라 산업현장의 기기 등 다양한 자동화 시스템에 활용된다. 현재 임베디드 기기는 기업의 산업현장, 원전, 대중교통 같은 국가기반시설에서 제어 시스템으로 활용되고 있다. 따라서 임베디드 기기를 대상으로 하는 공격은 큰 경제적 손실과 사회적 손실을 야기할 수 있다. 임베디드 기기를 대상으로 하는 공격은 대부분 데이터, 코드 변조로서 제어 프로그램을 대상으로 이루어진다. 산업 자동화 임베디드 기기의 제어 프로그램은 일반적인 프로그래밍 언어와 달리 회로 구조를 표현하기 위하여 설계되었고, 대부분의 산업 자동화 제어 프로그램은 그래픽 기반 언어인 LAD로 설계되어있어 정적분석이 용이하지 않다. 이러한 특징으로 인하여 산업 자동화 제어 프로그램에 대한 취약점 분석 및 보안 관련 연구는 정형 검증, 실시간 모니터링 수준에 그친다. 또한 사전에 취약점을 탐지하고 공격에 대한 대비가 가능한 산업 자동화 제어 프로그램 정적분석 연구는 매우 저조한 실정이다. 따라서 본 연구에서는 산업 자동화 임베디드 프로그램에 대한 정적분석 효율성 증대를 위하여 회로 구조를 표현하기 위해 설계된 산업 자동화 제어 프로그램을 논리식으로 표현하기 위한 방법을 제시한다. 또한 다양한 제조사의 산업 자동화 제어 프로그램을 통합적으로 분석하기 위하여 LLVM IR을 활용한 중간어 변환 기술을 제안한다. LLVM IR을 활용함으로서 동적 분석에 대한 통합분석이 가능하다. 본 연구에서는 해당 방법에 대한 검증을 위하여 S 사(社)의 제어 프로그램을 대상으로 하여 논리식 형태의 중간어로 변환하는 프로그램의 시제품을 개발하였다.

Binary lifting을 이용한 안드로이드 라이브러리 취약점 분석 (Android library vulnerability analysis using binary lifting)

  • 이성원;윤종희
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2020년도 춘계학술발표대회
    • /
    • pp.290-291
    • /
    • 2020
  • 안드로이드 OS는 대중적이고 중요한 시스템으로 자리 잡았고, 이에 따른 다양한 연구도 진행 중이다. 본 논문에서는 보안측면에서의 취약점 분석 방법을 제시하여, 각종 보안 위협을 예방하는데 기여하고자 한다. 안드로이드 라이브러리를 대상으로 Binary Lifting 기술을 사용하여 코드기반(LLVM IR) 퍼징을 진행하는, 취약점 분석 과정을 설계 수행한다.

LLVM 기반의 임베디드 시스템 성능 분석기의 연구 (A Study of LLVM-based Embedded System Performance Analyzer)

  • 조두산
    • 문화기술의 융합
    • /
    • 제8권1호
    • /
    • pp.577-582
    • /
    • 2022
  • 새로운 임베디드 시스템을 개발할 때 응용 프로그램과 에뮬레이터, 그리고 컴파일러를 동시에 개발한다. 모든 시스템 구성요소의 성능을 최적으로 개발하기 위해서는 응용 프로그램 개발시 부분 최적화를 동시에 진행하여야 한다. 이를 위하여 소스 레벨 성능 분석기를 개발하면 응용 프로그램 소스 코드를 모듈별로 성능 평가하여 최적화하는 것이 가능하다. 일반적으로 응용 프로그램의 성능은 반복문에서 결정된다. 소스코드를 중간표현 (Intermediate Representation) 코드 생성기를 이용하여 변환하고, 변환된 중간 표현 단계의 명령어들로 실행시간을 분석 할 수 있다. 실행시간 성능 평가 결과를 바탕으로 응용 프로그램 코드를 개선하면 최종적으로 개발된 통합 플랫폼에서 더 나은 결과물을 얻을 수 있다. 본 연구에서는 새로운 임베디드 시스템의 개발중에 응용 프로그램을 동시 개발하는 과정에서 사용 가능한 소스 레벨 성능 분석기에 대하여 기술하고 있다. 성능 분석기를 사용하면 최종 임베디드 시스템의 성능을 보다 빠르게 최적화하는 것이 가능하게 된다.

CMA 인식을 통한 메모리 안전성 강화 연구

  • 홍준화;박찬민;정성윤;민지운;유동연;권용휘;전유석
    • 정보보호학회지
    • /
    • 제32권4호
    • /
    • pp.61-69
    • /
    • 2022
  • C/C++에는 다수의 메모리 취약점이 존재하며 ASan은 낮은 오버헤드와 높은 탐지율로 이러한 메모리 취약점을 탐지하기 위해 광범위하게 사용되고 있다. 그러나 상용 프로그램 중 다수는 메모리를 효율적으로 사용하기 위해 Custom Memory Allocator(CMA)를 구현하여 사용하며, ASan은 이러한 CMA로부터 파생된 버그를 대부분 탐지하지 못한다. 이를 극복하기 위해 본 연구에서는 LLVM IR 코드를 RNN 신경망에 학습하여 CMA를 탐지하고, ASan이 CMA를 식별할 수 있도록 수정하여 CMA로부터 파생된 메모리 취약점을 탐지할 수 있는 도구인 CMASan을 제안한다. ASan과 CMASan의 성능 및 CMA 관련 취약점의 탐지 결과를 비교·분석하여 CMASan이 낮은 실행시간 및 적은 메모리 오버헤드로 ASan이 탐지하지 못하는 메모리 취약점을 탐지할 수 있음을 확인하였다.