코드 난독화: 두 판 사이의 차이

IT위키
편집 요약 없음
편집 요약 없음
1번째 줄: 1번째 줄:
[[분류:보안]]
;Code Obfuscation
;Code Obfuscation


프로그램 코드를 읽기 어렵게 일부 또는 전체를 변경하는 것. 난독화의 대상에 따라 크게 '소스 코드 난독화'와 '바이너리 난독화'로 나뉜다. 소스 코드 난독화는 C/C++/자바 등의 프로그램의 소스 코드를 알아보기 힘든 형태로 바꾸는 기술이고, 바이너리 난독화는 컴파일 후에 생성된 바이너리를 역공학을 통해 분석하기 힘들게 변조하는 기술이다.
프로그램 코드를 읽기 어렵게 일부 또는 전체를 변경하는 것. 난독화의 대상에 따라 크게 '소스 코드 난독화'와 '바이너리 난독화'로 나뉜다. 소스 코드 난독화는 C/C++/자바 등의 프로그램의 소스 코드를 알아보기 힘든 형태로 바꾸는 기술이고, 바이너리 난독화는 컴파일 후에 생성된 바이너리를 역공학을 통해 분석하기 힘들게 변조하는 기술이다.


출처 : [https://terms.tta.or.kr/ TTA 정보통신용어사전]
== 코드 난독화 유형 ==
{| class="wikitable"
! 구분
! 설명
|-
| 배치난독화
| 실행파일에 포함된 문자열의 내용을 바꿈
|-
| 자료난독화
| 프로그램내부 자료구조변환 또는 암호화
|-
| 제어난독화
| 제어흐름을 바꾸어 디컴파일러같은 역공학과정을 어렵게함
|-
| 방지난독화
| 역공학도구로 사용되는 디컴파일러나 디버거 또는 무력화
|}


[[분류:보안]]
== 코드 난독화 주요 기술 ==
{| class="wikitable"
! 기술
! 설명
|-
| 심볼정보제거
| 배치 난독화 기법으로 주로 활용, 메소드와 변수이름을 바꾸어 의미 파악 최소화
|-
| 코드암호화
| 코드를 암호키와 해독키에 의해 암호화, 해독키를 HW에 숨기는 방법
|-
| 제어흐름변환
| 계산변환, 집합변환, 순서변환활용
|-
| 순서섞기
| 명령어 순서를 바꿔 코드 난독화
|}

2019년 10월 27일 (일) 16:51 판

Code Obfuscation

프로그램 코드를 읽기 어렵게 일부 또는 전체를 변경하는 것. 난독화의 대상에 따라 크게 '소스 코드 난독화'와 '바이너리 난독화'로 나뉜다. 소스 코드 난독화는 C/C++/자바 등의 프로그램의 소스 코드를 알아보기 힘든 형태로 바꾸는 기술이고, 바이너리 난독화는 컴파일 후에 생성된 바이너리를 역공학을 통해 분석하기 힘들게 변조하는 기술이다.

코드 난독화 유형

구분 설명
배치난독화 실행파일에 포함된 문자열의 내용을 바꿈
자료난독화 프로그램내부 자료구조변환 또는 암호화
제어난독화 제어흐름을 바꾸어 디컴파일러같은 역공학과정을 어렵게함
방지난독화 역공학도구로 사용되는 디컴파일러나 디버거 또는 무력화

코드 난독화 주요 기술

기술 설명
심볼정보제거 배치 난독화 기법으로 주로 활용, 메소드와 변수이름을 바꾸어 의미 파악 최소화
코드암호화 코드를 암호키와 해독키에 의해 암호화, 해독키를 HW에 숨기는 방법
제어흐름변환 계산변환, 집합변환, 순서변환활용
순서섞기 명령어 순서를 바꿔 코드 난독화