물먹는산세베리아

리버싱이란? 본문

Waregame & CTF/Reversing

리버싱이란?

suntall 2021. 2. 16. 02:18

01 | 리버싱 엔지니어링

  • 역공학
  • 물건, 기계장치, 시스템 등의 구조, 기능, 동작 등을 분석하고 원리를 이해하며
  • 단점 보완, 새로운 아이디어를 추가하는 작업
  • 설계도 없는 완성된 제품의 구조, 기능, 동작을 관찰, 분석(어떻게 동작하는지)

* 리버스 코드 엔지니어링(소프트웨어 분야 역공학) 중심으로 학습

 

02 | 리버싱(분석 방법)

1. 종류

  • 정적분석
    • 파일의 겉모습 관찰하여 분석(파일 실행X)
    • 파일 종류, 크기, 헤더(PE) 정보, Import/Export API(라이브러리), 내부문자열, 압축여부 등 분석하기
    • 디스어셈블러를 이요하여 내부 코드, 구조 확인
  • 동적분석
    • 소프트웨어 파일 직접 실행 후 동작 직접 관찰
    • 어떤 파일을 건들고, CPU 레지스트리는 어떻게 설정되어 있고, 네트워크는 어떻게 활용, 접속 하는지 관찰(행위 관찰)
    • 디버깅 통해 코드 흐름, 메모리 상태 확인(동작 과정에서 어떤 일들이 일어나는지)

2. Source Code, Hex Code, Asssembly Code

  • 바이너리(Hex) 코드는 숫자 뿐이라 분석 어려움
  • 그래서 좋게 보려고 어셈블리코드(PUSH, CALL 등 의미파악 쉬움)
  • 소스 코드는 거의 설계도...

3. 패치, 크랙

  • 패치(Patch)
    • 프로그램의 파일 or 실행 중인 프로세스 메모리의 내용을 변경하는 작업(Windows 패치시킨다!)
    • 버그, 에러 생성시 동작하고 있는 파일 혹은 메모리에 올라가 있지 않은 파일의 내용을 합법적으로 바꾸는 것
  • 크랙(Crack)
    • 비합법적 패치
    • Ex.  패스워드 크랙? 불법적으로 패스워드에 대한 정보를 빼내거나 패스워드를 검색하는 부분을 우회하여 인증을 무력화시키도록 소스코드 수정

*합법, 비합법의 차이일 뿐

 

 

참고

www.youtube.com/watch?v=WmEUa08617U

'Waregame & CTF > Reversing' 카테고리의 다른 글

[Codeengn] Basic RCE L06  (0) 2021.02.20
[SuNiNaTaS] 9번  (0) 2021.02.18
[xcz.kr]9번  (0) 2021.02.18
abex' crackme #3  (0) 2021.02.17
abex crack me #1  (0) 2021.02.17