2011-05-05 3 views
1

나는 다음과 같은 상황이있다 - 나는 다른 프로세스에 C로 작성된 dll을 주입한다. DLL은 CLR을로드하고 관리 클래스 라이브러리에서 메소드를 호출하는 스레드를 시작한다.DLL 삽입, 스레드 및 메모리 해제

내 질문은 - 어떻게 그리고 언제 내가 (처음에는 dll을 주입하는) 대상 프로세스가 성공적으로 종료하고 주입 된 DLL로부터 잠금을 해제하는 것 등의 리소스를 해제 할 수 있도록 모든 객체의 메모리를 해제해야합니까? ?

+0

삽입 된 DLL의 메모리를 해제한다는 의미입니까? 좀 더 많은 정보를 제공해 주시겠습니까? 이런 식으로 답하기가 다소 모호하고 어렵습니다. –

+0

예. 내가 방금 DLL을 삽입 한 다음 인젝터 프로세스를 종료하면 대상 프로세스가 메모리에 남아서 사용자가 대상 프로세스의 GUI 부분을 닫았더라도 삽입 된 DLL의 파일 잠금을 유지합니다. – DarkDeny

+0

첫 번째 위치에 DLL을 삽입하는 방법을 신중하게 문서화하지 않으면이 문제를 해결할 수 없습니다. CLR을 주입하는 것은 꽤 심한 btw입니다. –

답변

0

어떻게 이것에 대해 :

이미 DLL이 대상 프로세스의 종료/정리 호출을 끼어 할 유일한 작은 걸음 더 나아가 코드를 주입하기 때문에 :

  • 점프 코드
  • 정지 스레드
  • 다시
  • 정리 MEM
  • 점프