В общем, сделал вроде всё как надо. Взятие, установка контекста. Работает. Но на некоторых процеесах не видно, что код запускаеться. То есть: Код (Text): WaitForMultipleObjects(2,ecx,0,5000); на том конце если поток запуститься установит ивент. add esp,8 .if ~ eax write_l 'InjectIn:Seems infect was succesful.' mov [ret_val],1 .elseif eax = 1 ;our shutdown event signaled. write_l 'InjectIn:Infect fails. Windows shutdown. Rolling back infection...' jmp .frab .elseif eax = WAIT_TIMEOUT ;На некоторых процессах попадаем сюда. write_l 'InjectIn:Infect fails. WAIT TIMEOUT. Rolling back infection...' ... на некотрых процессах, за 5 секунд - ноль. Проверку на установку контекста\успешного резюминга делаю, ошибок нет. Антивирус отключен. То есть практически чистая ХП. Если увеличить время ожидание, толку вроде тоже нету. Что это может быть? Уже вроде заново перечитал и Рихтера, и полазил по форумам. Но ответа не нашел. К примеру не могу заинжектиться в mdm.exe. Вначале думал, что попадаю в них, на уже засаспеденые потоки. Но у мдм убил два потока(с помощью НтПроцессЭксплорер), оставил только 3, показывало что те меняют свой контекст во время работы. Значит живые. Но всё равно не за инжектились. Я конечно, сейчас буду с АПС разбираться, но вначале надо до ума эту процедуру уже довести. А понять в чём дело не могу. Кто знает помогите, если эти знания распостронять в открытую нельзя, то в личку.
Great Инжект делаю. Внедряю свой код в чужой процесс. Всё внедряеться и работает успешно. Но на Некторых приложениях не проходит. То есть Взял контекст, изменил на свой код там еип, и пустил поток. Все функции завершаються успешно(делаю полностью проверку всех функций), но мой код в чужом процессе не заводиться. Для проверки уже и "инт3" внедрял. - 0. То есть Контекст устанавливаеться нормально, все функции возвращают - ГУД, РезюмеСреад возвращает 1. То есть всё как надо, но поток стоит и смотрит на меня как баран на новые ворота. Была бы ошибка в коде она бы вываливалась на всех, приложениях. А то в системе у меня 43 процесса, из них в 16 не внедряеться. FreeProxy,mdm,ati2evxx и так далее. в explorer,winlogon,cmd,frigate3,totalcmd,regedit,notepadы разные, все нормально делаеться. Уже перечитал и планирование поток в винде(Внут. устр. Виндовс 2000), ответа всё нет.
FreeManCPM да. потому как на начальном этапе используються только kernel&ntdll. А их наличие проверяеться при инжекте. Да, я если даже поставлю инт3 вначале, то всё равно же программа не вываливаеться. Главное вот в чём. Запустил я вчера вроде свою прогу, а когда комп выключал, те процессы попадали. Так как моя программа к тому времени вырубилась первая при выключении винды, а процессы попытались прочитать её память(как в примере Мс-Рема). После этого уже дописал код, что бы при выключении винды откатывать инжет "неижектищихся процессов" назад. Но хочеться всё таки, заразить все процессы в системе, что бы не было белых пятен. Конечно могу код привести, но не думаю, что он чем то поможет. Код так сказать, почти стандартен. Если у кого то есть пример инжекта с установкой контекста, дайте поюзать, глянуть заразит ли он те процессы.
FreeManCPM хэнд потока вообще не закрваю, только что попробовал после резюма закрывать, всё равно тоже. Ну а на процесс не закрываю. А вообще правильно как? Нигде не читал, что если хэндл на поток\процесс не закрыт, то будет что то страшное.
раз процессы раздупляюцо, когда твой закрывается, значет случается чтолибо, что заставляет их это сделоть. йа предположил, что закрываются хендлы...
FreeManCPM но тогда и винда закрываеться. то есть их сама винда раздуплить может. Если закрываеться мой процесс то они всё равно не раздупляються. Если я при неудачном инжекте, не делаю откат назад(то есть не востанавливаю контекст) и моя программа завершаеться, то всё нормально до закрытия винды. А потом винды выключаеться, и всё потоки оживают. И Исполняеться мой код: Код (Text): align 4 LoaderCode: push 0 ;lpNumberOfBytesRead push InjectSize ;nSize push esi ;lpBuffer push ebp ;lpBaseAddress push edi ;hProcess call ebx ;ZwReadVirtualMemory который вызывает исключение.(так как моего процесса из которого читать к тому времени нет в живых.) З.Ы. Только что проверил. Запустил свой код в процесс, и сразу вышел из своей проги. Смотри по логам, в который поток в том процессе мы внедерились. Открываю в оле. И вижущас буду пытаться вставить скрин) Аттачи видно отменили... Но оля показывает что поток запущен, но он же стоит на месте. Никак вьехать не могу, в чём дело. Вижу что ЕИП стоит на моем коде и надпись:"раннинг". Что за..