Compile

Reverse Engineering 2023. 3. 30. 15:29

컴파일(Compile) 소스코드를 컴퓨터가 이해할 수 있는 기계어 형식으로 번역하는 것 어떤 언어로 작성된 소스 코드(Source Code)를 다른 언어의 목적 코드(Object Code)로 번역하는 것 컴파일러(Compiler) 컴파일을 해주는 소프트웨어 컴파일 과정(C → Binary) C 언어로 작성된 코드는 일반적으로 전처리(Preprocess), 컴파일(Compile), 어셈블(Assemble), 링크(Link)의 과정을 거쳐 바이너리로 번역 컴파일러는 코드를 번역할 때, 조건을 만족하면 최적화 기술을 적용하여 효율적인 어셈블리 코드를 생성 gcc 에서는 -O -O0 -O1 -O2 -O3 -Os -Ofast -Og 등의 옵션을 사용하여 최적화를 적용할 수 있음 예를 들어 a.c를 최적화하여 컴파..

Basic

Reverse Engineering 2023. 3. 30. 14:26

어셈블리어(Assembly Language) 기계어는 0과 1로 이루어져 있는 언어를 사람이 이해하기 쉬운 새로운 언어로 어셈블리어를 고안 기계어에 비하면 효율적이지만, 규모가 큰 프로그램 개발은 어려움 어셈블러(Assembler) 어셈블리어를 기계어로 번역 컴파일러(Compiler) C, C++, GO, Rust 등을 기계어로 번역 해당 언어들은 개발의 효율을 극대화 고급 언어(High-Level Language) 프로그래밍 사용하는 언어 중, 사람이 이해하기 쉬운 언어 C, C++, GO, Rust 등 저급 언어(Low-Level Language) 고급 언어 반대의 언어 기계어나 어셈블리어 프로그램(Program) 연산 장치가 수행해야 하는 동작을 정의한 일종의 문서 프로그램을 연산 장치에 전달하면,..

Revers Engineering이란?

Reverse Engineering 2023. 3. 29. 10:48

리버스 엔지니어링(Revers Engineering)? 완성된 제품을 해체하고 분석하요 구조와 기능, 디자인을 파악 '역공학'이라고 지칭하기도 함 - 약의 성분 분석, 자동차의 주행 원리 이해, 전자 제품의 회로를 분석하는 것 등에 리버싱 기술 적용 - 리버스 : 과정을 거꾸로 하는 행위 리버싱의 용도 개발을 중단한 프로그램에 대한 패치가 필요할 때 리버싱 사용 각종 프로그램의 보안성을 평가하거나 악성코드를 분석할 때도 리버싱 사용 대상 프로그램이 얼마나 안전하게 설계되었는지, 대상 악성코드가 어떤 방식으로 동작하고 시스템에 피해를 입히는지 알아내는 용도