Просто мануала нормального нет..
INT PageFaultExceptionFilter(DWORD dwCode)
{
LPVOID lpvResult;
EXCEPTION_POINTERS *ep;
if (dwCode != EXCEPTION_ACCESS_VIOLATION)
{
printf(("Exception code = %d.\n"), dwCode);
return EXCEPTION_EXECUTE_HANDLER;
}
printf("Exception is a page fault.\n");
ep = GetExcepotionInformation();
lpvResult = VirtualAlloc((LPVOID)ep->ExceptionRecord.ExceptionInformation[1], pageSize,MEM_COMMIT, PAGE_READWRITE);
if (lpvResult == NULL)
{
printf("VirtualAlloc failed.\n");
return EXCEPTION_EXECUTE_HANDLER;
}
else{printf("Allocating another page.\n");}
pageCounter++;
return EXCEPTION_CONTINUE_EXECUTION;
}
ep->ExceptionRecord.ExceptionInformation[1]
, я ожидаю, что в начало сбойной страницы. возможно как раз из-за этого....
EXCEPTION_POINTERS::ExceptionRecord.ExceptionInformation[1]
. А как же померяться?
...
Да и просто поболтать?
AddressOfEntryPoint
заинжектить длл в другой процесс
берешь таблицу исполняемого файла
Просто смотришь что такое точка входа
https://docs.microsoft.com/en-us/windows/win32/deb...
находишь точку входа, перекидываешь ее в конец, вставляешь ссылку на свой код и в конце переход на перенесенную оригинальную точку входа.
Чем это лучше предыдущего ответа?
берёшь значит таблицу входа, находишь точку входа,
есть файл exe, он должен заинжектить длл в другой процесс