Пишу функцию: Запускаю svchost.exe. Вношу код в svchost.exe. Выполняю действия и получаю IP DNS - сервера. Выполняю ExitThread(). Вопрос: как передать строку с IP в основную программу? (чтобы не через файл, не через реестр).
HANDLE CreateFileMapping( HANDLE hFile, LPSECURITY_ATTRIBUTES lpAttributes, DWORD flProtect, DWORD dwMaximumSizeHigh, DWORD dwMaximumSizeLow, LPCTSTR lpName <---- используй имя );
значит 1. зарезервировать область памяти 2. заполнить ее строкой 3. мэпировать эту область с заранее известным именем 4. ExitThread(). 5. из основной программы обратиться по имени к этой области памяти 6. унмапить тоже по имени? я правильно понял?
Помимо маппинга Атомы or WM_COPYDATA(на низком уровне работает на основе маппинга, но если отправляешь данные оконному приложению, то очень удобно)
Код (Text): ATOM GlobalAddAtom( LPCTSTR lpString ); Код (Text): UINT GlobalGetAtomName( ATOM nAtom, LPTSTR lpBuffer, int nSize );
_sheva740 Наверное лучше наоборот - в основной программе CreateFileMapping, а в инжекте OpenFileMapping W4FhLF, dimonn Для извлечения строки из атома нужно еще само значение nAtom как-то передать
Решение через одно место: конвертнуть IP адрес в DWORD и вернуть в качестве кода возврата из потока (ExitThread). В основной проге вызвать GetExitCodeThread и из DWORD'а сделать обратно строку. Минусы очевидны - использование кода возврата не по назначению. Ну и самый главный - грядёт IPv6 где этот трюк уже не получится.
roman_pro дак получилось таки! спасибо! Вот примерно так ... Код (Text): ;--------------------------------------------- ; Основная программа . . . invoke VirtualProtectEx, hProcess, ... invoke WriteProcessMemory, hProcess, ... invoke ResumeThread, hThread invoke WaitForSingleObject,hThread,... invoke GetExitCodeThread,hThread, dwModuleBase lea eax, [dwModuleBase] int 3 ; тут в EAX - адрес полученного DWORD - а из ; контекста инжектированного кода. ; По [EAX] таки лежит - ..aa aa !!! invoke CloseHandle,hThread ;--------------------------------------------- ; Кода, который вносится в память svchost.exe . . . exit: push 0aaaah callx _ExitThread разрешите вопрос еще!? как, или чем - "конвертнуть IP адрес в DWORD" ??