리버싱이란? 리버싱 : Reverse engineering의 약자로 역공학이라는 뜻이다. 바이너리의 구조, 기능, 동작을 분석한다. 크게 두 가지 방법이 존재한다. 정적 분석 : 파일을 실행하지 않고 파일 종류, 헤더, 디스어셈블러, 디컴파일러로 코드를 분석 동적 분석 : 파일을 실행하면서 코드 흐름과 메모리 상태 등을 보면서 분석 gcc 사용 코드를 작성하고 조금 옵션을 줘서 컴파일을 해보겠다. layer7.c는 원본 소스코드 파일이다. layer7.i는 전처리된 소스코드 파일이다. layer7.s는 어셈블리어 파일이다. layer7.o는 어셈블러에 의해 기계어로 변환된 파일이다. layer7은 layer7.o가 링커가 링킹을 하고나서 나온 최종적인 바이너리 파일이다. 빌드는 이 전처리기, 컴파일러, ..