#1 - 리버싱 핵심원리
리버스 엔지니어링(Reverse Engineering, RE : 역공학)
=> 물건, 기계장치, 시스템 등의 구조, 기능 동작 등을 분석 & 원리 이해 / 단점 보완, 아이디어 추가
리버스 코드 엔지니어링(Reverse Code Engineering, RCE)
=> 소프트웨어 분야의 RE(리버스 엔지니어링)이다 /// 소프트웨어를 리버싱 관점에서 상세 분석
리버싱(분석) 방법
=>정적분석
=>파일의 겉모습을 관찰하고 분석
=>파일 실행 X
=>디스어셈블러(Disassembler)를 이용해서 내부 코드와 그 구조를 확인
=>동적분석
=>파일 직접 실행
=>디버거(Debugger)를 이용해 프로그램 내부 구조와 동작 원리 분석
============================================================================
소스코드(helloworld.cpp) 빌드
=>컴퓨터가 이해가능한 2진수(Binary : 0과 1로 구성됨)로 된 실행파일
=>보기 편하게 2진수를 16진수(Hex)형식으로 변환
=>Hex Code도 직관적이지는 않기때문에 더 이해하기 쉬운 어셈블리(Assembly) 코드 형태로변환
============================================================================
프로그램의 파일 혹은 실행 중인 프로세스 메모리의 내용을 변경하는 작업을 패치와 크랙이라함
패치(patch) : 프로그램의 취약점 수정과 기능 개선 목적
크랙(crack) : 비합법적이고 비도덕적인 목적