2017-10-06 1 views
1

dds esp 또는 그 64 비트 상대방 dqs rsp의 원시 출력을 제대로 이해하고 있는지 확실하지 않습니다. 스택의 항목 목록을 볼 때 반환 주소를 볼 때마다 그 코드는 이 아직 반환하지 않은 코드라고 가정하는 경향이 있습니다. IOW, 그들을 함께 묶어서 좋은 호출 스택을 형성해야합니다. (지금은 k*의 Windbg 명령 그룹으로 귀찮게하지 마십시오.) 항상 그렇지 않은가요?'dds esp'on Windbg

esp/rsp 출력에서 ​​작동하는 일부 타사 확장이 있기 때문에 호출 스택처럼 보이는 항목에 문자열을 포함하지만 해당 순서와 일치하는 것으로 보이지 않습니다 소스 (글쎄, 내가 가진 모든 소스.) 오래 전에 반환 된 함수의 항목조차도 있습니다.

무엇이 누락 되었습니까?

UPDATE :

OK - 내가 사용하는 타사 확장 말하는가 :

Dumps (dps) from the stack limit the base only showing items that include the ! followed by +0x

그래서, 문제는 다음 해당 항목이 무엇인지된다? 다른 함수를 호출하기 위해 고쳐 쓰는 함수의 반환 주소라고 생각했습니다.

답변

2

ddsD UMP D 워드 (32 비트)을 의미하고, S ymbol 같은 결과를 해석한다. dqs (쿼드 워드, 64 비트) 및 dps (포인터 크기, 아키텍처와 일치)과 유사합니다.

당신이 다시 읽는다면, 당신은 용어 기호 약어하지 스택 등을 확인할 수 있습니다. 가능한 경우 메모리에있는 숫자는 가능한 한 기호로 해석됩니다. 그것은 스택에 대한 메소드 호출 일 수 있습니다. 또한 실수로 기호와 일치하는 값을 갖는 지역 변수 일 수도 있습니다.

그 지역 변수는 아마도 그들이 메모리에 모습을 예측하기 어려운 ij하지만 어쩌면 float 또는 double 데이터 유형과 같은 변수를 반대하지 않습니다. 또한 struct에는 기호처럼 보이는 메모리 내 표시가 나타나는 레이아웃이있을 수 있습니다.

당신이 언급 한 확장 기능은 간단한 dps과 심볼이 연관되어 있지 않은 줄을 필터링하는 것처럼 보입니다.

여전히 dps은 응용 프로그램의 기능, 즉 호출 스택에있을 수있는 기호와 거기에있을 수없는 기호를 잘 이해하고 있어야하지만 스택 손상의 경우 유용합니다.

+0

감사합니다. Thomas. esp/rsp를 나열하면 스레드가 특정 기능을 실행했는지 여부를 나타내는 확실한 지표가 아닐까요? (예 : function_address와 같은 일부 기호 이름으로 이동). – ForeverLearning