부산IT학원/스마트컨트롤러
20140723 (Assembly 기초, windbg 사용법)
EHOzlO
2014. 7. 23. 16:06
108일차
--------------------
Assembly Windbg
--------------------
------- windbg 로 프로그램 관찰
- string 변수에 1234567890을 입력합니다.
- string 에 1234567890 이 아스키코드로 입력됐음을 확인할 수 있습니다.
- 1234567890 이라는 10진수를 16진수로 바꾸면 49 96 02 D2 입니다.
- 다음 코드로 진행하면 number1에 eax에 저장된 49 96 02 D2 를 저장합니다.
- Register는 Big Endian이고, Memory는 Little Endian이라서
Memory에 거꾸로 저장된 것을 볼 수 있습니다.
- 위와 같은 과정을 거쳐 number2 에 255 를 입력하면
메모리에 아래와 같이 16진수로 FF 가 입력된 것을 볼 수 있습니다.
- 다음으로 진행해서 add eax, number2 명령을 EIP Reg를 통해 주소를 찾아가
기계 코드로 쓰여진 것을 확인할 수 있습니다.
03 05 04 40 40 00 이라고 입력되어 있는데요.
- Appendix D 목록을 보면 add 명령의 정보를 볼 수 있습니다.
Opcode 가 03 으로, add 명령의 기계코드가 03 이란 것을 알 수 있습니다.
그런데 기계코드가 03 05 로 뒤에 05 가 더 붙었습니다.
16 bit와 32 bit 를 분별하기 위해서 더 붙는다고 합니다.
디버깅으로 이렇게 관찰할 수 있습니다.
계속해서 PDF 파일을 봅니다.