SlideShare une entreprise Scribd logo
1  sur  23
Télécharger pour lire hors ligne
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.

Contenu connexe

Tendances

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

Tendances (20)

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

En vedette

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

En vedette (10)

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

Similaire à 4. reverse engineering basic

왜 개발자는 컴퓨터공학을 공부해야 할까? (비전공자는 컴퓨터공학 과목에서 무엇을 알아야할까?)
왜 개발자는 컴퓨터공학을 공부해야 할까? (비전공자는 컴퓨터공학 과목에서 무엇을 알아야할까?)왜 개발자는 컴퓨터공학을 공부해야 할까? (비전공자는 컴퓨터공학 과목에서 무엇을 알아야할까?)
왜 개발자는 컴퓨터공학을 공부해야 할까? (비전공자는 컴퓨터공학 과목에서 무엇을 알아야할까?)Covenant Ko
 
컴파일러 Ch01
컴파일러 Ch01컴파일러 Ch01
컴파일러 Ch01Hankyo
 
[TECHCON 2019: MOBILE - Android]7.20분만에 만들어보는 라이브 방송 앱
[TECHCON 2019: MOBILE - Android]7.20분만에 만들어보는 라이브 방송 앱[TECHCON 2019: MOBILE - Android]7.20분만에 만들어보는 라이브 방송 앱
[TECHCON 2019: MOBILE - Android]7.20분만에 만들어보는 라이브 방송 앱NAVER Engineering
 
소프트웨어 관련 특허 명세서의 검토 포인트
소프트웨어 관련 특허 명세서의 검토 포인트소프트웨어 관련 특허 명세서의 검토 포인트
소프트웨어 관련 특허 명세서의 검토 포인트Seung-won CHAE
 
NDC2018 안드로이드+유니티 네이티브 프로파일링 삽질기
NDC2018 안드로이드+유니티 네이티브 프로파일링 삽질기NDC2018 안드로이드+유니티 네이티브 프로파일링 삽질기
NDC2018 안드로이드+유니티 네이티브 프로파일링 삽질기Jaeseung Ha
 
임베디드 소프트웨어 개발에 아키텍처 프랙티스 도입
임베디드 소프트웨어 개발에 아키텍처 프랙티스 도입임베디드 소프트웨어 개발에 아키텍처 프랙티스 도입
임베디드 소프트웨어 개발에 아키텍처 프랙티스 도입Chanjin Park
 
[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드
[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드
[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드NAVER Engineering
 
kics2013-winter-biomp-slide-20130127-1340
kics2013-winter-biomp-slide-20130127-1340kics2013-winter-biomp-slide-20130127-1340
kics2013-winter-biomp-slide-20130127-1340Samsung Electronics
 
초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드 초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드 YoungSu Son
 
프로그래밍 언어의 기본 개념과 주요 프로그래밍 언어
프로그래밍 언어의 기본 개념과 주요 프로그래밍 언어프로그래밍 언어의 기본 개념과 주요 프로그래밍 언어
프로그래밍 언어의 기본 개념과 주요 프로그래밍 언어Bizmerce Corp
 
정품Sw사용설명회 200908
정품Sw사용설명회 200908정품Sw사용설명회 200908
정품Sw사용설명회 200908yyy092
 
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법복연 이
 
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravelXECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravelXpressEngine
 
처음 시작하는 라라벨
처음 시작하는 라라벨처음 시작하는 라라벨
처음 시작하는 라라벨KwangSeob Jeong
 
소프트웨어 특허를 받을 수 있는 아이디어
소프트웨어 특허를 받을 수 있는 아이디어소프트웨어 특허를 받을 수 있는 아이디어
소프트웨어 특허를 받을 수 있는 아이디어Seung-won CHAE
 
Infra as Code with Packer, Ansible and Terraform
Infra as Code with Packer, Ansible and TerraformInfra as Code with Packer, Ansible and Terraform
Infra as Code with Packer, Ansible and TerraformInho Kang
 
웹 애플리케이션 로그 분석 - REAL-TIME INSIGHT SOLUTION
웹 애플리케이션 로그 분석 - REAL-TIME INSIGHT SOLUTION웹 애플리케이션 로그 분석 - REAL-TIME INSIGHT SOLUTION
웹 애플리케이션 로그 분석 - REAL-TIME INSIGHT SOLUTIONKOPENS .Inc
 
Windows reversing study_basic_8
Windows reversing study_basic_8Windows reversing study_basic_8
Windows reversing study_basic_8Jinkyoung Kim
 
안드로이드 와 디바이스 드라이버 적용 기법
안드로이드 와 디바이스 드라이버 적용 기법안드로이드 와 디바이스 드라이버 적용 기법
안드로이드 와 디바이스 드라이버 적용 기법chon2010
 

Similaire à 4. reverse engineering basic (20)

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

Plus de Youngjun Chang

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

Plus de Youngjun Chang (9)

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

Dernier

A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)Tae Young Lee
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Wonjun Hwang
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionKim Daeun
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Wonjun Hwang
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Kim Daeun
 

Dernier (6)

A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 

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.