20140723 (Assembly 기초, windbg 사용법)

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 파일을 봅니다.



































설정

트랙백

댓글