Reverse Engineering Basic

2009.10.27

㈜ 안철수연구소
ASEC (AhnLab Security Emergency response Center)
Anti-Virus Researcher, CISSP

장 영 준 주임 연구원
목 차
1. Reverse Engineering
2. Low Level Software와 Compiler Basic

3. Reverse Engineering과 법적 문제

Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
1. Reverse Engineering

Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
1. Reverse Engineering
1) Reverse Engineering (1)
1) Reverse Engineering은 인공적으로 만들어진 사물(자동차, 제트 엔진, 소프트웨어
프로그램 등)을 분해해서 설계나 구조와 같은 세밀한 사항들을 분석 하는 과정

4

Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
1. Reverse Engineering
1) Reverse Engineering (2)
1) Reverse Engineering은 약어로 RE (Reverse Engineering) 또는 RCE (Reverse
Code Engineering)로 이야기 함

5

Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
1. Reverse Engineering
2) Software Reverse Engineering
1) Software Reverse Engineering은 소스코드나 관련 문서가 없는 프로그램에서 설
계나 구현 내용을 알아내는 작업
2) Software Reverse Engineering 범위
* 보안 – 악성 코드 분석, 암호화 알고리즘 분석, 프로그램 바이너리 감사
* 소프트웨어 개발 – 소프트웨어 상호 운용 검증, 소프트웨어 품질 및 안정성 검증

6

Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
1. Reverse Engineering
3) Reverse Engineering Process
1) Reverse Engineering Process

* 동적 분석 (Dynamic Analysis, System Level Reversing)
각종 툴과 운영체제의 다양한 서비스를 이용해서 프로그램 실행 파일과 입출력 값
등을 조사해서 정보를 분석하는 일련의 과정
* 정적 분석 (Static Analysis, Code Level Reversing)
소프트웨어 개발 및 CPU와 운영체제에 대한 깊은 이해를 바탕으로 Low Level에서
소프트웨어가 어떻게 동작하는지 분석하는 일련의 과정

동적 분석 (Dynamic Analysis)
분석

7

 정적 분석 (Static Analysis)

프로세스

Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
1. Reverse Engineering
4) Reverse Engineering Tools
1) Reverse Engineering Tools

* System Monitoring Tools
리버싱 대상 어플리케이션과 동작 환경에 대해 수집된 정보들인 네트워킹, 파일 접
근, 레지스트리 젒근, 뮤텍스, 파이프, 이벤트 등의 정보들을 보여주는 유틸리티
* Disassembler와 Debugger
Disassembler – 프로그램의 실행 바이너리를 입력 받아 전체나 일부분을 어셈블리
언어 코드로 변환 해주는 프로그램
Debugger – 실행 중인 프로그램의 코드를 추적할 수 있도록 해주는 프로그램

8

Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
2. Low Level Software와 Compiler Basic

Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
2. Low Level Software와 Compiler Basic
1) Software Language
1) High Level Language
하이 레벨 언어는 컴파일러나 인터프리터에 의해 저급언어로 번역되어 실행
프로그램이 동작할 플랫폼과 대부분의 프로그래머들에게는 로우 레벨의 세부적인
사항들을 고려할 필요 없이 소프트웨어를 개발 가능하도록 함
하이 레벨 언어는 프로그래머가 하드웨어와 하드웨어의 세부사항들을 최대한 고려
하지 않도록 지원
C, C++, JAVA 그리고 C#
2) Low Level Language
로우 레벨 언어는 시스템에 기반하여 하드웨어를 직접적으로 제어가 가능한 언어
기계어, Assembly

10

Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
2. Low Level Software와 Compiler Basic
2) Low Level Data 처리 (1)
1) Low Level Data 처리
하이 레벨 언어와 로우 레벨 언어 사이의 가장 큰 차이점 중 하나는 데이터 처리 방
식
로우 레벨 언어의 데이터 처리 중요 요소는 Register, Stack과 Heap
2) Heap
Heap은 실행 중에 메모리 블록을 다양한 크기로 동적 할당 할 수 있게 관리되는 메
모리 영역
Heap은 전형적으로 프로그램이 사용하는 가변 크기의 객체나 스택을 이용하기에는
너무 큰 크기의 객체를 위해 사용

11

Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
2. Low Level Software와 Compiler Basic
2) Low Level Data 처리 (2)
3) Register
레지스터는 프로세스 안에 존재하는 내부 메
모리의 작은 모임이며 매우 쉽게 성능상의 저
하 없이 접근이 가능
* 범용 IA-32 레지스트러
EAX, EBX, EDX – 정수 연산, 부울 연산, 논리 연
산과 메모리 연산에 모두 사용 가능
ECX – 카운팅이 필요한 연속적인 명령에 대한
카운터로 사용
ESI/EDI – 메모리 복사 명령에서 복사 될 대상
의 주소와 복사가 수행될 목적지의 주소 포인
터로 사용
EBP – 범용 레지스터로 사용할 수 있지만 스택
베이스 포인터로 가장 많이 사용

ESP – CPU Stack 포인터로 사용
12

Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
2. Low Level Software와 Compiler Basic
2) Low Level Data 처리 (3)
4) Stack
Stack은 프로그램이나 CPU가 비교적 짧은 기간 동안 정보를 저장하기 위해서 사용
하는 프로그램 메모리의 일부분, 짧은 기간 동안 유지되는 정보를 위한 보조적인 저
장 공간
Register는 순간적인 데이터 저장을 위해 사용하나 Stack은 조금 더 오래 유지를
위해 되는 정보를 위해 사용

13

Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
2. Low Level Software와 Compiler Basic
3) Compiler Basic
1) Compiler
Compiler는 프로그램에 대한 하나의 표현을 입력으로 받아들여 그 프로그램을 다
른 표현으로 만들어 내는 것.
컴파일러는 사람이 읽을 수 있는 형태의 하이 레벨 언어로 작성된 프로그램을 기계
가 읽을 수 있는 형태인 로우 레벨 형태로 변화하는 과정
2) Compiler 아키텍처
일반적으로 3개의 기본 요소로 구성
Front End – 프로그램 텍스트를 해석해서 구분이 올바른지, 사용한 프로그래밍 언
어의 규약대로 작성되었는지 확인
Optimizer – 프로그램 코드의 원래 의미를 유지시키면서 코드 성능을 최고로 향상
시키고 최대한 프로그램 바이너리의 크기를 줄임
Back End – Code Generator라고도 하며 최적화기에 의해 생성된 코드를 플랫폼
에 맞는 바이너리 생성

14

Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
2. Low Level Software와 Compiler Basic
4) Compile Process

컴파일

링크

가독성이 있는 소스코드
심볼과 바이너리 코드
바이너리 코드

15

Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
2. Low Level Software와 Compiler Basic
5) Compile에 의해 생성된 결과물

16

Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
2. Low Level Software와 Compiler Basic
6) Decompile Process

디스어셈블리

디컴파일

바이너리 코드
리버싱 가능한 어셈블리 코드
가독성 있는 소스 코드

17

Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
2. Low Level Software와 Compiler Basic
5) Decompile에 의해 생성된 결과물

18

Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
3. Reverse Engineering과 법적 문제

Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
3. Reverse Engineering과 법적 문제
1) 국내 정보 통신 관련 법률
1) 컴퓨터 프로그램 보호법 12조 2항 (프로그램 코드 역 분석)

* 정당한 권원에 의하여 프로그램을 사용하는 자 또는 그의 허락을 받은 자가 호환
에 필요한 정보를 쉽게 얻을 수 없고 그 획득이 불가피한 경우 당해 프로그램의 호
환에 필요한 부분에 한하여 프로그램 저작권자의 허락을 받지 아니하고 프로그램
코드 역 분석을 할 수 있다.
* 제1항의 규정에 의한 프로그램 코드 역 분석을 통하여 얻은 정보는 다음 각호의 1
에 해당하는 경우에는 이를 사용할 수 없다.
- 호환 목적 외의 다른 목적을 위하여 이용하거나 제 3자에게 제공하는 경우
- 프로그램 코드 역 분석의 대상이 되는 프로그램과 표현이 실질적으로 유사한 프
로그램을 개발, 제작, 판매하거나 기타의 프로그램 저작권을 침해하는 행위에 이용
하는 경우

20

Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
3. Reverse Engineering과 법적 문제
2) 불법적인 행위들
1) 불법적인 행위들 사례

* 불법으로 리버싱을 한 후 경쟁사에 정보를 넘기는 행위
* 저작권으로 보호되는 제품을 크랙하는 행위
* 저작권으로 보호되는 제품의 인증을 무력화하는 행위 또는 유포하는 행위

* 불법으로 허가되지 않은 시스템의 인증을 획득하는 행위

21

Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
* Reference

1) 리버싱 리버스 엔지니어링 비밀을 파헤치다
2) 리버스엔지니어링 역분석 구조와 원리
3) 소프트웨어 보안 코드 깨부수기
4) 소프트웨어 보안 검사 기술

22

Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
AhnLab
The Joy of Care-Free Your Internet World

Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
AhnLab, the AhnLab logo, and V3 are trademarks or registered trademarks of AhnLab, Inc.,
in Korea and certain other countries. All other trademarks mentioned in this document are the property of their respective owners.

23

Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.

More Related Content

PDF
악성코드와 개인 정보 보호
PDF
보안 위협과 악성코드 분석 기법
PDF
악성 코드와 보안 위협 동향
PDF
보안 위협과 악성코드 분석 기법
PDF
5. system level reversing
PDF
Memory forensics with volatility
PDF
보안 위협과 악성코드 분석 기법
PDF
보안 위협 동향과 대응 방안
악성코드와 개인 정보 보호
보안 위협과 악성코드 분석 기법
악성 코드와 보안 위협 동향
보안 위협과 악성코드 분석 기법
5. system level reversing
Memory forensics with volatility
보안 위협과 악성코드 분석 기법
보안 위협 동향과 대응 방안

What's hot (20)

PDF
1. 2009년 상반기 보안 위협 동향
PDF
악성코드와 기업의 악성코드 대응
PDF
보안 위협 형태와 악성코드 분석 기법
PDF
악성코드 분석 도구
PDF
악성코드와 분석 방안
PDF
Windows Vista Security
PDF
APT Case Study
PDF
보안 위협 동향과 대응 방안
PDF
2007년 6월 악성코드 최신 동향과 대응
PDF
2. 악성코드 동적 분석 방법론
PDF
클라우드 서비스를 이용한 APT 대응
PDF
3.ahn report를 이용한 악성코드 대응
PDF
1. 보안 위협 동향과 주요 보안 위협 특징
PDF
1.악성코드 최신 동향과 기법
PDF
악성코드 최신 동향과 기법
PDF
악성코드와 시스템 복구
PDF
1. 악성코드 진단 기법 개론
PDF
악성코드와 분석 방안
PDF
3. 악성코드 분석 사례
PDF
악성코드 동향 및 대응 방안
1. 2009년 상반기 보안 위협 동향
악성코드와 기업의 악성코드 대응
보안 위협 형태와 악성코드 분석 기법
악성코드 분석 도구
악성코드와 분석 방안
Windows Vista Security
APT Case Study
보안 위협 동향과 대응 방안
2007년 6월 악성코드 최신 동향과 대응
2. 악성코드 동적 분석 방법론
클라우드 서비스를 이용한 APT 대응
3.ahn report를 이용한 악성코드 대응
1. 보안 위협 동향과 주요 보안 위협 특징
1.악성코드 최신 동향과 기법
악성코드 최신 동향과 기법
악성코드와 시스템 복구
1. 악성코드 진단 기법 개론
악성코드와 분석 방안
3. 악성코드 분석 사례
악성코드 동향 및 대응 방안
Ad

Viewers also liked (10)

PDF
2.악성코드와 분석 방안
PDF
3. windows system과 rootkit
PDF
2. windows system과 file format
PDF
2. 악성코드 분석 방법론과 기법
PDF
1. 악성코드 진단 기법 개론
PDF
2. 악성코드 분석 방법론과 기법
PDF
중국 It문화와 해커
PDF
2.악성 코드와 최근의 동향
PDF
6. code level reversing
PDF
3. 악성코드 분석 사례
2.악성코드와 분석 방안
3. windows system과 rootkit
2. windows system과 file format
2. 악성코드 분석 방법론과 기법
1. 악성코드 진단 기법 개론
2. 악성코드 분석 방법론과 기법
중국 It문화와 해커
2.악성 코드와 최근의 동향
6. code level reversing
3. 악성코드 분석 사례
Ad

Similar to 4. reverse engineering basic (20)

PPTX
01. Computer System Basics with C Language
PDF
왜 개발자는 컴퓨터공학을 공부해야 할까? (비전공자는 컴퓨터공학 과목에서 무엇을 알아야할까?)
PDF
컴파일러 Ch01
PDF
[TECHCON 2019: MOBILE - Android]7.20분만에 만들어보는 라이브 방송 앱
PDF
소프트웨어 관련 특허 명세서의 검토 포인트
PPTX
NDC2018 안드로이드+유니티 네이티브 프로파일링 삽질기
PDF
임베디드 소프트웨어 개발에 아키텍처 프랙티스 도입
PDF
[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드
PPTX
kics2013-winter-biomp-slide-20130127-1340
PDF
초보 개발자/학생들을 위한 오픈소스 트랜드
PDF
프로그래밍 언어의 기본 개념과 주요 프로그래밍 언어
PPT
정품Sw사용설명회 200908
PPTX
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
PDF
App check pro_표준제안서_z
PPTX
처음 시작하는 라라벨
PPTX
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
PDF
소프트웨어 특허를 받을 수 있는 아이디어
PPTX
Infra as Code with Packer, Ansible and Terraform
PDF
웹 애플리케이션 로그 분석 - REAL-TIME INSIGHT SOLUTION
PPTX
Windows reversing study_basic_8
 
01. Computer System Basics with C Language
왜 개발자는 컴퓨터공학을 공부해야 할까? (비전공자는 컴퓨터공학 과목에서 무엇을 알아야할까?)
컴파일러 Ch01
[TECHCON 2019: MOBILE - Android]7.20분만에 만들어보는 라이브 방송 앱
소프트웨어 관련 특허 명세서의 검토 포인트
NDC2018 안드로이드+유니티 네이티브 프로파일링 삽질기
임베디드 소프트웨어 개발에 아키텍처 프랙티스 도입
[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드
kics2013-winter-biomp-slide-20130127-1340
초보 개발자/학생들을 위한 오픈소스 트랜드
프로그래밍 언어의 기본 개념과 주요 프로그래밍 언어
정품Sw사용설명회 200908
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
App check pro_표준제안서_z
처음 시작하는 라라벨
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
소프트웨어 특허를 받을 수 있는 아이디어
Infra as Code with Packer, Ansible and Terraform
웹 애플리케이션 로그 분석 - REAL-TIME INSIGHT SOLUTION
Windows reversing study_basic_8
 

More from Youngjun Chang (9)

PDF
IT보안과 사회공학(Social Engineering)
PDF
Volatility를 이용한 memory forensics
PDF
Apt(advanced persistent threat) 공격의 현재와 대응 방안
PDF
2011년 보안 이슈와 2012년 보안 위협 예측
PDF
보안 위협 동향과 대응 방안
PDF
SNS 보안 위협 사례
PDF
2010년 상반기 보안 위협 동향과 주요 보안 위협
PDF
악성코드와 개인 정보 보호
PDF
중국 보안 위협 동향
IT보안과 사회공학(Social Engineering)
Volatility를 이용한 memory forensics
Apt(advanced persistent threat) 공격의 현재와 대응 방안
2011년 보안 이슈와 2012년 보안 위협 예측
보안 위협 동향과 대응 방안
SNS 보안 위협 사례
2010년 상반기 보안 위협 동향과 주요 보안 위협
악성코드와 개인 정보 보호
중국 보안 위협 동향

4. reverse engineering basic

  • 1. Reverse Engineering Basic 2009.10.27 ㈜ 안철수연구소 ASEC (AhnLab Security Emergency response Center) Anti-Virus Researcher, CISSP 장 영 준 주임 연구원
  • 2. 목 차 1. Reverse Engineering 2. Low Level Software와 Compiler Basic 3. Reverse Engineering과 법적 문제 Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
  • 3. 1. Reverse Engineering Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
  • 4. 1. Reverse Engineering 1) Reverse Engineering (1) 1) Reverse Engineering은 인공적으로 만들어진 사물(자동차, 제트 엔진, 소프트웨어 프로그램 등)을 분해해서 설계나 구조와 같은 세밀한 사항들을 분석 하는 과정 4 Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
  • 5. 1. Reverse Engineering 1) Reverse Engineering (2) 1) Reverse Engineering은 약어로 RE (Reverse Engineering) 또는 RCE (Reverse Code Engineering)로 이야기 함 5 Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
  • 6. 1. Reverse Engineering 2) Software Reverse Engineering 1) Software Reverse Engineering은 소스코드나 관련 문서가 없는 프로그램에서 설 계나 구현 내용을 알아내는 작업 2) Software Reverse Engineering 범위 * 보안 – 악성 코드 분석, 암호화 알고리즘 분석, 프로그램 바이너리 감사 * 소프트웨어 개발 – 소프트웨어 상호 운용 검증, 소프트웨어 품질 및 안정성 검증 6 Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
  • 7. 1. Reverse Engineering 3) Reverse Engineering Process 1) Reverse Engineering Process * 동적 분석 (Dynamic Analysis, System Level Reversing) 각종 툴과 운영체제의 다양한 서비스를 이용해서 프로그램 실행 파일과 입출력 값 등을 조사해서 정보를 분석하는 일련의 과정 * 정적 분석 (Static Analysis, Code Level Reversing) 소프트웨어 개발 및 CPU와 운영체제에 대한 깊은 이해를 바탕으로 Low Level에서 소프트웨어가 어떻게 동작하는지 분석하는 일련의 과정 동적 분석 (Dynamic Analysis) 분석 7  정적 분석 (Static Analysis) 프로세스 Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
  • 8. 1. Reverse Engineering 4) Reverse Engineering Tools 1) Reverse Engineering Tools * System Monitoring Tools 리버싱 대상 어플리케이션과 동작 환경에 대해 수집된 정보들인 네트워킹, 파일 접 근, 레지스트리 젒근, 뮤텍스, 파이프, 이벤트 등의 정보들을 보여주는 유틸리티 * Disassembler와 Debugger Disassembler – 프로그램의 실행 바이너리를 입력 받아 전체나 일부분을 어셈블리 언어 코드로 변환 해주는 프로그램 Debugger – 실행 중인 프로그램의 코드를 추적할 수 있도록 해주는 프로그램 8 Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
  • 9. 2. Low Level Software와 Compiler Basic Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
  • 10. 2. Low Level Software와 Compiler Basic 1) Software Language 1) High Level Language 하이 레벨 언어는 컴파일러나 인터프리터에 의해 저급언어로 번역되어 실행 프로그램이 동작할 플랫폼과 대부분의 프로그래머들에게는 로우 레벨의 세부적인 사항들을 고려할 필요 없이 소프트웨어를 개발 가능하도록 함 하이 레벨 언어는 프로그래머가 하드웨어와 하드웨어의 세부사항들을 최대한 고려 하지 않도록 지원 C, C++, JAVA 그리고 C# 2) Low Level Language 로우 레벨 언어는 시스템에 기반하여 하드웨어를 직접적으로 제어가 가능한 언어 기계어, Assembly 10 Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
  • 11. 2. Low Level Software와 Compiler Basic 2) Low Level Data 처리 (1) 1) Low Level Data 처리 하이 레벨 언어와 로우 레벨 언어 사이의 가장 큰 차이점 중 하나는 데이터 처리 방 식 로우 레벨 언어의 데이터 처리 중요 요소는 Register, Stack과 Heap 2) Heap Heap은 실행 중에 메모리 블록을 다양한 크기로 동적 할당 할 수 있게 관리되는 메 모리 영역 Heap은 전형적으로 프로그램이 사용하는 가변 크기의 객체나 스택을 이용하기에는 너무 큰 크기의 객체를 위해 사용 11 Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
  • 12. 2. Low Level Software와 Compiler Basic 2) Low Level Data 처리 (2) 3) Register 레지스터는 프로세스 안에 존재하는 내부 메 모리의 작은 모임이며 매우 쉽게 성능상의 저 하 없이 접근이 가능 * 범용 IA-32 레지스트러 EAX, EBX, EDX – 정수 연산, 부울 연산, 논리 연 산과 메모리 연산에 모두 사용 가능 ECX – 카운팅이 필요한 연속적인 명령에 대한 카운터로 사용 ESI/EDI – 메모리 복사 명령에서 복사 될 대상 의 주소와 복사가 수행될 목적지의 주소 포인 터로 사용 EBP – 범용 레지스터로 사용할 수 있지만 스택 베이스 포인터로 가장 많이 사용 ESP – CPU Stack 포인터로 사용 12 Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
  • 13. 2. Low Level Software와 Compiler Basic 2) Low Level Data 처리 (3) 4) Stack Stack은 프로그램이나 CPU가 비교적 짧은 기간 동안 정보를 저장하기 위해서 사용 하는 프로그램 메모리의 일부분, 짧은 기간 동안 유지되는 정보를 위한 보조적인 저 장 공간 Register는 순간적인 데이터 저장을 위해 사용하나 Stack은 조금 더 오래 유지를 위해 되는 정보를 위해 사용 13 Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
  • 14. 2. Low Level Software와 Compiler Basic 3) Compiler Basic 1) Compiler Compiler는 프로그램에 대한 하나의 표현을 입력으로 받아들여 그 프로그램을 다 른 표현으로 만들어 내는 것. 컴파일러는 사람이 읽을 수 있는 형태의 하이 레벨 언어로 작성된 프로그램을 기계 가 읽을 수 있는 형태인 로우 레벨 형태로 변화하는 과정 2) Compiler 아키텍처 일반적으로 3개의 기본 요소로 구성 Front End – 프로그램 텍스트를 해석해서 구분이 올바른지, 사용한 프로그래밍 언 어의 규약대로 작성되었는지 확인 Optimizer – 프로그램 코드의 원래 의미를 유지시키면서 코드 성능을 최고로 향상 시키고 최대한 프로그램 바이너리의 크기를 줄임 Back End – Code Generator라고도 하며 최적화기에 의해 생성된 코드를 플랫폼 에 맞는 바이너리 생성 14 Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
  • 15. 2. Low Level Software와 Compiler Basic 4) Compile Process 컴파일 링크 가독성이 있는 소스코드 심볼과 바이너리 코드 바이너리 코드 15 Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
  • 16. 2. Low Level Software와 Compiler Basic 5) Compile에 의해 생성된 결과물 16 Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
  • 17. 2. Low Level Software와 Compiler Basic 6) Decompile Process 디스어셈블리 디컴파일 바이너리 코드 리버싱 가능한 어셈블리 코드 가독성 있는 소스 코드 17 Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
  • 18. 2. Low Level Software와 Compiler Basic 5) Decompile에 의해 생성된 결과물 18 Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
  • 19. 3. Reverse Engineering과 법적 문제 Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
  • 20. 3. Reverse Engineering과 법적 문제 1) 국내 정보 통신 관련 법률 1) 컴퓨터 프로그램 보호법 12조 2항 (프로그램 코드 역 분석) * 정당한 권원에 의하여 프로그램을 사용하는 자 또는 그의 허락을 받은 자가 호환 에 필요한 정보를 쉽게 얻을 수 없고 그 획득이 불가피한 경우 당해 프로그램의 호 환에 필요한 부분에 한하여 프로그램 저작권자의 허락을 받지 아니하고 프로그램 코드 역 분석을 할 수 있다. * 제1항의 규정에 의한 프로그램 코드 역 분석을 통하여 얻은 정보는 다음 각호의 1 에 해당하는 경우에는 이를 사용할 수 없다. - 호환 목적 외의 다른 목적을 위하여 이용하거나 제 3자에게 제공하는 경우 - 프로그램 코드 역 분석의 대상이 되는 프로그램과 표현이 실질적으로 유사한 프 로그램을 개발, 제작, 판매하거나 기타의 프로그램 저작권을 침해하는 행위에 이용 하는 경우 20 Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
  • 21. 3. Reverse Engineering과 법적 문제 2) 불법적인 행위들 1) 불법적인 행위들 사례 * 불법으로 리버싱을 한 후 경쟁사에 정보를 넘기는 행위 * 저작권으로 보호되는 제품을 크랙하는 행위 * 저작권으로 보호되는 제품의 인증을 무력화하는 행위 또는 유포하는 행위 * 불법으로 허가되지 않은 시스템의 인증을 획득하는 행위 21 Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
  • 22. * Reference 1) 리버싱 리버스 엔지니어링 비밀을 파헤치다 2) 리버스엔지니어링 역분석 구조와 원리 3) 소프트웨어 보안 코드 깨부수기 4) 소프트웨어 보안 검사 기술 22 Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.
  • 23. AhnLab The Joy of Care-Free Your Internet World Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved. AhnLab, the AhnLab logo, and V3 are trademarks or registered trademarks of AhnLab, Inc., in Korea and certain other countries. All other trademarks mentioned in this document are the property of their respective owners. 23 Copyright (C) AhnLab, Inc. 1988-2009. All rights reserved.