본문 바로가기

Security/Reversing30

[Dreamhack Reverse Engineering] STAGE 3 [Computer Architecture] 1. 컴퓨터 구조 1) 컴퓨터 구조 - 컴퓨터가 효율적으로 작동할 수 있도록 하드웨어 및 소프트웨어의 기능을 고안하고 이들을 구성하는 방법 - 컴퓨터 기능 구조에 대한 설계, 명령어 집합구조, 마이크로 아키텍처, 기타 하드웨어 및 컴퓨팅 방법에 대한 설계 포함 2) 컴퓨터 기능 구조에 대한 설계 - 효율적인 연산을 위해 컴퓨터에 필요한 기능들을 고민, 설계하는 분야 - ex. 폰 노이만 구조, 하버드 구조, 수정된 하버드 구조 3) 명령어 집합구조(CPU 명령어에 대한 설계) - CPU가 처리해야하는 명령어 설계하는 분야 - ex. ARM, MIPS, AVR, 인텔의 x86 및 x86-64 등 2. 폰 노이만 구조 1) 컴퓨터의 핵심 기능 - 연산, 제어, 저장.. 2022. 4. 28.
[Dreamhack Reverse Engineering] STAGE 2 [Binary] 1. 프로그램과 컴파일 1) 프로그램 - 연산 장치가 수행해야 하는 동작을 정의한 일종의 문서 - 프로그램을 연산 장치에 전달하면, CPU는 적혀있는 명령들을 처리하여 프로그래머가 의도한 동작을 수행함 - 소프트웨어 개발자, 해커 등 많은 정보 분야의 엔지니어들이 프로그램을 '바이너리'라고 부름 Stored-Program Computer에서 프로그램이 저장 장치에 이진 형태로 저장되기 때문 2) 컴파일러 - 소스 코드 : CPU가 수행해야 할 명령들을 프로그래밍 언어로 작성한 것 - 컴파일 : 소스 코드를 컴퓨터가 이해할 수 있는 기계어의 형식으로 번역하는 것 - 컴파일러 : 컴파일을 해주는 소프트웨어 - 대표적인 컴파일러 : GCC, Clang, MSVC 3) 인터프리터 - 모든 언어가.. 2022. 4. 28.
[Dreamhack Reverse Engineering] STAGE 1 [소개] 1. 리버스 엔지니어링 1) 리버스 엔지니어링 - 엔지니어링 : 완성품과 이를 구성하는 부품들의 기능과 설계를 고안하고 제작하는 과정 - 리버스 엔지니어링 : 엔지니어링 과정을 거꾸로 하는 행위 - 완성된 제품을 해체하고 분석하여 구조와 기능, 디자인을 파악 - 리버스 엔지니어링 or 리버싱이라고 함 2) 리버싱의 분야 - 약의 성분을 분석하는 것 - 자동차의 주행 원리를 이해하는 것 - 전자 제품의 회로를 분석하는 것 - 등등...이 있지만 여기서 다룰 것은 소프트웨어를 대상으로 한 리버싱 2. 리버싱의 용도 1) 좋은 사례 - 판매된 지 너무 오래되어 제작사가 이미 개발을 중단한 프로그램에 대한 패치가 필요할 때 매우 효과적 - 각종 프로그램의 보안성 평가 (얼마나 안전하게 설계되었는지 알아.. 2022. 4. 28.