Core Concepts
적대적 환경에서 어셈블리 코드를 처음부터 진화시켜 과거 우승자들을 능가하는 생존자를 만들어냈다.
Abstract
이 연구에서는 적대적 환경인 CodeGuru Xtreme 대회에서 처음부터 어셈블리 코드를 진화시켜 과거 우승자들을 능가하는 생존자를 만들어냈다.
문법 기반 유전 프로그래밍(G3P)을 사용하여 어셈블리 코드를 진화시켰다. 이를 위해 어셈블리 언어에 대한 BNF 문법을 정의하고, 이를 바탕으로 추상 구문 트리(AST)를 생성하였다.
생존자를 평가하기 위해 CodeGuru 게임을 실행하고, 점수, 생존 시간, 메모리 작성 등을 고려한 복합 적합도 함수를 사용하였다.
진화 과정에서 다양한 유전 연산자를 활용하였으며, 특히 무작위 생성기 패턴을 추가하여 성능을 향상시켰다.
진화된 생존자들은 과거 우승자들의 약점을 찾아내어 이를 활용하는 모습을 보였다. 예를 들어 Zorg 2012년 우승자의 중요 코드 조각을 덮어쓰거나, 수직 및 산발적인 메모리 작성 패턴을 활용하였다.
이 연구는 사이버 보안 분야에 중요한 응용 가능성을 가지며, CodeGuru Xtreme 대회는 적대적 환경에서의 GP와 코드 진화 연구를 위한 유용한 플랫폼을 제공한다.
Stats
2012년 우승자 Zorg의 중요 코드 조각을 덮어쓰는 코드: "mov WORD [di], 0x196"
수직 메모리 작성 패턴을 보여주는 코드: "and [si +0x252], di"
산발적인 메모리 작성 패턴을 보여주는 코드: "inc WORD [bx+0x260+65535]"
Quotes
"적대적 환경에서 어셈블리 코드를 처음부터 진화시켜 과거 우승자들을 능가하는 생존자를 만들어냈다."
"진화된 생존자들은 과거 우승자들의 약점을 찾아내어 이를 활용하는 모습을 보였다."
"이 연구는 사이버 보안 분야에 중요한 응용 가능성을 가지며, CodeGuru Xtreme 대회는 적대적 환경에서의 GP와 코드 진화 연구를 위한 유용한 플랫폼을 제공한다."