카테고리 없음

AI를 활용한 LLVM 적용 아이디어 생성

snejs 2025. 8. 19. 10:40

목표

LLVM에 대한 기초적인 PASS 생성 정도의 지식 수준에서 현재 진행 중인 프로젝트에 적용 방법을 고안하는 것에 한계를 느끼고,  구글링을 통해 정보를 얻어내는 방법도 있으나, AI를 활용함으로써 더 양질의 정보를 빠르게 얻어보고자 한다.

 

2025 AI 여름방학 특강에서 배운 프롬프트 작성 방법을 활용해 AI에게 아이디어를 생성시켜 프로젝트의 진행 방향을 모색할 수 있도록 한다.

 


 
대상 
 
Chat GPT-5-thinking 과 Perplexity AI에서 쿼리에 따른 최적 모델을 사용하도록 설정하여 생성시켰다.
 
Chat GPT 는 가장 보편적인 생성형 AI이고, Perplexity AI는 정보 검색에 뛰어난 성능을 보인다는 것을 사유로 두 AI를 선정하였다.
 

 
프롬프트
 

다음 프롬프트는 특강 중 AI 활용 마스터 부분을 참고하여 작성한 프롬프트이다. 

[명령] llvm을 '바이너리를 이용한 제어구조 판별 도구(llm) 개발' 에 적용할 수 있는 방법을 제시해줘.
[맥락] 이 프로젝트의 배경은 요즘 주로 악성코드의 난독화 과정에서 사용되는 virtualize라는 난독화가 이루어지는 코드에서 fetch-decode-execute 형식으로 많이 변형되곤 하는데, 이 형식이  loop-switch 구조와 닮은 것을 기반으로 이와 같은 난독화가 적용되었는지 여부를 탐지해내고자 하는 것이야. llm이 난독화된 코드의 바이너리 코드를 보고 난독화를 효율적으로 탐지해낼 수 있도록 정보를 간략화하거나 주요한 정보만을 바탕으로 llm이 판별할 수 있도록 하기 위해 llvm을 적용하고자 해. 
[제한] 이는 프로젝트에 접목하고자 하는 아이디어를 제시하는 것으로 3문장을 넘어가지 않는 설명과 함께 아이디어를 제시해줘. 아이디어는 10가지 정도 제시해줘. 종류는 기존을 방법을 바탕으로 7가지 창의적인 방법으로 3가지 제시해줘
[예시] llvm은 http://www.llvm.org을 참고해서 어떤 방법을 적용할 수 있는지 탐색할 수 있을 것이고, 아이디어는 이전까지 다른 프로젝트에 llvm에 어떻게 적용되었는지 논문 탐색을 바탕으로 어떤 방식으로 활용되었는지 를 참고하면 좋을 거 같아.

 

 


Chat GPT-5-thinking의 응답

 

아래 10가지는 “바이너리를 이용한 제어구조 판별 도구(LLM)”에 LLVM을 접목해, 가상화(virtualize) 난독화가 만들어내는 fetch–decode–execute(= loop–switch 류) 패턴을 LLM이 쉽게 판별하도록 특징을 간추려 주는 방법입니다. 각 항목은 3문장 이내로 요약했습니다.

기존 방법 기반 (7)

  1. MC/objdump 기반 CFG·점프테이블 복원
    llvm-objdump와 LLVM MC 디스어셈블러를 써서 간접 분기·점프테이블·핸들러 블록을 복원하고, BB(기본블록) 단위 통계(간접분기 밀도, 분기 대상 다양도, 핸들러 길이 분산)를 LLM 입력용 특징으로 내보냅니다. 가상화 VM 인터프리터의 switch/간접분기 집중 패턴을 정량화해 태깅합니다. (llvm.org, The LLVM Project Blog)
  2. Object 라이브러리로 섹션·심볼·재배치 메타데이터 추출
    llvm::object로 바이너리 포맷별(ELF/Mach-O/COFF) 코드/데이터/읽기전용 섹션과 재배치·심볼 정보를 읽어, “비정형 바이트코드 테이블 + 작은 핸들러 군집” 같은 VM 흔적을 규칙化합니다. 이 메타를 LLM 프롬프트의 헤더로 붙여 잡음 없이 맥락을 제공합니다. (llvm.org)
  3. BOLT로 핫 트레이스·CFG 가중치 산출
    perf2bolt→llvm-bolt 파이프라인으로 실제 실행 프로파일을 반영한 CFG(간접분기 허브가 과열되는 인터프리터 루프)와 핸들러 진입/퇴출의 핫에지 비율을 뽑아 특징화합니다. 해석기형 루프의 “짧은 핸들러 다중호출 + 간접분기 허브” 지표를 만듭니다. (GitHub, llvm.org, research.facebook.com)
  4. llvm-mca로 디스패치 마이크로패턴 분석
    디스어셈블 스니펫을 llvm-mca에 넣어, 반복 루프 내 로드·분기·비산 수치(throughput/리소스 사용) 패턴을 얻고 해석기 루프 특유의 ‘얇은 연산+간접분기’ 지표를 생성합니다. 성능 시뮬레이션 수치 자체를 LLM이 읽기 쉬운 스칼라 특징으로 축약합니다. (llvm.org, en.algorithmica.org, Johnny's Software Lab)
  5. XRay(정적/동적)로 간접 분기 집약 트레이스 채집
    가능하면 XRay로 함수 경계/콜스택 트레이스를 수집하고, 짧은 처리기(handler) 호출이 고빈도로 반복되는 패턴을 정리합니다. 정적 특징과 결합해 “동적 호출-길이 분포”를 LLM에 제공합니다. (llvm.org)
  6. MIR/MachineFunctionPass 기반 디코딩 후 규격화
    MC로 올린 기계명령을 MIR 수준의 그래프로 정리하고, MachineFunctionPass로 “인터프리터 루프 후보”를 표준 형태(머리 루프+간접 분기+핸들러 군집)로 정규화해 델타를 줄입니다. LLM에는 원본 대신 ‘정규화된 CFG 서명 + 통계’만 전달합니다. (llvm.org)
  7. MLIR 데이터플로 분석으로 바이트코드 상태추적
    바이트코드 포인터/스택 레지스터처럼 보이는 상태변수를 MLIR 데이터플로 프레임워크로 추적해, “fetch(메모리 인덱싱)→decode(테이블 참조)→execute(핸들러 분기)”의 흐름을 태그합니다. LLM은 이 태그열(상태머신 로그)을 근거로 판별만 하면 됩니다. (mlir.llvm.org)

창의적 방법 (3)

  1. “VM 지문(fingerprint)” 벡터화 & LLM 라벨링
    Tigress 등 공개 VM 난독화로 합성 바이너리를 다량 생성해, 각 바이너리에서 위 지표(간접분기 엔트로피, 핸들러 길이/카디널리티, 점프테이블 산포, mca 지표 등)를 벡터화하고 LLM에 few-shot 예시로 첨부합니다. 실환경 시료는 지도 없이도 지문 유사도로 스스로 판별하게 합니다. (tigress.cs.arizona.edu, tigress.wtf)
  2. “루프–스위치 모티프 서명” 생성 규칙
    가상화 연구(디버추얼라이제이션 문헌)에서 보고된 인터프리터 구조를 규칙화해, CFG 패턴을 해시로 압축(예: [헤드 루프 1개 + 핸들러 군집 k개 + 간접분기 허브 out-degree d] 형태)합니다. LLM에는 해시와 소수 지표만 주어 ‘해시 매칭+설명’ 답변을 유도합니다. (www2.cs.arizona.edu, cs.gmu.edu, ScienceDirect)
  3. “설명가능 프롬프트” 포맷 표준화
    LLM 입력을 “정규화 CFG(요약) + 통계표 + 동적 힌트 + 예시 템플릿”의 고정 포맷으로 만들고, 각 필드에 LLVM 도구가 산출한 근거(툴/옵션/버전)를 함께 첨부합니다. 판별 정확도뿐 아니라 근거 회수(Explainability)와 재현성을 동시에 확보합니다. (llvm.org)

참고: LLVM은 바이너리 핸들링에 MC/objdump/Object 계층, 실행 프로파일과 레이아웃에 BOLT, 정적 성능 분석에 llvm-mca, 동적 트레이싱에 XRay, 분석·정규화에 MIR/MLIR 등 폭넓은 도구군을 제공합니다. 위 조합은 “난독화 코드 → (LLVM로) 정규화된 특징/서명 → (LLM로) 최종 판별”의 2단 구성으로 설계하는 것을 전제로 합니다. (The LLVM Project Blog, llvm.org, GitHub, mlir.llvm.org)

 


Perplexity AI의 응답

LLVM을 '바이너리를 이용한 제어구조 판별 도구(llm) 개발'에 적용할 수 있는 10가지 아이디어

  1. LLVM IR로 제어흐름 포맷 변환: 바이너리를 LLVM IR로 리프팅해 아키텍처 독립적이고 난독화에도 강인한 제어흐름 그래프(CFG)를 생성, loop-switch 변형 탐지에 활용.
  2. 기본 블록 간 분기 패턴 추출: LLVM의 기본 블록(block) 및 분기 명령(branch, switch 등) 분포를 수치화해 난독화 특징(예: loop-switch 집중도)으로 활용.
  3. Loop-Switch 특이 구조 정량화: LLVM IR에서 반복문(loops)과 switch-case 분기 사용 정도를 정량적으로 분석, fetch-detect-execute 패턴의 비정상적 빈도 탐지.
  4. 바이너리의 함수 호출 그래프(FCG) 추출: 바이너리를 LLVM으로 변환한 뒤 함수 호출 그래프를 자동 생성·시각화해, 전형적인 가상머신 기반 난독화 패턴(짧은 dispatcher, 비정상적 호출 깊이 등) 탐지에 활용.patents.google
  5. 데이터 흐름 분석 및 변수 추적: LLVM IR에서 주요 변수 및 피연산자의 흐름을 추적, fetch-detect-execute 패턴이 반복되는 구조 탐지.
  6. 패턴 매칭 기반 자동 탐지 룰 개발: LLVM IR을 패턴 벡터로 변환 후, 기존 난독화된 코드에서 추출한 패턴과 비교하여 유사도 검출.
  7. IR 이미지 변환 + 딥러닝 모델 적용: LLVM IR을 이미지로 변환, CNN 등 딥러닝 모델에 입력시켜 바이너리의 난독화 여부 자동 판별.foxforensic.tistory+1

창의적인 추가 아이디어

  1. LLVM Pass로 실시간 난독화 패턴 탐지: 직접 LLVM Pass를 제작해 IR 생성 단계에서 loop-switch, dispatcher 등 의심 패턴을 실시간 탐지·로그화.
  2. IR 코드 특징 기반 anomaly score 도출: LLVM IR에서 각 제어구조, 분기, 루프의 빈도와 네트워크 특성을 수치화한 뒤 통계적 이상치 탐지로 난독화 여부를 평가.
  3. 자연어로 해석된 IR 기반 LLM fine-tuning: 주요 LLVM IR 패턴을 자연어 설명(코드 코멘트 등)으로 LLM에 직접 식별 정보를 제공, LLM의 판별력을 강화.

각 방법은 LLVM의 범용성(언어/아키텍처 독립성), 코드 패턴의 정량적 분석, ML/AI와의 융합까지 다양한 방식으로 활용할 수 있습니다.kci+2

 


출처 : 

  1. https://patents.google.com/patent/WO2018101575A1/ko
  2. https://foxforensic.tistory.com/18
  3. https://www.kci.go.kr/kciportal/ci/sereArticleSearch/ciSereArtiView.kci?sereArticleSearchBean.artiId=ART003051747
  4. https://hackyboiz.github.io/2025/04/28/OUYA77/Anti_part3/kr/
  5. https://jok.kiise.or.kr/digital-library/manuscript/file/100937/NODE11753218.pdf
  6. https://blog.jeje.work/llm----
  7. https://velog.io/@qorjiwon/%EC%A0%95%EB%B3%B4%EB%B3%B4%ED%98%B8-8.-%EC%95%85%EC%84%B1%EC%BD%94%EB%93%9C%EC%99%80-%EB%82%9C%EB%8F%85%ED%99%94
  8. https://www.youtube.com/watch?v=BsT3TRJPq10
  9. https://repository.hanyang.ac.kr/bitstream/20.500.11754/117770/1/%EC%9E%84%EB%B2%A0%EB%94%94%EB%93%9C%20%EA%B8%B0%EA%B8%B0%20%EB%B0%94%EC%9D%B4%EB%84%88%EB%A6%AC%20%EC%B7%A8%EC%95%BD%EC%A0%90%20%EB%B6%84%EC%84%9D%20%ED%9A%A8%EC%9C%A8%EC%84%B1%20%EC%A0%9C%EA%B3%A0%EB%A5%BC%20%EC%9C%84%ED%95%9C%20%EC%A4%91%EA%B0%84%EC%96%B4%20%EB%B3%80%ED%99%98%20%EA%B8%B0%EC%88%A0.pdf
  10. https://cluberwsoh9812.tistory.com/41

 

추가 질문

- 프롬프트 : 기존 연구에서 LLVM이 제어 흐름 조작을 탐지하는 데 어떻게 활용됐는지 사례를 기반으로 제안

- 응답 : 

LLVM 기반의 제어 흐름 조작 탐지 활용 사례는 다음과 같이 제안할 수 있습니다.

  1. Control Flow Flattening 난독화 탐지
    LLVM 패스(Transform Pass)를 통해 의도적으로 제어흐름을 switch-case 및 dispatcher로 평면화하는 난독화 패턴(Control Flow Flattening)에 대한 전후의 제어 흐름 그래프(CFG) 변화를 분석함으로써, 비정상적으로 변형된 코드(난독화 본문 진입 이후 모든 블록이 한 지점으로 돌아가는 구조) 탐지 사례가 있습니다.ufo.stealien
  2. LLVM IR 기반 정적 분석
    바이너리 또는 프로그램을 LLVM IR로 리프팅한 후, 정적 분석을 통해 분기문, 루프, 함수 호출의 제어흐름을 추출·정량화하여, 자주 사용되는 분기 구조 등 비정상적인 흐름의 패턴(특정 블록에서 반복적으로 분기)를 감지하는 기법이 검증된 바 있습니다.koreascience+1
  3. 이미지 변환 + 머신러닝 모델 적용 사례
    난독화 및 조작이 적용된 바이너리를 LLVM IR로 디컴파일한 뒤, IR 코드를 이미지로 변환하고 CNN 기반 머신러닝 모델에 학습시켜 제어 흐름 변형 및 난독화 적용 여부를 판별하는 연구가 제시되었습니다.kci

이와 같이, LLVM은 IR 변환을 활용한 제어 흐름 그래프 분석, 커스텀 탐지 패스 개발, ML 기반 자동 탐지 등 다양한 방식으로 제어 흐름 조작 탐지에 활용되고 있습니다.

  1. https://ufo.stealien.com/2022-07-13/llvm-flow-flatten
  2. https://koreascience.kr/article/JAKO202211954997025.page
  3. https://repository.hanyang.ac.kr/bitstream/20.500.11754/117770/1/%EC%9E%84%EB%B2%A0%EB%94%94%EB%93%9C%20%EA%B8%B0%EA%B8%B0%20%EB%B0%94%EC%9D%B4%EB%84%88%EB%A6%AC%20%EC%B7%A8%EC%95%BD%EC%A0%90%20%EB%B6%84%EC%84%9D%20%ED%9A%A8%EC%9C%A8%EC%84%B1%20%EC%A0%9C%EA%B3%A0%EB%A5%BC%20%EC%9C%84%ED%95%9C%20%EC%A4%91%EA%B0%84%EC%96%B4%20%EB%B3%80%ED%99%98%20%EA%B8%B0%EC%88%A0.pdf
  4. https://www.kci.go.kr/kciportal/ci/sereArticleSearch/ciSereArtiView.kci?sereArticleSearchBean.artiId=ART003051747
  5. https://koreascience.kr/article/JAKO202513661203786.pdf
  6. https://www.in-com.com/ko/blog/pointer-analysis-in-c-can-static-code-analysis-solve-the-challenges/
  7. https://kiisc.or.kr/society/kiisc/homepage/bbs/downloadBoardImage?uploadedFileId=5930
  8. https://www.themoonlight.io/ko/review/irfuzzer-specialized-fuzzing-for-llvm-backend-code-generation
  9. https://grad.dankook.ac.kr/web/grad/-33?p_p_id=GradInfo_WAR_empInfoportlet&p_p_lifecycle=0&p_p_state=normal&p_p_mode=view&p_p_col_id=column-1&p_p_col_pos=2&p_p_col_count=3&_GradInfo_WAR_empInfoportlet_empId=GnEz%2FDF4fdKHQEQ3cRDkdA%3D%3D&_GradInfo_WAR_empInfoportlet_action=view_message&_GradInfo_WAR_empInfoportlet_deptId=2000002520
  10. https://m.boannews.com/html/detail.html?idx=91939
  11. https://www.dbpia.co.kr/journal/articleDetail?nodeId=NODE07503542

 

 


아이디어 종합 정리

- 다양한 방법을 통한 패턴 통계 및 정량화 방법 등의 수치적 방법의 사용

- CFG 나 FCG 추출하여 탐지에 활용

- 실제 Flattening 전후 CFG 변화를 분석, 모든 블록이 한 지점으로 돌아가는 구조를 탐지한 사례

- 바이너리를 IR로 디컴파일 한 후 IR 코드를 이미지 변환한 후 CNN 기반 머신러닝 모델에 학습, 제어 흐름 변형 및 난독화 여부 판별 연구

 


AI 별 응답 경향 차이

Chat GPT-5-thinking 

- 영어권 논문 및 블로그를 참고

- 보다 전문적이며, 난이도가 있는 내용을 소개

- 각 아이디어 당 1개 이상의 출처를 제공

 

Perplexity AI

- 한국 논문 및 블로그를 참고

- 기존 틀에서 벗어나서 다양한 시도의 연구를 소개

- 요청 사항에 비 간단한 내용 설명