어셈블리를 디버깅 할 수 있는 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 레지스터 글을 참조하면 하세요.
'프로그래밍 일반 > 프로그래밍 기타' 카테고리의 다른 글
Visual Studio 인라인 어셈블리 x86 예제 (0) | 2020.09.13 |
---|---|
Visual Studio 2019에서 어셈블리 64bit 프로젝트 생성 (0) | 2020.09.13 |
CPU 레지스터 (0) | 2020.09.12 |