처리중입니다. 잠시만 기다려주세요.
TTJ 코딩클래스
정규반 단과 자료실 테크 뉴스 코딩 퀴즈
테크 뉴스
Hacker News 2026.08.08 37

제어 흐름 그래프로 그림을 그리다: REpsych가 던지는 리버싱의 심리전

Hacker News 원문 보기

리버스 엔지니어링은 보통 방어자와 공격자 사이의 조용한 수싸움으로 그려진다. 분석가는 바이너리를 뜯어보며 코드의 의도를 재구성하고, 코드 작성자는 그 분석을 늦추거나 방해하려 한다. 크리스토퍼 도마스(Christopher Domas, @xoreaxeaxeax)가 공개한 REpsych 프로젝트는 이 대결에 조금 색다른 각도를 더한다. 프로그램의 제어 흐름 그래프(Control Flow Graph, CFG) 자체를 캔버스로 삼아, 디스어셈블러가 그려내는 그래프 위에 이미지를 새겨 넣는 개념 증명(PoC) 도구다. 프로젝트 이름이 암시하듯 이것은 기능적 방어라기보다 분석가의 심리를 겨냥한 일종의 '심리전' 실험이다.

CFG를 캔버스로 바꾸는 발상

CFG는 프로그램이 실행되는 동안 기본 블록(basic block)들이 어떻게 분기하고 이어지는지를 노드와 엣지로 표현한 그래프다. IDA Pro나 Hopper, BinNavi, radare2 같은 도구가 바이너리를 열면 함수 구조를 이 그래프 형태로 시각화해 보여준다. 분석가에게는 코드의 논리를 한눈에 파악하게 해 주는 핵심 화면이다. REpsych의 착상은 바로 이 지점을 파고든다. 그래프의 노드가 화면 위 어디에 배치되는지를 의도적으로 통제할 수 있다면, 노드들의 위치 자체가 하나의 그림을 이루도록 만들 수 있다는 것이다.

도구의 동작 방식은 발상만큼이나 직관적이다. 원본 이미지를 입력으로 받으면, 이미지의 각 픽셀에 대응하는 기본 블록을 하나씩 생성해 실제로 동작하는 프로그램을 만들어낸다. 그 결과 프로그램을 디스어셈블러로 열어 CFG를 렌더링하면, 노드들이 모여 원본 이미지가 화면에 나타난다. 소스 코드가 아니라 '실행 흐름의 형태'가 곧 메시지가 되는 셈이다. REpsych는 이 과정에서 repsych_v1과 repsych_v2라는 두 개의 프로그램을 만들어내는데, 각각 CFG 렌더러가 노드를 올바른 위치에 배치하도록 유도하는 전략이 다르다. 렌더러마다 레이아웃 알고리즘이 제각각이기 때문에 서로 다른 접근을 함께 제공하는 것이다.

픽셀 하나가 블록 하나

이 기법에는 분명한 제약이 따른다. 픽셀 수만큼 기본 블록이 생기므로 이미지가 조금만 커져도 그래프의 노드 수가 폭발적으로 늘어난다. 도구 문서가 원본 이미지를 100x100 픽셀을 넘지 않는 작은 크기로 쓰라고 권하고, 그래프 뷰어에서 허용 노드 수 상한을 늘려야 할 수 있다고 안내하는 이유다. 텍스트 이미지를 넣을 때는 먼저 2BPP 흑백 비트맵으로 변환한 뒤 다시 24BPP 비트맵으로 바꾸라는 조언도 있다. 이렇게 하면 흑백이 아닌 색을 걷어내 그래프에서 가장 또렷한 결과를 얻을 수 있다. 결국 이 기법은 정밀한 고해상도 그림이 아니라, 저해상도의 단순한 형상이나 문구를 새기는 데 적합하다.

호환성 측면에서는 도구가 시험된 모든 버전의 IDA Pro에서 안정적으로 동작한다고 소개된다. 반면 Hopper, BinNavi, radare2 같은 다른 CFG 뷰어에서는 '반쯤' 안정적으로 작동한다. 이는 각 도구가 노드 배치와 그래프 레이아웃을 계산하는 방식이 다르기 때문으로, 어느 뷰어를 쓰느냐에 따라 이미지가 깔끔하게 드러나기도 하고 흐트러지기도 한다는 뜻이다. 두 가지 버전의 프로그램을 만들어내는 설계 역시 이런 렌더러별 편차에 대응하려는 의도로 읽힌다.

'재미'와 실무 사이

도마스 본인도 이 프로젝트에 특정한 실용적 목적이 없다는 점을 분명히 한다. '할 수 있다는 것을 보여주기 위한' 개념 증명이며, DEF CON 발표에서 언급된 활용 예시들도 진지한 용도라기보다 유쾌한 아이디어에 가깝다. 그럼에도 국내 보안·리버싱 실무자가 이 실험에서 곱씹어 볼 지점은 있다. 우리가 분석 도구의 화면을 통해 얻는 정보는 원본 바이너리 그 자체가 아니라, 도구의 렌더링 알고리즘이 재구성한 '해석된 표현'이라는 사실이다. CFG처럼 신뢰하기 쉬운 시각화조차 코드 작성자에 의해 의도적으로 조형될 수 있다는 점은, 자동화된 시각 정보를 무비판적으로 받아들이는 습관에 작은 경고가 된다.

동시에 한계도 분명히 인식해야 한다. REpsych가 만들어내는 그래프 예술은 실제 악성코드 분석을 유의미하게 방해하는 난독화 기법이 아니다. 정적 분석가는 그래프의 미관과 무관하게 실행 로직을 추적할 수 있고, 픽셀당 블록을 찍어내는 방식은 오히려 비정상적으로 비대한 CFG라는 뚜렷한 흔적을 남긴다. 이 프로젝트의 가치는 방어 기법으로서의 실효성이 아니라, 도구가 만들어내는 추상화 계층을 다시 들여다보게 만드는 발상의 전환에 있다. 기법의 세부 원리와 실행 데모, 발표 슬라이드는 도마스의 DEF CON 발표 자료와 GitHub 저장소에서 확인할 수 있다.

이 뉴스가 유용했나요?

TTJ 코딩클래스 정규반

월급 외 수입,
코딩으로 만들 수 있습니다

17가지 수익 모델을 직접 실습하고, 1,300만원 상당의 자동화 도구와 소스코드를 받아가세요.

144+실전 강의
17개수익 모델
4.9수강생 평점
정규반 자세히 보기

"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"

실제 수강생 후기
  • 비전공자도 6개월이면 첫 수익
  • 20년 경력 개발자 직강
  • 자동화 프로그램 + 소스코드 제공

매일 AI·개발 뉴스를 받아보세요

주요 테크 뉴스를 매일 아침 이메일로 전해드립니다.

스팸 없이, 언제든 구독 취소 가능합니다.