2013-07-05 2 views
-3

나는 부모 제어 모니터링 시스템 인 보안 소프트웨어를 만들고있어 사용자/관리자 또는 프로그램이 내 프로세스를 죽이는 것을 원하지 않습니다.Windows에서 완전히 ACCESS DENIED 프로세스를 만들려면 어떻게해야합니까?

SetSecurityInfo()을 사용해 보았지만 제대로 작동하지 않았습니다. 그 다음 SetKernelObjectSecurity 그러나 그것은 또한 내가 원하는 것을하지 않았다.

어떻게하면됩니까?

제공된 모든 코드에 대한 명확한 설명을 듣고 싶습니다.

편집 : 그렇다면 바이러스 백신 프로그램이 어떻게합니까 ??? 도와주세요. 임박한 새로운 나는 단순한 것에 대해 알고 싶다. 너희들을 괴롭히지 않아서 미안하지만, 최소한 당신은 나에게 워치 도그 과정에 대한 코드를 보여줄 수있다. . .

+0

나는 이것이 가능하지 않기를 바란다. 그것은 악몽 일 것입니다. 어쨌든 이것은 OS마다 다르며 C++가 아닙니다. – Martin

+2

자녀에게 관리자 액세스 권한이있는 경우 결정이 내려지면 실제로 소프트웨어를 제거 할 수 없습니다. 나는 사용자가 "제한된 사용자"로 모니터링하는 사용자를 모니터링하여 사용자가 관리자 권한으로 소프트웨어를 실행할 수있게하는 것이 좋습니다. –

+1

이 방법을 사용하면 악성 코드와 같이 "악의적 인"용도로 "처리 할 수없는"프로세스를 만들 수 있습니다. 그것은 정말로 좋은 것이 아닙니다. 또는 그런 시스템 프로세스가 멈추고 컴퓨터를 끌 수 있도록 그것을 죽일 필요가 있습니까? –

답변

1

아니요. 불가능합니다. 당신이 무엇을 하든지, 항상 기계를 끌 수 있습니다.

5

이것은 프로세스 자체에 의해 제어되는 것이 아니며, 확실히 마법 API 함수를 호출하는 것이 아닙니다. 그것이 있었다면, 모두 악성 소프트웨어는 "unkillable"으로 설정되어 시스템을 완전히 종료합니다. 오히려 이것은 실행 파일의 보안 속성, 특히 "종료"권한입니다.

당신은 Process Explorer를 다운로드하여 자신이를 둘러 볼 수 있습니다 :

  1. 을 열고 "보안"탭 프로세스
  2. 스위치에 대한 속성
  3. 은 "권한"버튼을 클릭
  4. 클릭 "고급"버튼
  5. 원하는 사용자 또는 그룹 선택
  6. "Termi 네이트 "권한.

시스템 프로세스는 SYSTEM 사용자를 제외한 모든 사용자에게 "종료"권한이 거부되었습니다. 따라서 시스템 프로세스에 대한 "종료"권한이 없기 때문에 관리자도 "액세스가 거부되었습니다"라는 메시지를 받게됩니다.

물론이 속성을 올바르게 설정해도 프로세스가 "불완전"하게되지는 않습니다. 단지 더 어렵게 만듭니다. 사용자가 그러한 프로세스를 종료 할 수있게 해주는 많은 소프트웨어 인 available online for a free download이 있으며 Windows 보안 모델에 대한 기본 지식을 가진 사람이라면 누구나 특별한 소프트웨어가 없어도이 프로세스를 처리 할 수 ​​있습니다.

그리고이 중 어느 것도 부모 제어 소프트웨어에 적합하지 않습니다. Windows 보안 모델을 사용하여 우회해야합니다. 관리자 (즉, 상위 계정)로 소프트웨어를 설치 한 다음 제한된 사용자 계정으로 하위 (개)를 설정하십시오. 제한된 사용자 계정은 필수 권한이 ​​없기 때문에 프로세스를 종료 할 수 없습니다. 관리자가 귀하의 프로세스를 죽이려고한다면, 귀하는 그러한 프로세스를 허락해야하며, 허위 "ACCESS DENIED"두통을주지 마십시오.

+0

특별한 소프트웨어를 다운로드 할 필요조차 없습니다. 상승 된 작업 관리자는 종료 권한을 무시합니다. –

0

우선, 불가능하다는 것을 알리십시오. 하지만 더 어렵게 만들 수 있습니다.의 경우 한 당신은 다른 프로세스를 사용할 수 있습니다

  1. 는 감시로하고, 프로세스뿐만 아니라 (순환 감시) 감시 시계, 그래서 "코드 그레이는"나는 추가 해요 쓴 게다가

    , 당신은 종료되고, 다른 하나를 다시 실행합니다. 그들 중 누군가가 다른 프로세스를 시작할 기회를 가지기 전에 프로세스와 워치 독을 죽임으로써이를 우회 할 수 있습니다.

1a. 공격자는 프로세스를 종료하는 대신 프로세스를 멈추게 할 수 있으므로 (1) 작동하지 않으므로 N 초마다 서로 핑 (ping) 할 수 있고 핑이없는 경우 무언가 잘못되었습니다 (복구 방법을 모르거나, 제품에 따라 다름).

  1. 서비스를받는 경우 서비스를 복구하기 위해 창을 설정할 수 있습니다.

  2. 그냥 생각, 내가 는 제품에 그렇게하지 것이다. 중요한 프로세스에서 중요한 함수를 API 후크 할 수 있습니다 (꽤 많이 호출되는 함수). 함수가 호출 될 때마다 프로세스가 가동 중인지 확인하십시오. 그렇지 않으면 REBOOT! :-피.

  3. 또 다른 와일드 한 아이디어 (제품에서하지 않겠다 !!!)는 드라이버를 작성하고 프로세스의 종료 이벤트를 찾으십시오. 누군가가 프로세스를 종료하면 블루 스크린이 발생합니다! 그걸 보여줄거야! 8-P

행운을 비네!

0

커널 모드에서 NtTerminateProcess를 연결하면 도움이 될 수 있습니다. 추신 : NtTerminateThread 또한 벙어리 버그가있는 NOD32 바이러스 백신 버전을 기억하기 때문에 프로세스가 거부되었지만 모든 스레드를 종료 할 수있었습니다. :-)

관련 문제