일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 웹기초
- 자바
- materialize
- 워게임추천
- wargame.kr
- 웹해킹
- GIT
- bootstrap
- CTF
- NavBar
- 워게임
- 이진탐색트리
- 이진트리
- gitbash
- 써니나타스
- MongoDB
- 웹개발
- 포렌식워게임
- 자바기초
- 그래프
- 뷰
- Express
- 자료구조
- nodeJS
- node.js
- node
- 자바문제풀이
- 웹해킹기초
- mongoose
- 포렌식
- Today
- Total
보안 전공생의 공부
[Dreamhack] Reverse Engineering 본문
출처 : 드림핵 (dreamhack.io)
◆ 리버스 엔지니어링(Reverse Engineering, 리버싱)
: 이미 만들어진 시스템, 장치에 대한 해체, 분석을 거쳐
그 대상 물체의 구조와 기능, 디자인 등을 알아내는 일련의 과정
산업 전 분야에 걸쳐 적용 가능
▶ Software Reversing Engineering
: 소스코드 無 컴파일된 대상 소프트웨어의 구조를 여러 방법으로 분석, 메모리 덤프를 비롯한 바이너리 분석 결과를 토대로 동작 원리, 내부구조를 파악
→ 원래의 소스가 어떻게 작성된 것인지 알아내는 과정
- 각종 상용 프로그램의 지적 재산권 침해할 수도 있음
· 방법
- 정적 분석 방법 (Static Analysis) : 프로그램 실행 X 분석
☞ 실행 파일 구성 요소, 대상 실행 파일이 실제로 동작할 CPU 아키텍처에 해당하는 어셈블리 코드 이해
- 동적 분석 방법 (Dynamic Anaylsis) : 프로그램 실행 → 입출력과 내부 동작 단계를 살펴 분석
☞ 환경에 맞는 디버거 이용해 단계별로 분석하는 기술
· source code → binary code
(사람이 이해) (컴퓨터가 이해)
- 사용되는 프로그램 : 컴파일러
- 중간언어 준비 → 컴파일러가 분석하고 최적화해 어셈블리 코드로 만듬
어셈블리코드와 기계코드는 1:1 대응 가능 → 어셈블을 거쳐 실행가능한 바이너리 완성
<source code → Intermediate language → assembly code → binary code>
· source code ← binary code ☞ 리버싱(정적 분석방법)에 해당하는 방법
- 주어진 바이너리를 어셈블리로 변환 (디스어셈블) → 어셈블리 코드 분석
<binary code → assembly code → source code>