프로그래밍 일반/프로그래밍 기타

[어셈블리] OllyDbg 소개

지노윈 2020. 9. 13. 19:22
반응형

어셈블리를 디버깅 할 수 있는 OllyDbg를 소개합니다.

이 툴을 이용하여 어셈블리의 동작을 디버깅 및 확인을 할 수 있어서 어셈블리어를 학습하는데 도움이 됩니다.

그리고, 리버스 엔지니어링 툴로 사용되는 프로그램입니다.

 

OllyDbg 설치

version 2.01을 받습니다. 받은 후 압축을 풀면 OllyDbg.exe 파일을 관리자 권한으로 실행합니다.


기본 기능 & 레이아웃 


사용을 위해서는 먼저 실행 파일을 열어야 합니다.

실행 파일을 열면 다음과 같이 로딩되며, 이 화면은 코드뷰, 레지스터 뷰, 덤프 뷰, 스택뷰로 구성되어 있습니다.

코드 뷰에서는 기계어와 어셈블리어를 볼 수 있습니다.

어셈블리어 영역을 마우스 더블 클릭하여 어셈블리 명령어를 입력 할 수 있습니다.

 

디버그와 트레이스 기능들을 활용하여 디버깅 할 수 있습니다.

프로그래밍에 익숙하신 분은 직관적으로 아실 것이라 생각합니다.

 


어셈블리 수정 & 실행 예

어셈블리 영역을 더블 클릭하여 다음과 같이 원하는 어셈블리를 입력 할 수 있습니다.

다음과 같이 변경 됩니다.

Step Over하여(F8 또는 단축 아이콘 클릭) 수정한 "MOV EAX, 0"을 실행하면 다음과 같이 EAX 00000000으로 변경된 것을 볼 수 있습니다. 왼쪽에 검정색이 한 칸 밑으로 내려 왔으며 검정색 위치가 현재 실행 위치를 의미합니다.


레지스터

레지스터 영역을 더블 클릭하면 다음과 같은 레스터리를 변경할 수 있는 팝업창이 뜹니다.

범용 레지스터리 EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI를 보실 수 있으며 EAX를 더블클릭한 화면입니다.

 

EAX는 32비트를 표시하고 있고 전통적으로 어셈블리는 16비트 부터 시작 하였기 때문에 16비트에서 사용하던 AX, AH, AL도 보여주고 있습니다. IA-32 CPU 레지스터 글을 참조하면 하세요.