작성
·
257
·
수정됨
0
함수 호출을 하다가 리턴하기 전에 eip가 널이 되면 어떻게 동작하는지 궁금해서 한번 시도해봤는데요.
예를 들면 main() 함수에서 A() 함수를 호출하고 또 A() 함수에서 중간에 B() 함수를 호출하는데
B() 함수를 리턴하기 전에 eip 값을 0x00000000과 같은 널 값으로 고쳐보았습니다. 이렇게 하면 리턴하고나서 뭔가 에러?엑세스 위반? 이라는 게 뜨는 것 같더라구요
근데 만약 이렇게 해서 엑세스 위반이 났을 때 어떤 함수를 호출할 때 잘못됐는지 디버깅 상에서 추적하려면 어떤 순서로 추적해야하는지 궁금합니다!
답변 1
1
네 그 eip를 원하는 주소로 점프 시키고, 심지어 원하는 주소에
원하는 데이터를 넣어놓을 수 있게 만들 수 있는 버그가
아~~주 간혹 발생하는데 그게 바로 해킹의 원리입니다.
(영화에서 usb 꽂으면 바로 보안이 뚫리는 그런 그!)
엑세스 위반 문제는 그냥 크래시 나는 순간의 콜스택을 보면 됩니다.