2009-02-08 2 views
1

.NET에서 버퍼 오버플로 오류의 일반적인 원인을 찾고 있습니다..NET에서 버퍼 오버플로 오류의 일반적인 원인

버퍼 오버플로가 인 것은 알고 있습니다. 관리 .NET 코드가 아닙니다. 그러나이 예외는 .NET 응용 프로그램의 범위에서 여전히 가능합니다. 내가 생각

것들 - PInvoke를 /는 Win32는

버퍼 오버런 오류를 디버깅하는 가장 좋은 방법은 무엇인가를 호출에 COM 개체에

  • 유효한 인수는
  • 유효한 인수를 호출? 질문에 대한 코멘트에서

+0

실제 질문이 여기에 표시되지 않습니다. 버퍼 오버런은 검사되지 않은 메모리 조각을 작성하는 관리되지 않는 메서드를 호출 할 때마다 발생할 수 있습니다. –

+0

나는 미치광이 – Element

+0

에 동의합니다. 어떻게 .NET에서 버퍼 오버런 오류를 디버깅 할 수 있습니까? – user62572

답변

2

:

가 어떻게 너희들 .NET에서 버퍼 오버런 오류를 디버깅 가야합니까?

대부분의 경우 처음에는 디버그 할 것이 없습니다. 그 말은, 물론 버그가 존재하고 그것을 고칠 필요가 있지만 버그는 당신의 코드에 없다는 것을 의미합니다. 관리되지 않는 라이브러리에서 호출 할 수 있습니다. 변경할 수 없습니다. 당신이 할 수있는 유일한 방법은 그렇게 라이브러리를 사용하지 않는 것입니다.

이것이 일반적인 원인 중 하나입니다. 관리되지 않는 라이브러리의 버그입니다.

버그가없는 관리되지 않는 라이브러리를 호출했지만 라이브러리에서 명시 적으로 버퍼 크기를 알려주고 잘못된 번호를 지정하는 경우에도 발생할 수 있습니다. 이것은 수정해야 할 코드의 문제점입니다. 그러나 바이트 배열의 .Length 속성을 검사하는 것만 큼 간단하게 버퍼 크기를 찾는 것이 일반적이므로 .Net에서는 거의 발생하지 않습니다.

+0

조엘 감사합니다. 오버플로가 발생하는 라이브러리를 결정하는 방법은 무엇입니까? – user62572

+0

처음에는 관리되지 않는 코드에별로 의존하지 않습니다. .Net이 GUI를 "실제"코드 위에 올려 놓는 빠른 방법 일 뿐이라고 생각하는 학교가 있다는 것을 알고 있지만, 그 접근 방법이 잘못되었다고 생각합니다. 그래서 내 대답은 : 관리 할 코드가 거의 없기 때문에 범위를 좁히기가 쉽습니다. –

+0

그래서 COM 개체를 사용하는 경우 어떤 메서드 호출이 오버플로의 원인인지 어떻게 알 수 있습니까? – user62572

관련 문제