정보 보안/이론

reverse code Engineering, 리버싱 툴

chozjjae 2022. 3. 24. 12:12

악성코드 분석을 위한 리버싱 툴

*은행업무와 올리디버거가 충돌하면 오류가 발생한다.


리버싱(reversing)이란?
역설계, 완성된 제품을 보고 제품의 설계도를 다시 그려보고 기본적인 설계 개념이나 설계 정보를 추출하고 재현하는것을 의미합니다.


리버싱의 필요성
-악성코드를 분석하고자 하는 사람
-내가 개발한 제품을 지키고 싶은 사람
-다른 사람이 만든 프로그램의 원리가 궁금한 사람
-개발한 프로그램을 업그레이드 시키고 발전 시키고 싶을때 사용합니다.

리버싱의 응용 분야 
- 소프트웨어 : 악성코드 분석, 취약점 분석, 라이센싱/ 크래킹, 버그헌팅 등
- 하드웨어 : 하드디스크 분석, IoT기기 분석
*IoT = 사물 인터넷으로 각종 기기에 센서와 통신을 사용하여 데이터를 수집, 저장, 분석하는 기술입니다.

리버스 엔지니어링을 사용하는 직업
악성코드 분석가 - 악성프로그램 또는 바이러스와 같은 모든 것들을 분석하여 해결하는 업무직업




실습 프로그램 - 올리디버거(OllyDbg)
-2진수의 파일 분석기
-레지스터를 복사함과 더불어 프로세스, API 호출, 스위치, 테이블, 상수, 문자열 등을 알아냄
-오브젝트 파일과 라이브러리로부터 루틴을 찾아냄


올리디 버거(OllyDbg)의 구성  

Code Window - 기본적으로 Disassembly code를 표시하여 각종 comment(댓글), label(명령어)을 보여주며, 코드를 분석하여 loop, jump 위치 등의 정보 표시


Address(주소) - 프로세스 가상 메모리 내의 주소
Instuction(명령어) - IA32(또는 x86) CPU 명령어
Assembled code(어셈블러 코드) - OP code를 보기 쉽게 어셈블리로 변환한 코드

comment - 주석, 디버거에서 추가한 주석을 의미,(옵션에 따라 약간씩 다르게 보인다)
*Disassembly - 디스어셈블러 또는 역 어셈블러라고 불리며 기계어를 어셈블리어로 변환하는 컴퓨터 프로그램이다. 

Register Window - CPU Register 값을 실시간으로 표시하며 특정 Register 값 수정 가능

Dump Window - 프로세스에서 원하는 Memory 주소 위치를 아스키/유니코드값으로 표시하고 수정도 가능하다.

Stack Window - ESP Register가 가리키는 프로세스 Stack Memory를 실시간으로 표시하고 수정도 가능하다.


***올리디버거(OllyDbg) 단축키***
ctrl + F2 = Restart Program, 프로그램 재실행
F2 = Toggle BreakPoint, 브레이크 포인트를 설정/해제
F7 = Step Into, 명령어를 한 줄씩(call 명령어 실행시 함수 내부로 들어가서 수행)
F8 = Step Over, 명령어를 한 줄씩(call 명령어 실행시 함수 내부로 들어가지 않고 수행)
F9 = Run, 프로그램을 실행 
ctrl + G = Go To, 특정 주소 위치로 이동
ctrl + F9 = Execute till Return, 함수 코드 내에서 RETN 명령어까지 실행 (함수 탈출 목적)
; = Comment, 주석(댓글)을 추가 
: = label, 명령줄에 라벨 추가


인덕대학교 고수정 교수님 자료 참고