상세 컨텐츠

본문 제목

001 Reversing

본문

I. Reverse Engineering

       : RE, RCE(Reverse Code Engineering_소프트웨어 분야의 RE), Reversing, 역공학

       : 물건이나 기계 장치 혹은 시스템 등의 구조, 기능, 동작 등을 분석하여 그 원리를 이해하며 단점을 보완하고 새로운 아이디어를 추가하는 일련의 작업

      → 학습 및 연구, 악성 코드·불법 프로그램 분석

 

II. Static vs. Dynamic

       i. 정적 분석(Static Analysis)

             : 파일을 실행하지 않고 분석하는 방법

             : 파일의 종류(EXE, DLL, DOC, ZIP 등), 크기, 헤더(PE) 정보, Import/Export API, 내부 문자열, 실행 압축 여부, 등록 정보, 디버깅 정보, 디지털 인증서, 내부 코드와 구조 등을 분석

             ! 동적으로 변하는 주소값이나 인자를 모두 알아내기 힘듦

             # IDA(Hex-Rays)

 

       ii. 동적 분석(Dynami Analysis)

             : 파일을 실행하여 분석하는 방법

             : 실행, 코드 흐름, 메모리 상태, 파일, 레지스트리, 네트워크, 프로그램 내부 구조와 동작 원리 등을 분석

             # OllyDbg, x64dbg, WinDbg, gdb(Linux)

 

        → 두 분석 방법을 연계해서 사용

 

III. Compile

       i. Source Code → Intermediate Language  Assembly Code  Binary File

             : 주석이나 참조할 헤더 파일 등을 미리 처리 → 분석 및 최적화  assemble

       ii. Binary File  Hex Code

             # HxD

       iii. Binary File  Assembly Code

             # disassembler

            ※ Assembly Code

                : 기계 코드를 사람이 알아보기 쉽게 Instruction(명령어) 단위로 표현한 것

                : Operand(연산수), OP Code(연산 부호)로 구성

                cf) 일반 PC에서 많이 사용되는 Intel x86 계열의 CPU와 모바일 제품에서 많이 사용되는 ARM 계열의 CPU는 서로 어셈블리 명령어의 태가 다름

 

IV. Patch vs. Crack

       i. Patch

             : 프로그램의 파일이나 실행 중인 프로세스 메모리의 내용을 변경하는 작업

              프로그램의 취약점 수정과 기능 개선 등

                ex) Microsoft의 Windows 업데이트

         ii. Crack

            : 의도가 비합적적이고 비도덕적인 패치

             저작권을 침해하는 불법 복제 및 사용 등

 

'Reversing > Project - 악성 코드, 진실의 방으로' 카테고리의 다른 글

005 Stack  (0) 2020.09.19
004 Assembly  (0) 2020.09.19
003 Register  (0) 2020.09.19
002 Byte Ordering  (0) 2020.09.18
000 프로젝트 개요 및 기획서  (0) 2020.09.18

관련글 더보기