리버싱을 하려면 디스 어셈블리 툴과 디버그 툴이 필요한데
OLLydbg는 디스 어셈블리와 디버그 두가지 모두 가능한 툴이다.
-- 디스 어셈블리 --
기계어를 어셈블리어로 바꾸는 것
리버스 엔지니어링
어느 특정 물건, 장치 등이 있으면 그것에 대한 구조, 기능, 동작 등을 역으로 따라가며 분석하고
그 원리를 이해하며 부족한 부분을 보완하며 새로운 기능 등을 추가하는 작업
리버스 코드 엔지니어링( RCE )
소프트웨어 분야의 리버스 엔지니어링
리버싱
소프트웨어 분야에서 해당 프로그램의 구조, 기능, 동작 등의 원리를 역으로 따라가며
이해하고 분석하여 부족한 부분이 있거나 추가 되었으면 하는 새로운 기능 등을 추가하는 행위
-- 방법 --
정적분석
● 파일의 겉모습을 관찰하여 분석하는 방법
● 파일을 실행하지 않고 파일의 종류, 크기, 헤더정보, 실행 압축 여부, 등록정보 등의 내용 확인
● 디스어셈블러를 이용해서 내부 코드와 그 구조를 확인하는 방법
동적분석
파일을 직접 실행시켜 그 행위를 분석하고, 디버깅을 통하여 코드의 흐름과 메모리의 상태 등을
살펴보는 방법( 프로그램 내부 구조와 동작원리 분석 )
-- 실행시 화면 --
1. 어셈블리 코드
CPU가 실행 할 수 있는 명령어( 코드 )와 분석을 용이하게 해주는 Label과 Comment 확인
-> Label : 특정 메모리 값이 이름을 붙여주는 것
-> Comment : 한 줄에 주석을 다는 것
2. 레지스터 상태
각종 CPU 레지스터의 상태를 확인할 수 있는 영역
3. Dump
분석 프로그램의 메모리 상태를 ASCII나 UNICODE로 확인 가능
4. 스택
Stack 메모리의 상태 확인
-- 명령 --
Run( F9 ) : Break Point를 만날때까지 명령 실행
Step into( F7 ) : 명령을 한 번씩 실행하다가 함수를 만나면 함수 안으로 들어간다.
Step over( F8 ) : 명령을 한 번씩 실행하다가 함수를 만나면 함수 안으로 들어가지 않고
다음 명령 실행
Breakpoint( F2 ) : Software BreakPoint 설정 / 해제
-- Software방식과 Hardware 방식의 BreakPoint 차이 --
Software 방식
코드영역 변경
데이터 영역에 BreakPoint 설정 불가
Hardware 방식
코드영역 변경 X
데이터 영역에 BreakPoint 설정 가능
'툴 사용법' 카테고리의 다른 글
카페24 - 도메인 구매 (0) | 2020.07.28 |
---|---|
카페24 - 호스팅 구매 (0) | 2020.07.28 |
BrowsingHistoryView (0) | 2019.08.18 |
Autoruns (0) | 2019.08.17 |
PEview (0) | 2019.08.14 |