응용 프로그램 실행을 차단하는 미니 필터를 쓰고 있습니다. 미니 필터는 usermode 앱에 IRP_MJ_CREATE에 대한 파일 검사를 요청합니다. Usermode 응용 프로그램은 PE 파일 (.exe/.dll/etc) 실행 여부를 검사합니다.Minifilter : 알림 응용 프로그램 차단
현재 usermode 앱이 no라고하면 미니 필터는 액세스 거부 상태를 발생시키고 파일 열기를 취소합니다. 액세스 거부 반환 값을 발행 할 때 사용자의 관점에서,
문제이다 (예, FltCancelFileOpen
사용), 그들은 같은 시스템에서 메시지 상자를 얻을 것이다 :
또 다른 예를 들어, 특정 차단하는 경우 로드되는 DLL을 다른 메시지 박스가 나타납니다
내가 달성하고자하는 것은 여전히 개방을 거부하지만, 메시지 상자를 표시하고 사용자 친화적 인 ERR은 내 자신의 통지를 가지고하는 것입니다 또는 앱이 차단되었음을 나타내는 메시지가 표시됩니다. 예는 Windows 8 smartscreen 기능과 유사합니다.이 기능은 액세스 거부 또는 유사한 메시지 상자없이 차단 된 exe를 실행할 때 사용자에게 알립니다.
어떻게하면됩니까?
통찰력을 가져 주셔서 감사합니다. 아마도 내가 찾고있는 것은 실행되기 전에 응용 프로그램을 종료시키는 것입니다. 예 : IIRC, PsSetImageNotify. –
실행 가능한 계획처럼 들리지 않습니다. 해당 DLL의 로딩은 로더 잠금 상태에서 발생합니다. 로드가 성공하면 DllMain은 동일한 잠금 하에서 실행됩니다. 응용 프로그램을 종료하려면 DllMain이 완료 될 때까지 기다릴 수 있도록 로더 잠금도 필요합니다. (필자는 Windows가 요즘 런 어웨이 DllMains를 없앨 것이라고 생각하지만 순식간에 발생하지는 않습니다.) – MSalters
여기에 그 실현 가능성에 대해서는 잘 모르겠다 고 생각합니다. 라이브러리를 열어 자신이 만든 다른 파일로 리디렉션 할 수 있습니다. 빈 DllMain. 이렇게하면 호출자가 성공적으로로드했다고 생각할 수 있습니다. 발신자가 다음에 시도하는 모든 항목에 여전히 문제가 있습니다. 즉, GetProcAddress가 실패합니다. GetProcAddress를 호출하기 전에 프로세스를 종료 할 수 있습니다. – lordjeb