목록Dreamhack/Reversing (7)
Information Security Study

컴퓨터 구조: 컴퓨터가 효율적으로 작동할 수 있도록 하드웨어 및 소프트웨어의 기능을 고안하고 이들을 구성하는 방법 - 컴퓨터의 기능 구조에 대한 설계, 명령어 집합구조, 마이크로 아키텍처, 그리고 기타 하드웨어 및 컴퓨팅 방법에 대한 설계 등이 포함 CPU의 명령어에 대한 설계 = 명령어 집합구조- CPU가 처리해야 하는 명령어를 설계하는 분야 CPU의 하드웨어적 설계 = 마이크로 아키텍처- 정의된 명령어 집합을 효율적으로 처리할 수 있도록 CPU의 회로를 설계하는 분야 컴퓨터 구조의 세부 분야기능 구조의 설계폰 노이만 구조하버드 구조수정된 하버드 구조명령어 집합구조x86, x86-64ARMMIPSAVR마이크로 아키텍처캐시 설계파이프라이닝슈퍼 스칼라분기 예측비순차적 명령어 처리하드웨어 및 컴퓨팅 방법론..

정적 분석 Static Analysis : 프로그램을 실행시키지 않고 분석하는 방법 장점 - 프로그램의 전체구조를 파악하기 쉽다 - 프로그램의 구성, 함수 호출 관계, 사용 API, 포함하는 문자열 등을 종합적으로 살펴볼 수 있다 - 이 정보들로 프로그램을 큰 관점에서 이해할 수 있다 - 분석 환경의 제약에서 비교적 자유롭다 - 바이러스와 같은 악성 프로그램의 위협으로부터 안전하다 단점 - 프로그램에 난독화가 적용되면 분석이 어렵다 - 다양한 동적 요소를 고려하기 어렵다 정적 분석으로 동적 요소를 고려하기 어려운 이유 : 프로그램은 실행 중에 영향을 주고 받는 여러 함수로 구성된다. A함수가 B함수에 들어가는 인자를 결정할 수 있고, A와 B가 서로 같은 전역변수를 공유할 수 있다. 따라서 어떤 함수가 ..

프로그램 : 연산 장치가 수행해야 하는 동작을 정의한 일종의 문서 프로그램을 연산 장치에 전달 -> CPU가 적혀있는 명령들을 처리해 프로그래머가 의도한 동작을 수행 사용자가 정의한 프로그램을 해석해 명령어를 처리할 수 있는 연산 장치를 programmable하다고 한다. 현대의 컴퓨터가 대표적인 programmable 연산 장치이다. Stroed-Program Computer - 프로그램을 메모리에 전자적 또는 광학적으로 저장할 수 있다. - 기존의 컴퓨터보다 월등히 많은 프로그램을 저장할 수 있다. - 저장된 프로그램의 사용이 간편하다. 소프트웨어 개발자, 해커 등 많은 정보 분야의 엔지니어들이 프로그램을 바이너리라고 부르곤 하는데, 이는 Stored-Programe Computer에서 프로그램이 저..
엔지니어링 : 완성품과 이를 구성하는 부품들의 가능과 설계를 고안, 제작하는 과정 리버스 엔지니어링 : 엔지니어링 과정을 거꾸로 하는 행위 : 완성된 제품을 해체하고 분석해 구조와 기능, 디자인을 파악 리버싱의 다양한 분야 - 약의 성분 분석 - 자동차의 주행 원리 이해 - 전자 제품의 회로 분석 -> 생명 공학, 기계 공학, 전자 공학에 대한 리버싱 기술 적용! 소프트웨어 리버싱에 능숙해지기 위해서는 상당히 많은 지식과 기술, 노력이 필요하다. 소프트웨어와 다양한 컴퓨팅 환경에 대한 깊은 이해를 바탕으로 수백, 수억 줄의 코드로 작성된 프로그램에서 분석할 부분을 찾고, 리버싱을 막기 위해 도입된 안티 리버싱 기술들을 우회해야 한다. 소프트웨어 리버싱은 완성된 프로그램을 분석해 소스 구조를 파악하는 것!..