어떤 프로세스가 다른 프로세스를 시작했는지 찾기

어떤 프로세스가 다른 프로세스를 시작했는지 찾기

Running 이라는 앱이 있음을 보여주는 프로세스 탐색기가 있다고 가정해 보겠습니다 EvilAppsRUs.exe.

나는 그것을 죽였지만 다시 시작됩니다. 서비스가 없는지 확인했습니다(프로세스 탐색기에서 서비스를 마우스 오른쪽 버튼으로 클릭->속성 클릭).

DisplayDriver.exe따라서 저는 시작(그리고 다시 시작)하는 또 다른 프로세스( 와 같은 양성 프로세스라고도 함)가 있다고 확신합니다 EvilAppsRUs.exe.

사악한 프로세스를 다시 시작하는 프로세스의 이름이 무엇인지 어떻게 알 수 있나요?

답변1

Windows에서는 프로세스 모니터를 사용하면 도움이 될 수 있습니다. 프로세스 트리 도구( Ctrl+ T)는 프로세스 간의 관계를 보여줍니다.

다음에서 다운로드하여 빠르게 사용해 볼 수 있습니다.공식 페이지.

매우 유용하고 실시간입니다. 프로세스 모니터...

답변2

요약:프로세스 트리를 표시하는 일반적인 도구에서 제공하는 이 정보를 신뢰하지 마십시오.

같은 도구 없이말하는 프로세스 모니터아니면 다소 관련이 있는시스몬 당신은 이것을 알 수 없습니다.와 함께해당 도구가 프로세스 생성 이벤트를 캡처하고 사용하는 한 이론적으로 가능합니다.저것프로세스 트리를 (재)구성하기 위해 수집된 정보입니다.

그러나 상위 프로세스와 하위 프로세스 간의 관계는 그렇지 않습니다.관련성 있는Unix에서와 마찬가지로 Windows에서도 마찬가지입니다.Unix에서 부모는 자식이 좀비로 끝나지 않도록 자식의 종료 상태를 수집해야 합니다.설명도 하기 때문에 중요한 정보입니다.Windows는 일반적으로 Unix와 마찬가지로 부모-자식 프로세스 관계를 강조하지 않습니다. Windows의 상위 프로세스는 하위 프로세스의 종료 상태를 수집할 필요가 없습니다.

더 나쁜 것은 프로세스를 생성하는 동안 다음을 사용하여 상위 프로세스를 위조할 수 있다는 것입니다.PROC_THREAD_ATTRIBUTE_PARENT_PROCESS, 이는 일반적으로 Process의 프로세스 트리가 얼마나 신뢰할 수 있는지에 대한 아이디어를 제공합니다.탐침(힌트: 그렇지 않습니다). 이 정보는또한조작하는 프로세스가 조작되는 프로세스에 대한 적절한 액세스 수준을 갖고 있는 한, 실행 중인 프로세스에서 위조될 수 있습니다.

프로세스 모니터는 이론적으로 생성되는 프로세스를 볼 수 있고 추출할 수 있는 정보에 의존할 필요가 없다는 장점이 있습니다.사실 이후각 해당 프로세스에서 (그리고 위조될 수 있음) 그러나 해당 정보가 프로세스 트리를 채우는 데 사용되는지는 알 수 없습니다. 그렇지 않은 것 같습니다. 캡처하기 전에 프로세스 트리를 표시할 수 있다는 점을 고려하면어느프로세스 모니터의 이벤트는 프로세스 탐색기와 유사하다는 점에서 의미가 있습니다.이 정보도 신뢰할 수 없습니다.

Windows 7 정도에서만 도입 되었지만 PROC_THREAD_ATTRIBUTE_PARENT_PROCESS부모-자식 프로세스 관계는 이전 Windows 버전에서도 그다지 관련성이 없었습니다.


추가 자료:

추신: 기존 도구는 문서화된 도구 tlhelp32( CreateToolhelp32Snapshot외.PROCESSENTRY32W::th32ParentProcessID) 기능 또는 NT 기본 APINtQuerySystemInformation뭔가로좋다 SystemProcessInformation(Nebbett은 그것을 불렀습니다 SystemProcessesAndThreadsInformation). 이는 잠재적으로 위조된 상위 PID를 반환한다는 의미입니다.

관련 정보