ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 1 리버싱 엔지니어링
    리버싱 엔지니어링/리버싱 핵심 원리 2022. 1. 7. 20:31

     

     

    1. 리버스 엔지니어링 (Reverse Engineering, RE : 역공학)

    : 장치 또는 시스템을 분석하여 기술적인 원리를 이해하며 단점을 보완하고 새로운 아이디어를 추가하는 일련의 작업. 

    • 거꾸로 해석하는 기술
    • 컴파일 과정을 거꾸로 하는 것
    • 리버싱(reversing)이라고도 함

     

    2. 리버싱 방법

    • 정적 분석 : 파일의 겉모습을 관찰하여 분석하는 방법

        - 파일을 실행하지 않고 파일의 종류(exe, doc 등), 헤더, 실행 압축 여부 등의 다양한 내용을 확인

        - 디스 어셈블러를 이용해 내부 코드와 구조 확인

        - 동적 분석 방법에 참고자료가 됨

    • 동적 분석 : 파일을 직접 실행시켜 분석하고, 디버깅을 통하여 코드 흐름과 메모리 상태 등을 자세히 살펴보는 방법

        - 파일, 레지스트리, 네트워크 등을 관찰하며 프로그램 행위 분석

        - 디버거를 이용하여 프로그램 내부 구조와 동작 원리 분석

        - 디버깅 : 프로그램이 정확한지 조사하는 과정  

        - 디버거 : 프로그램의 에러를 찾아내고 수정할 수 있도록 도와주는 툴. 사용자에게 CPU의 레지스터 상태와 메모리 내용, 스택영역의 내용을 보여줌  

     

    3. Code

    • Source Code

        - 소스코드를 빌드하면 실행파일이(exe) 생성

        - 실행파일(exe) 형식 : 2진수(binary)

    • Hex Code

        - 2진수 형식의 파일을 해석하기 어려워 2진수를 16진수(Hex) 형식으로 변환시킴

    • Assembly Code

        - Hex Code를 직관적인 형태로 만들기 위해 디버거를 사용함

         -> 디버거 화면에서 Hex Code를 디스 에셈블리 과정을 거쳐 어셈블리 코드로 변환하여 보여줌

    • (참고) 어셈블리어(assembly language)

        - 인간의 관점에서 사용이 불편한 기계어를 보완해 나온 언어

        - 기계어와 명령어가 1:1 대응되어 구성됨 

        - 디스 어셈블리어 : 기계어를 어셈블리어로 변환

     

    4. 패치와 크랙

    • 패치(patch) : 프로그램의 파일 혹은 실행 중인 프로세스 메모리의 내용을 변경하는 작업

        - 주 목적 : 프로그램의 취약점 수정과 기능 개선

        - ex) 윈도우 업데이트

    • 크랙(crack) : 패치와 같은 개념이지만 그 의도가 비합법적이고 비도덕적인 경우

        - 주로 저작권을 침해하는 행위에 사용됨 

    '리버싱 엔지니어링 > 리버싱 핵심 원리' 카테고리의 다른 글

    5 스택  (0) 2022.02.06
    2 Hello World! 리버싱(2) - 문자열 패치  (0) 2022.02.06
    4 IA-32 Register 기본 설명  (0) 2022.02.06
    3 리틀 엔디언 표기법  (0) 2022.02.06
    2 Hello World! 리버싱(1)  (0) 2022.02.05

    댓글

Designed by Tistory.