오브의 빛나는 별

1부 1장 리버싱 스토리 본문

리버싱

1부 1장 리버싱 스토리

오브의 별 2022. 3. 28. 22:03
반응형

안녕하세요, 오브입니다.

오늘은 리버스 엔지니어링과 리버스 코드 엔지니어링에 대해 알아보고 리버싱 방법과 코드, 패치와 크랙을 살펴보겠습니다.

 

리버싱 스토리

1.1. 리버스 엔지니어링(RE, 역공학): 물건이나 기계장치 혹은 시스템 등의 구조, 기능, 동작 등을 분석하여 그 원리를 이해하며 단점을 보완하고 새로운 아이디어를 추가하는 일련의 작업

 

1.2. 리버스 코드 엔지니어링(RCE): 소프트웨어 분야의 리버스 엔지니어링

  • RCE, RE, 역공학, 리버싱 등의 용어를 사용

 

1.2.1 리버싱(분석) 방법

  • 정적 분석: 파일의 겉모습을 관찰하여 분석.
    • 파일의 종류, 크기, 헤더, Import/Export API, 내부 문자열, 실행 압축 여부, 등록 정보, 디버깅 정보, 디지털 인증서 등의 내용 확인.
    • 디스 어셈블러 이용해서 내부 코드와 구조 확인
  • 동적 분석: 파일을 직접 실행시켜서 그 행위를 분석하고, 디버깅을 통해 코드 흐름과 메모리 상태 등 분석
    • 파일, 레지스트리, 네트워크 등 분석
    • 디버거 이용하여 프로그램 내부 구조와 동작 원리 분석
  • 정적 분석으로 정보를 수집하면서 해당 프로그램의 구조와 동작 원리 예측하는 방법은 시간을 단축시키고 효과적임.

 

1.2.2 Source Code, Hex Code, Assembly Code

  • Source Code: 개발 도구(ex)Visual C++)에서 소스코드를 빌드하면 실행 파일 생성. 2진수 binary 파일
  • Hex Code: 2진수를 16진수 형식으로 변환. ex) Hex Editor
  • Assembly Code: 사람이 이해하기 쉬운 어셈블리 코드.

 

1.2.3. 패치와 크랙

  • 패치: 프로그램 파일 혹은 실행 중인 프로세스 메모리의 내용을 변경하는 작업
    • ex) Window 업데이트
    • 목적: 프로그램 취약점 수정 및 기능 개선
  • 크랙: 패치와 같은 개념이지만 특별히 그 의도가 비합법적이고 비도덕적인 경우
    • 저작권 침해 행위(불법 복제/사용)

 

반응형

'리버싱' 카테고리의 다른 글

1부 3장 리틀 엔디언 표기법  (0) 2022.04.23
1부 2장 Hello World! 리버싱(3)  (0) 2022.04.23
1부 2장 Hello World! 리버싱(3)  (0) 2022.04.23
1부 2장 Hello World! 리버싱(2)  (0) 2022.04.22
1부 2장 Hello World! 리버싱(1)  (0) 2022.04.21