리버싱/리버싱 핵심원리

#1 - 리버싱 핵심원리

D-coding 2022. 2. 11. 22:29

리버스 엔지니어링(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) : 비합법적이고 비도덕적인 목적