누구나 내가 선택한 프로세스를 덤프하기 위해 Windows inbuilt 작업 관리자가 사용하는 API를 알 수 있습니까?작업 관리자는 어떤 API를 사용하여 프로세스를 덤프합니까?
맞다면 MiniDumpWriteDump가 아닙니다. 이게 아니라면, 뭘? 감사합니다.
누구나 내가 선택한 프로세스를 덤프하기 위해 Windows inbuilt 작업 관리자가 사용하는 API를 알 수 있습니까?작업 관리자는 어떤 API를 사용하여 프로세스를 덤프합니까?
맞다면 MiniDumpWriteDump가 아닙니다. 이게 아니라면, 뭘? 감사합니다.
짧은 대답, MiniDumpWriteDump
을 사용합니다.
세부 사항 (일부 불필요한 세부 사항은 생략했다) :
윈도우 7 버전에서, 작업 관리자 실행 파일의 일부 래퍼 함수는 프로세스 ID와 실행 파일 이름, 예를 들어 foo.exe
와 함께 호출되는이, 당신이 원하는 때마다 프로세스를 덤프 할 수 있습니다.
OpenProcess
을 사용하여 프로세스에 대한 핸들을 가져오고 HeapAlloc
을 사용하여 힙에 할당 된 일부 구조에 저장합니다.
GetTempPathW
를 사용하여 일부 지역 변수에 임시 디렉토리를 얻을 수
는 PathAppendW
를 사용하여, 예를 들어 foo.exe
을 실행 파일 이름을 추가하고, .exe
없이 foo
됩니다에 PathRemoveExtension
를 사용하여 확장을 제거하고 PathAddExtensionW
를 사용하여 새로운 확장을 추가하고, PathYetAnotherMakeUniqueName
를 호출 경로가 사용되지 않았는지 확인하거나 foo(2).DMP
과 같은 새 경로를 생성하십시오. 마지막으로 CreateFile
을 사용하여 파일 핸들을 가져옵니다.
DuplicateHandle
을 사용하여 핸들을 복제하고이를 구조에 저장하고 새 스레드를 만들고 스레드 함수에 인수로 구조를 전달합니다. DumpType
세트 인수 MiniDumpWriteDump
를 사용
스레드 호출
0x1826
에 :
MiniDumpWithFullMemory | MiniDumpWithHandleData | MiniDumpWithUnloadedModules | MiniDumpWithFullMemoryInfo | MiniDumpWithThreadInfo
길은 하나뿐입니다. MiniDumpWriteDump()가 그 길입니다.
당신은 쉽게 이것을 볼 수 있으며 dumpbin.exe /imports c:\windows\system32\taskmgr.exe
을 실행하여 사용하는 기능을 볼 수 있습니다. DbgHelp.dll에서 MiniDumpWriteDump를 가져 오는 것을 볼 수 있습니다. 또한 DbgHelp.dll이 요즘 Windows와 함께 제공되는 이유입니다.