Доброго всем времени!
Осваиваю немного внедрение в ПЕ файл своего кода.
Сам шелл-код генерируется одной из утилит типа DLL2ShellCode.
В своем коде я
Запоминаю значение старой точки входа OldEntryPoint = EntryPoint + ImageBase;
Добавляю новую секцию
Загружаю туда шеллкод
Меняю все необходимые поля заголовков и т.д.
В общем на тестовом примере все работает, но мне в конце нужно вернуть управление на OldEntryPoint
пытался сделать как то так(это сама длл, которая внедряется как шеллкод в целевой ПЕ):
но это не работает(
Подозреваю, я что то глобально не допонимаю, но что?
подскажите, куда копать
Осваиваю немного внедрение в ПЕ файл своего кода.
Сам шелл-код генерируется одной из утилит типа DLL2ShellCode.
В своем коде я
Запоминаю значение старой точки входа OldEntryPoint = EntryPoint + ImageBase;
Добавляю новую секцию
Загружаю туда шеллкод
Меняю все необходимые поля заголовков и т.д.
В общем на тестовом примере все работает, но мне в конце нужно вернуть управление на OldEntryPoint
пытался сделать как то так(это сама длл, которая внедряется как шеллкод в целевой ПЕ):
C++:
#define WIN32_LEAN_AND_MEAN
#include <Windows.h>
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
DWORD64 rwx = 7083504; // это для теста жестко прошит адрес OEP
FARPROC fp = (FARPROC)rwx;
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
//OutputDebugStringA("DLL_PROCESS_ATTACH");
MessageBoxA(0, "DllMain!", "", 0);
fp(); // По идее тут должен вызваться код по OEP...
break;
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
но это не работает(
Подозреваю, я что то глобально не допонимаю, но что?
подскажите, куда копать