분류 전체보기 20

Virtualize asm 코드 분할 및 라벨링 자동화

코드 생성에는 GPT를 활용하였다.문제 상황Virtualize 난독화가 적용된 asm 코드를 입력으로 하여 코드를 분할하고 라벨링을 자동화 할 수 있는 코드 생성 가정입력 : Virtualize 난독화가 적용된 asm 코드출력 : 분할된 asm 코드 집합 + labeling된 데이터요구사항 : "call"을 기준으로 코드 분할 위 상황에 대해 구체적인 문제에 대입 가능하도록 하는 코드 초안을 생성 사용된 원본 .c 코드는 약 4KB 코드를 사용하였으며, Virtualize 난독화를 적용한 후에는 약 695KB의 코드가 되었다. Python Code 생성직접 pass를 사용하고 생성하는 것을 바로 하기에는 힘들 것으로 보여 python code를 1차적으로 생성하고, 요구사항에 맞춰서 수정하였다. p..

카테고리 없음 2025.09.24

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

목표LLVM에 대한 기초적인 PASS 생성 정도의 지식 수준에서 현재 진행 중인 프로젝트에 적용 방법을 고안하는 것에 한계를 느끼고, 구글링을 통해 정보를 얻어내는 방법도 있으나, AI를 활용함으로써 더 양질의 정보를 빠르게 얻어보고자 한다. 2025 AI 여름방학 특강에서 배운 프롬프트 작성 방법을 활용해 AI에게 아이디어를 생성시켜 프로젝트의 진행 방향을 모색할 수 있도록 한다. 대상 Chat GPT-5-thinking 과 Perplexity AI에서 쿼리에 따른 최적 모델을 사용하도록 설정하여 생성시켰다. Chat GPT 는 가장 보편적인 생성형 AI이고, Perplexity AI는 정보 검색에 뛰어난 성능을 보인다는 것을 사유로 두 AI를 선정하였다. 프롬프트 다음 프롬프트는 특강 중 AI..

카테고리 없음 2025.08.19

[LLVM tutorial] 01 ~ 02

LLVM tutorial이 글은 LLVM tutorial의 아래 두 챕터를 바탕으로 정리한 글이다. https://llvm.org/docs/tutorial/MyFirstLanguageFrontend/LangImpl01.html 1. Kaleidoscope: Kaleidoscope Introduction and the Lexer — LLVM 21.0.0git documentationThis tutorial is illustrated with a toy language called “Kaleidoscope” (derived from “meaning beautiful, form, and view”). Kaleidoscope is a procedural language that allows you to defi..

카테고리 없음 2025.07.08

원격 접속해서 코드 난독화하기

노트북에서의 한계개인 노트북으로 .c 코드를 난독화 및 컴파일하여 데이터셋을 만드는 과정을 수행했었다.그런데 데이터셋 규모가 커지면서 하드 용량이 4GB 밖에 남지 않는 상황에 놓이게 되어, 더 이상 개인 노트북으로는 감당이 어렵게되었다.이를 해결하기 위해 연구실 컴퓨터를 요청하여 원격 접속으로 난독화를 수행하기로 했다. SSH로 원격 접속하기https://winterbloooom.github.io/computer%20science/linux/2022/03/22/ssh.html [Ubuntu] SSH로 원격접속 하기 | winterblooom (EunGi Han)사용 환경 서버: Ndivia Jetson AGX Xavier, Ubuntu 18.04 LTS 클라이언트: 일반 노트북, Ubuntu 18.0..

카테고리 없음 2025.05.16

LLM switch문 탐지 여부 분석 - Vitualize + a

난독화 도구 : tigress Environment : x86_64, Linux, Gcc난독화 기법 : Virtualize + [ EncodeLiterals, OpaquePredicate, Split ]사용한 코드 : test_loops_arrays.ctest_recursion.ctest_struct.ctest_file_io.ctest_multithreading.c LLM : Claude 3.7질문 내용 : 이 코드는 switch 문을 사용했니? 예 아니오로 답하고, 근거를 들어줘. 분석 결과Virtualize만 적용했던 난독화 코드를 기준으로 각각의 난독화를 중첩했을 때 Claude가 대답한 결과이다. Claude 대답 분석 test_struct.c - Vitualize + EncodeLiterals ..

카테고리 없음 2025.05.09

LLVM Pass 따라해보기

지난번 " Ubuntu에서 LLVM 설치 및 빌드하기 "에서 환경변수부터 다시 시작하도록 한다. 환경 변수 설정 및 추가 빌드지난번 환경 변수 설정에서 설정값이 잘못된 것을 확인하고 이를 바꿔줬다. ~/.bashrc 파일을 열어 다음 명령어를 추가하고 저장해준다.export LLVM_BASE_DIR=/root/LLVM/llvm-projectexport LLVM_SRC=$LLVM_BASE_DIR/llvmexport LLVM_OBJ=$LLVM_BASE_DIR/buildexport LLVM_DIR=$LLVM_BASE_DIR/build # CMake용export PATH=$LLVM_OBJ/bin:$PATH .bashrc 파일의 변경 사항을 바로 적용하기 위해 터미널에 다음 명령어를 입력한다.source ~..

카테고리 없음 2025.05.09

Ubuntu에서 LLVM 설치 및 빌드하기

LLVM InstallLLVM 다운로드는 다음 링크에서 하거나 "llvm download" 라고 검색하면 동일한 페이지로 진입할 수 있다. https://releases.llvm.org/download.html LLVM Download PageIf you'd like access to the "latest and greatest" in LLVM development, please see the instructions for accessing the LLVM Git Repository. The major changes and improvements that the development version contains relative to the previous release are listed ireleas..

카테고리 없음 2025.05.02

난독화 list 조사

loop-switch 구조에 효과적일 수 있는 난독화에 대해 조사하고난독화 사용에 있어 효과적인 난독화 조합에 대해서도 조사하였다.조사에는 Gpt의 도움을 받았다. 난독화 기법바이너리 코드에 대한 분석을 하는 것을 감안,단독으로 사용될 수 있는 난독화보다는 조합적으로 사용할 수 있는 난독화에 대해 조사하였다. 1. EncodeLiterals - 핵심 효과 : 흐름 제어에 쓰이는 키값들을 정적으로는 해석할 수 없도록 인코딩- switch case의 분기 키나 VM opcode 식별값이 숨겨지면 flow recovery가 어려움 2. DeadCode- 핵심 효과 : 실행되지 않는 (죽은) 코드를 프로그램에 삽입해서 혼란스럽게 만듦- switch 흐름을 직접적으로 교란하진 않지만, flatten된 구조에 간..

카테고리 없음 2025.05.02