"서명"으로 함수를 검색하려고합니다.함수를 서명으로 검색 할 때 주소 범위를 아는 방법은 무엇입니까?
그러나 검색 할 주소 범위를 알 수는 없습니까?
VirtualQuery() 및 GetNativeSystemInfo()를 살펴 봤지만 제대로 된 경로에 있지 않습니까?
편집 : 질문 재 시도. .
나는 내 코드에서 실행되는 프로세스의 실행 페이지의 시작과 끝 주소를 얻는 방법을 알아 내기 위해 노력하고있어 Win32 API를 사용
이것은 내가 무엇을 시도했다입니다 :
SYSTEM_INFO info;
ZeroMemory(&info, sizeof(SYSTEM_INFO));
GetNativeSystemInfo(&info); // GetSystemInfo() might be wrong on WOW64.
info.lpMinimumApplicationAddress;
info.lpMaximumApplicationAddress;
HANDLE thisProcess = GetCurrentProcess();
MEMORY_BASIC_INFORMATION memInfo;
ZeroMemory(&memInfo, sizeof(memInfo) );
DWORD addr = (DWORD)info.lpMinimumApplicationAddress;
do
{
if (VirtualQueryEx(thisProcess, (LPVOID)addr, &memInfo, sizeof(memInfo)) == 0)
{
DWORD gle = GetLastError();
if (gle != ERROR_INVALID_PARAMETER)
{
std::stringstream str;
str << "VirtualQueryEx failed with: " << gle;
MessageBoxA(NULL, str.str().c_str(), "Error", MB_OK);
}
break;
}
if (memInfo.Type == MEM_IMAGE )
{
// TODO: Scan this memory block for the the sigature
}
addr += info.dwPageSize;
}
while (addr < (DWORD)info.lpMaximumApplicationAddress);
여기에 질문으로이 작업을 수행하는 이유는 나는 그것의 서명에 의해 내 보내지 않은 기능을 찾고 있는지
:
Find a function by it signature in Windows DLL
"코드 서명 검색"에 대한 답변보기.
주소 범위를 열거하고 있지만 예상 범위가 무엇인지 알지 못하기 때문에 이것이 올바른지 아닌지 알 수 없습니다. MSDN을 둘러 보면서 나올 수있는 최고의 제품입니다.
질문이 잘 작성되지 않았습니다. 그것의 일부가 추론 될 수 있습니다 (즉, 어떤 종류의 Windows에 대해 말하고있는 것입니다). 그러나 확실히 더 잘할 수 있습니다. 예를 들어, 서명이란 정확히 무엇을 의미합니까? –
1) 정확히 무엇을하려고하는지, 2) 어떤 플랫폼을 사용하고 있는지, 3) 사용하고있는 도구/절차 4) "작동하지 않는 것"의 예 – paulsm4