Здравствуйте.
Изучаю Manual Map Injecting, использую код от
В своем проекте есть необходимость делать deattach, FreeLibraryAndExitThread не подходит т.к. нет самого модуля.
пробовал этот метод
но он не работает (проверял через
так же пробовал метод
но он крашит процесс.
ImageBase - адрес, куда мапится длл, SizeOfImage - размер dll
В чем может быть проблема?
Изучаю Manual Map Injecting, использую код от
Гости не видят ссылку
Войти или зарегистрироваться
В своем проекте есть необходимость делать deattach, FreeLibraryAndExitThread не подходит т.к. нет самого модуля.
пробовал этот метод
C++:
DECLSPEC_NORETURN void WINAPI ManualFreeLibraryAndExitThread(LPVOID imageBase, SIZE_T imageSize) {
printf("Call erase... \n");
void* exitThread = GetProcAddress(GetModuleHandle("Kernel32.dll"), "ExitThread");
void* virtualFree = GetProcAddress(GetModuleHandle("Kernel32.dll"), "VirtualFree");
__asm
{
mov esi, imageSize
mov edi, imageBase
push 0
push exitThread
push edi
push esi
push MEM_RELEASE
push exitThread
mov esi, virtualFree
jmp esi
}
}
Гости не видят ссылку
Войти или зарегистрироваться
+ видно, что не освобождается память в процессе)так же пробовал метод
C++:
__declspec(noreturn) void ExitDll(void* ImageBase, SIZE_T SizeOfImage)
{
auto* pmemset = memset;
auto* pVirtualFree = VirtualFree;
auto* pExitThread = ExitThread;
pmemset(ImageBase, 0, SizeOfImage);
pVirtualFree(ImageBase, 0, MEM_RELEASE);
pExitThread(0);
}
auto* pExitDll = reinterpret_cast<decltype(ExitDll)*>(VirtualAlloc(nullptr, 0x100, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE));
memcpy(pExitDll, ExitDll, 0x100);
pExitDll(imageBase, imageSize);
но он крашит процесс.
ImageBase - адрес, куда мапится длл, SizeOfImage - размер dll
В чем может быть проблема?