본문 바로가기

Reversing/Debugging Tech

16bit DOS Debugging


최근 16비트 DOS바이너리를 디버깅 할 일이 생겨서 디버깅 방법을 찾아 보았다. 일단 IDA Bochs Plugin으로 하는 방법이 있고 Turbo Debugger로 하는 방법이 있는데 Bochs는 설정이 너무 어렵고 힘드므로 터보 디버거로 했다. 이 터보 디버거 역시 WIndows98을 가상 머신에 깔아서 하는 방법이 있고, DosBox를 이용해서 하는 방법이 있는데 나는 DosBox를 이용해서 했다. 먼저 필요한 것은 Tasm이다. 설치는 http://sourceforge.net/projects/tasmforwindows/ 여기서 자신의 윈도우에 맞게 다운받아 설치하면 된다. 그리고 실행하면 전체화면이 DOS창으로 꽉 채워지게 된다. 이 때 당황하지 말고 Alt+Enter를 누르면 작은 화면으로 바뀐다. 그리고 DosBox는 가상환경이므로 실제 내 컴퓨터의 하드디스크와 연동이 되지 않는다. 그래서 mount명령어를 통해 마운트 해 주면 된다. "mount d c:\" 이런 식으로 하면 내 실제 컴퓨터의 C드라이브가 DosBox내의 d드라이브로 마운트 된다. 그 후에 DosBox의 C:\tasm\디렉토리의 TD를 실행시켜주면 터보 디버거가 실행된다.

tasm을 실행하면 이런 화면이 뜬다.

내 컴퓨터의 D드라이브를 DosBox의 D드라이브로 마운트 하였다. 파일들이 정상적으로 잘 보인다.

터보디버거를 실행한 화면이다.

Change dir에서 디렉토리를 바꿀 수 있고, Open에서 실제 바이너리를 로드할 수 있다. 대부분의 명령어는 일반 올리디버거와 비슷하다. 브레이크포인트, step into, step over, run 등 모두 단축키는 같고, Ctrl+G는 역시 주소 이동이다. 여기서 아래 메모리에서 주소를 이동할 때 서로 다른 세그먼트 영역이라면 세그먼트까지 앞에 적어서 이동해야 한다. ds:0xff80 이런 식으로 이동하면 된다. 물론 같은 세그먼트라면 바꿀 세그먼트는 적을 필요가 없다. 이런 식으로 한쪽에는 IDA를 두고 다른 쪽에는 터보 디버거를 두고 같이 보면서 디버깅 해 가면 편하다.

'Reversing > Debugging Tech' 카테고리의 다른 글

gdbserver 디버깅  (0) 2017.08.13
OS 동적 디버깅(vmware)  (1) 2016.06.22
IDA Linux Remote Debugging  (0) 2015.09.19