2015-01-11 2 views
-2

나는 모든 모듈을 프로세스에로드하고 금지 된 DLL 파일의 데이터베이스와 비교하는 프로그램을 가지고있다.이 DLL은 잘 작동하지만 너무 단순하다 (그냥 dll 파일의 이름을 바꾸면된다. 당신이 그 과정에 주입하기를 원하는). 그래서 DLL 파일을 구별 할 수있는 방법을 묻습니다. C#에서 사용할 수있는 고유 한 식별자가 있습니까? 감사.DLL 파일을 구별하는 방법

편집 : 나는 C++로 작성된 나에 의해 작성되지 않은 다른 프로그램의 dll 파일을 검사하는 프로그램을 작성한다는 사실을 잊어 버렸다.

+0

잘 있습니다 [... 수] (http://msdn.microsoft.com/en-us/library/system.security.cryptography.sha256%28v=vs.110%29.aspx) –

+0

금단의 파일은 매우 쉽습니다. 그러나 그들은 아마 그렇지 않습니다. 실제 상황을 자세히 설명해야합니다. –

+0

@HenkHolterman 죄송합니다. 서명하지 않았습니다. –

답변

0

How do I list all loaded assemblies? 프로세스에로드 된 모든 모듈을 반복하고 파일 이름이 변경 될 때 ModuleVersionId과 같이 각각 module이 제대로 있는지 확인하십시오.

+0

LoadForReflection을 사용하여 특정 clasess를 확인할 수 있습니다. 그러나 정의에 대한 의문은 분명하지 않다. –

+0

@sevzas 내가 만든 적이없는 다른 응용 프로그램의 dll 파일을 검사한다는 것을 잊어 버렸습니다. 그렇다면 "ModuleVersionId"에 액세스 할 수 없습니다. 나는 조금 더 조사했고 "ModuleMemorySize"를 발견했다. 나는 그것이 유일하지 않다는 것을 안다, 그러나 크기가 만날 기회는 아주 낮다. 어떻게 생각해? –

+0

그래서 검사기 프로그램이 다른 * .net 프로세스의 모듈을 검사합니까? – sevzas

0

이 파일을 원격으로 처리 할 수 ​​있는지 확실하지 않지만 DLL 파일을 해시 한 후 파일의 알려진 신뢰할 수있는 해시를 확인해보십시오. 이 경우 이미 dll 해시의 신뢰할 수있는 목록이 있어야하지만 현재 보안 조치를 무시하기 위해 단순히 이름을 바꾸지 않도록 보호해야합니다.