|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Окт 28, 2004 19:29:23 Отставить единственный. Моча в голову ударила - придумал другой способ. Запустить любой процесс (типа Calc.exe) c флагом CREATE_SUSPENDED, потом сделать WriteProcessMemory, те скопировать нужный кусок в чужой процесс и потом продолжить выполнение. В принципе должно работать, только надо не забыть поставить права доступа на страницы в чужом процессе PAGE_EXECUTE_READWRITE |
|
|
Дата: Окт 28, 2004 19:32:01 Отставить единственный. Моча в голову ударила - придумал другой способ. Запустить любой процесс (типа Calc.exe) c флагом CREATE_SUSPENDED, потом сделать WriteProcessMemory, те скопировать нужный кусок в чужой процесс и потом продолжить выполнение. В принципе должно работать, только надо не забыть поставить права доступа на страницы в чужом процессе PAGE_EXECUTE_READWRITE |
|
|
Дата: Окт 28, 2004 20:31:24 · Поправил: bogrus alixПопробовал заменит BASE с 40000 на 10000 при старте проги получил GPF Всё там нормально работает с BASE 10000, на w2k так точно (w98 у меня нету) Vb оказывается ещё и ассемблерные листинги может генерить _1046699318__loader.zip |
|
|
Дата: Окт 29, 2004 10:39:01 to bogrus: Спасибо.. А как VB может использовать ассемблер? |
|
|
Дата: Окт 29, 2004 10:39:35 to Turkish: А примеры копирования кода в чужой процесс есть? |
|
|
Дата: Окт 29, 2004 11:04:48 Take Control of the Compile Process alix Вот тут есть статья, но главное стяни оттуда код, там есть add-in к vb и примеры. Потом надо пропатчить твой loader.dll, чтобы он грузил мишень по адресу 400000h, а не куда ему вздумается |
|
|
Дата: Окт 29, 2004 12:47:42 Ок, спасибо! Сейчас посмотрю... :)) |
|
|
Дата: Окт 29, 2004 20:44:03 Есть. format PE GUI 4.0 include '%include%\win32a.inc' start: mov eax,[endflag] or eax,eax jz @f invoke LoadLibrary,_user invoke MessageBox,0,_message,_file,MB_OK ret @@: invoke GetStartupInfo,sinfo invoke CreateProcess,0,_file,0,0,0,CREATE_SUSPENDED,0,0,sinfo,hProcess invoke OpenProcess,PROCESS_ALL_ACCESS,0,[dwProcessID] mov [hProcess],eax invoke VirtualProtectEx,eax,400000h,2000h,PAGE_EXECUTE_READWRITE,hThread mov [endflag],eax invoke WriteProcessMemory,[hProcess],400000h,400000h,2000h,0 invoke OpenThread,THREAD_ALL_ACCESS,0,[dwThreadID] push eax invoke ResumeThread,eax call [CloseHandle] invoke CloseHandle,[hProcess] ret THREAD_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED + SYNCHRONIZE + 3FFh) endflag dd 0 _file db "desktop.exe",0 _message db "Running in another process",0 sinfo STARTUPINFO ;PROCESS_INFORMATION hProcess dd 0 hThread dd 0 dwProcessID dd 0 dwThreadID dd 0 _user db "user32",0 data import library kernel32,'KERNEL32',\ user32,'USER32' include '%include%\apia\user32.inc' include '%include%\apia\kernel32.inc' end data Написано на ФАСМЕ, думаю разберетесь что и как. Главное в скопрированном коде обязательно надо делать LoadLibrary на все дллки, кроме Кернела. |
|
|
Дата: Окт 29, 2004 20:53:56 Для данной проблемы этот подход применим так: запускаем большой екзешник (на Explorer не коситься, с ним такое не пройдет). Разбиваем образ из ресурса на секции и копируем в чужой процесс, устанавливаем нужный нам контекст в треде и запускаем его. |
|
|
Дата: Ноя 1, 2004 12:49:52 alix Ахтунг !!!!! Смареть ф книгу Гари Неббета. |
|
|
Дата: Ноя 2, 2004 09:46:18 [quote][/quote] Что за Гари Неббет и где взять книгу? |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.471 |