2016-06-09 2 views
2

전체 실행 가능 메모리 공간을 검색하여 특정 메소드가 호출 된 모든 위치를 찾을 수 있습니까? 예를 들어 MyApplcation! MyFunction이 호출 된 곳에서 모든 함수를 찾고 싶습니다. "s"명령을 사용하여 특정 optcode를 검색하는 것은 옵션이 아닙니다. 내 경우에는 호출 명령이 상대 코드 경로를 사용하므로 optcode는 호출 명령어 자체의 위치에 따라 다릅니다.windbg로 특정 호출 명령어의 전체 코드 검색

+0

이것은 모두 기본적인 기능입니다. (다른 많은 WinDbg 기능과 마찬가지로 모호하지도 않고 숨겨져 있지 않은) 접근 가능하게 문서화되어 있고 여기서 몇 번 대답하고 언급 한 내용이 있습니다 (http://stackoverflow.com/search?q=windbg+search+disassembly 예를 들어). – conio

+0

[Windbg 명령의 각 결과가 스크립트의 매개 변수로 복제 될 수 있습니다] (https://stackoverflow.com/questions/35471840/windbg-commands-each-result-as-parameter-in-script) – conio

답변

7

0 : 000>의 LM m의 CALC

Browse full module list 
start end  module name 
005f0000 006b0000 calc  (pdb symbols)   e:\symbols\calc.pdb 
\971D2945E998438C847643A9DB39C88E2\calc.pdb 

0 : 000> $$는 모두 CALC 메모리 공간 내 오퍼레이터 새로운 함수를 호출하여 검색 할

0:000> # op*new 5f0000 l?(6b0000-5f0000) 

출력

calc!WinMain+0x213: 
005f17e7 e89a0a0000  call calc!operator new (005f2286) 
calc!WinMain+0x272: 
005f1843 e83e0a0000  call calc!operator new (005f2286) 
calc!operator new+0x26: 
005f229d 0f84fcb80200 je  calc!operator new+0x11 (0061db9f) 
calc!operator new[]+0x26: 
005f32b1 0f8438a90200 je  calc!operator new[]+0x11 (0061dbef) 
calc!CCalculatorState::storeAndFire+0x7: 
005f33c9 e83becffff  call calc!operator new (005f2009) 
calc!CCalculatorState::storeAndFire+0x76: 
005f3437 e84aeeffff  call calc!operator new (005f2286) 
calc!CCalculatorState::storeAndFire+0x8a: 
005f3447 e83aeeffff  call calc!operator new (005f2286) 
calc!CUIController::UpdateTwoLineDisplay+0x56: 
005f35c7 e8cefcffff  call calc!operator new[] (005f329a) 
calc!ATL::CAutoVectorPtr<ATL::CAtlREMatchContext<ATL::CAtlRECharTraitsW>::MatchGroup>::Allocate+0x7: 
005f3a8c e81ae8ffff  call calc!operator new+0x30 (005f22ab) 
calc!ATL::CAutoVectorPtr<ATL::CAtlREMatchContext<ATL::CAtlRECharTraitsW>::MatchGroup>::Allocate+0x27: 
005f3aac e8e9f7ffff  call calc!operator new[] (005f329a) 
calc!ATL::CAtlREMatchContext<ATL::CAtlRECharTraitsW>::CAtlREMatchContext<ATL::CAtlRECharTraitsW>+0x7: 
005f3b52 e8b2e4ffff  call calc!operator new (005f2009) 
calc!ATL::CAutoVectorPtr<void *>::Allocate+0x7: 
+0

@conio 편집을 롤백했습니다. $는 인라인 주석 달기를위한 windbg의 연산자입니다 $ rollback $ foo $ omg는 windbg 명령 창에서 주석을 인라인으로 삽입합니다. 0 대신에 #을 대체하는 windbg 문서를보십시오. $> $ xxxxxxxxxxxxx는 맞지 않습니다. – blabb

+0

죄송합니다. 그것은 하나의 공간 블록의 일부가 아니므로 오타라고 생각했습니다. (그리고 WinDbg 프롬프트에서 실제로 주석을 작성했다면, 두 개의 달러 기호가 필요하다고 생각합니다 .Windbg 문서를보십시오.) – conio