Your SlideShare is downloading. ×
0
4. reverse engineering basic
4. reverse engineering basic
4. reverse engineering basic
4. reverse engineering basic
4. reverse engineering basic
4. reverse engineering basic
4. reverse engineering basic
4. reverse engineering basic
4. reverse engineering basic
4. reverse engineering basic
4. reverse engineering basic
4. reverse engineering basic
4. reverse engineering basic
4. reverse engineering basic
4. reverse engineering basic
4. reverse engineering basic
4. reverse engineering basic
4. reverse engineering basic
4. reverse engineering basic
4. reverse engineering basic
4. reverse engineering basic
4. reverse engineering basic
4. reverse engineering basic
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

4. reverse engineering basic

734

Published on

2009년 10월 서울여대 강연 자료

2009년 10월 서울여대 강연 자료

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
734
On Slideshare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
34
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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.

×