2013-02-04 2 views
1

나는이 같은 일부 공간을 확보하기 위해 원격 프로세스에하고 VirtualAllocEx를 사용하여 실행 :점검/

VirtualAllocEX (RemoteProcessHandle, nil, SizeInBytes, MEM_COMMIT or MEM_RESERVE, PAGE_EXECUTE_READWRITE); 

가 그럼 난/"입력"그럼 WriteProcessMemory

에 할당 된 주소 공간을 쓰기 I 적절하게 사용

VirtualFreeEx (RemoteProcessHandle, Address, 0, MEM_RELEASE); 

할당 된 공간을 해제하십시오.

VirtualFreeEx가 성공적으로 완료되었는지 확인하기 위해 호출 된VirtualFreeExVirtualAllocEx의 주소를 확인 할 수 있습니까?

+1

['VirtualFreeEx'] (http://msdn.microsoft.com/en-us/library/windows/desktop/aa366894(v=vs.85).aspx) 함수는 BOOL을 반환하므로이 값을 확인하십시오. 전화 할 때. – TLama

+0

미안하지만 충분히 정확하지 않았습니다. 나는 VirtualFreeEx가 호출 된 후 그것을 검사하는 것이 가능하다는 것을 의미한다. (다른 스레드가이 공간이 최근에 VirtualFreeEx에 의해 해제되었는지 확인하려고합니다. –

+0

VirtualQueryEx를 사용하여 주소 할당 여부를 확인할 수 있습니다. 그러나 주소 * 할당 된 경우 할당 또는 누군가인지 여부를 알 수 없습니다 다른 주소. –

답변

3

주소를 시스템에 반환하면 나중에 해당 주소를 참조 할 수 없습니다. VirtualFreeEx으로 전화를 걸었 으면 Address을 다시 참조하면 안됩니다. 일단 주소를 시스템에 반환하면 시스템이 주소를 소유합니다. 해당 주소가 앞으로 유효하게되는 유일한 방법은 VirtualAllocEx을 다시 호출하는 것입니다.

+0

고마워. 나는 그 시스템이 미래에 그 주소를 실제로 소유하고 있다는 것을 몰랐다. / –