2017-04-30 18 views
0

스택 버퍼 오버 플로우를 일으키는 실행 파일이 있습니다. 나는 대부분의 일들을 잘 이해하고 있지만, 알아 두어야 할 것은 버퍼가 메모리에 어디에 저장되어 있는지입니다. 절대 주소 또는 EBP 또는 기타 등록 기관과의 관계를 알고 있다면 나는 황금색이 될 것입니다.Ida : 메모리에 버퍼 변수를 찾는 방법

Ida는 문자열과 함수를 추적하지만 버퍼 나 유사한 변수를 찾을 수있는 방법이 있습니까? 어떤 종류의 단서를 얻을 수있는 최소한의 방법이 있습니까?

나는 프로그램에 인수를 제공 할 수 있었지만, 이러한 인수가 버퍼와 ​​어떤 관련이 있는지 전혀 알지 못합니다. 다시 말하지만, 이러한 변수들이 어디로 갈 것인지를 파악할 수 있다면 어렵지 않을 것입니다.

나는 Ida에 대해 상당히 새롭기 때문에, 달성하기가 어렵지 않아야한다고 느낍니다. 핵심 정보가 누락되었습니다. 아무도 내 질문에 대답하지로

감사합니다, 나단

+0

왜이 것이 다운 되었습니까? – NirIzr

+0

나는 정말로 모른다. 그리고 솔직히 나는 대답을 정말로 좋아할 것이다. – Nathan

답변

0

글쎄, 나뿐만 아니라 내 자신에 대답 최상의으로 발견 무엇을 제공 할 수 있습니다. x86 프로세서에서 메모리

에 기록하는 방법을 조립 이해

1), 조립 명령은 다음과 같이 보일 것입니다 메모리에 한 바이트를 작성 :

MOV Ptr Byte [ECX], EAX 

을이 예제에서는 내용을 EAX 레지스터의 내용은 ECX의 내용에 지정된 메모리 위치에 기록됩니다. Immunity을 사용하여 이런 종류의 명령에 중단 점을 설정하십시오. 예를 들어, 프로그램이이 줄에 오자마자 ECX의 내용을 확인하고 해당 위치에서 메모리 덤프를 찾습니다. 버퍼가 쓰여지는 위치 여야합니다.

2) 면역 메모리의 메모리 윈도우에

저장되는 방법을 이해하고, 각각의 메모리 덤프 런타임 동안 생성 할당 된 공간에 대응한다. ASLR이 비활성화 된 경우 (EMET을 사용하여 강제로 비활성화 할 수 있음) 프로그램을 실행 한 다음 사실을 확인한 후 메모리를 검색하면됩니다. ASLR이 활성화되어 있으면 재실행 할 때마다 어떤 종류의 메모리가 쓰여지는지 확인하고 어떤 메모리 덤프가 기록되는지 추론 해보십시오. 공제를 한 후에는 메모리 덤프에 중단 점을 설정하고 아무 것도 쓰거나 읽는 즉시 트리거하도록 설정합니다.

이렇게 많은 단어를 말하면 어떻게 죽였을까요? 흠?