본문 바로가기
IT기술노트/소프트웨어공학

코드 난독화(Code Obfuscation)

by 비트코기 2021. 2. 4.

구획 난독화, 데이터 난독화, 제어 난독화, 예방 난독화, 집단 난독화


가. 코드 난독화(Code Obfuscation)의 정의

   - 역공학을 통한 보안 취약점 공격에 대비하기 위한 기술로 코드를 복잡하게 만들어 원시코드를 알아보기 힘들게 하는 기술

나. 코드 난독화의 종류

종류

설명

소스코드 난독화

C/C++/JAVA등의 프로그램 소스 코드를 알아보기 힘든 형태로 바꾸는 기술

바이너리 난독화

컴파일 후에 생성된 바이너리를 역공학을 통해 분석하기 힘들게 변조하는 기술


II. 코드 난독화의 기술 분류 및 기법

가. 코드 난독화 기술 분류

구분

주요내용

수행방법

구획 난독화

(Layout Obfuscation)

- 프로그램에 큰 영향을 끼치지 않는 세부적 요소들을 변화, 제거

- 내용을 상당부분 훼손시켜 복원 통제

- 형식변화

- 주석제거

- 식별자 손상

데이터 난독화

(Data Obfuscation)

- 프로그램이 처리하고 잇는 변수를 나누거나 합쳐 읽기 어렵게 하는 기술

- 변수 자르기

- 정적자료의 절차적 자료화

제어 난독화

(Control Obfuscation)

- 프로그램 문장이 묶이는 단위를 조절함으로써 제어를 난독화

- 프로시저 인라인화

- 프로시저 아웃라인화

- 프로그램 실행순서 변경

- 데드코드 삽입

예방 난독화

(Preventive Obfuscation)

- 이미 알려진 역난독화 방법을 알고 그 방법을 봉쇄

- 목적방법

- 고유난독화 방법

집단 난독화

(Aggregation Obfuscation)

- 순서를 이용하여 코드를 난독화

- 자료 순서 변환

- 클래스 분할

나. 코드 난독화 기법

기법

설명

레이아웃 변환

소스 코드 상의 식별자를 의미 없는 것으로 대체하여 역공학이 힘들게 만드는 기법, 클래스나 메소드 명을 단순 알파벳으로 변환

데이터 변환

프로그램에서 사용하는 자료 구조를 변경하는 기법

- 데이터 저장, 데이터 암호화, 데이터 집합, 데이터 배열

컨트롤 변환

프로그램에서 사용하는 제어 구조를 변경하는 기법

- 컨트롤 집합(그룹화), 변환 컨트롤 배열(순서변경), 컨트롤 계산(미실행 코드 삽입)

 

반응형

댓글