• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

함수 호출을 디스어셈블러로 분석하다가 궁금점이 생겼습니다!

23.01.19 15:56 작성 23.01.19 16:21 수정 조회수 163

0

함수 호출을 하다가 리턴하기 전에 eip가 널이 되면 어떻게 동작하는지 궁금해서 한번 시도해봤는데요.

예를 들면 main() 함수에서 A() 함수를 호출하고 또 A() 함수에서 중간에 B() 함수를 호출하는데

B() 함수를 리턴하기 전에 eip 값을 0x00000000과 같은 널 값으로 고쳐보았습니다. 이렇게 하면 리턴하고나서 뭔가 에러?엑세스 위반? 이라는 게 뜨는 것 같더라구요

근데 만약 이렇게 해서 엑세스 위반이 났을 때 어떤 함수를 호출할 때 잘못됐는지 디버깅 상에서 추적하려면 어떤 순서로 추적해야하는지 궁금합니다!

답변 1

답변을 작성해보세요.

1

네 그 eip를 원하는 주소로 점프 시키고, 심지어 원하는 주소에
원하는 데이터를 넣어놓을 수 있게 만들 수 있는 버그가
아~~주 간혹 발생하는데 그게 바로 해킹의 원리입니다.
(영화에서 usb 꽂으면 바로 보안이 뚫리는 그런 그!)

엑세스 위반 문제는 그냥 크래시 나는 순간의 콜스택을 보면 됩니다.