코드 난독화 편집하기

IT위키

경고: 로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다. 로그인하거나 계정을 생성하면 편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.

편집을 취소할 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 게시해주세요.

최신판 당신의 편집
1번째 줄: 1번째 줄:
[[분류:보안]]
;Code Obfuscation
;Code Obfuscation


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


== 코드 난독화 유형 ==
출처 : [https://terms.tta.or.kr/ TTA 정보통신용어사전]
{| class="wikitable"
! 구분
! 설명
|-
| 배치난독화
|
* 실행파일에 포함된 문자열의 내용을 무작위 치환
|-
| 자료난독화
|
* 프로그램 내부 자료 구조 변환 또는 암호화
|-
| 제어 난독화
|
* 제어 흐름을 바꿈으로써 디컴파 난이도 향상
|-
| ㄴ계산 변환
|
* goto분의 loop중간을 가르키게 함으로써 원래의 for문으로 쉽게 디커파일 불가
|-
| ㄴ집합 변환
|
* inline/outline, 복제(cloning), 루프 해제(loop unrolling)
* 루프 조건을 추가함으로써 루프 확장
|-
| ㄴ순서 변환
|
* 분기 명령을 이용한 블록 순서 변환
* 루프 순서 변환, 수식 순서 변환 등
|-
| 디컴파일 방지
|
* 역공학도구로 사용되는 디컴파일러나 디버거 또는 무력화
* return instruction후 추가적인 instruction 삽입으로 특정 decompiler무력화
|}


== 코드 난독화 주요 기술 ==
[[분류:보안]]
{| class="wikitable"
! 기술
! 설명
|-
| 심볼정보제거
| 배치 난독화 기법으로 주로 활용, 메소드와 변수이름을 바꾸어 의미 파악 최소화
|-
| 코드암호화
| 코드를 암호키와 해독키에 의해 암호화, 해독키를 HW에 숨기는 방법
|-
| 제어흐름변환
| 계산변환, 집합변환, 순서변환활용
|-
| 순서섞기
| 명령어 순서를 바꿔 코드 난독화
|}
IT위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 라이선스로 배포된다는 점을 유의해 주세요(자세한 내용에 대해서는 IT위키:저작권 문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다. 저작권이 있는 내용을 허가 없이 저장하지 마세요!
취소 편집 도움말 (새 창에서 열림)