eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 8 мая!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: hlmadip, darsy (+2 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Программирование —› Запуск процесса без PE файла
Посл.ответ Сообщение

Ранг: 3.0 (гость)
Статус: Участник

Создано: 6 июня 2014 13:55 New!
Цитата · Личное сообщение · #1

У кого-нибудь есть рабочий на всех системах код?
Я написал под win7, но на 8.1 уже не работает, остальные не проверял.
Code:
  1. NtCreateProcess(&hProcess, PROCESS_ALL_ACCESS, NULL, GetCurrentProcess(), NULL, NULL, NULL, NULL);
  2. Address1 = VirtualAllocEx(hProcess, NULL, 0x1000, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
  3. WriteProcessMemory(hProcess, Address1, Address, 0x1000, &dwWritten);
  4. // Windows8.1 :
  5. // RtlCreateUserThread->NtCreateThreadEx => STATUS_PROCESS_IS_TERMINATING
  6. RtlCreateUserThread(hProcess, NULL, NULL, NULL, NULL, NULL, Address1, NULL, NULL, NULL);

CreateRemoteThread на win7 возвращает ERROR_NOT_ENOUGH_MEMORY, на 8.1 ERROR_ACCESS_DENIED
Спасибо.


Ранг: 70.5 (постоянный)
Статус: Участник

Создано: 6 июня 2014 21:41 New!
Цитата · Личное сообщение · #2

Treant

Зная вас, скажу - пичально

Ранг: 3.0 (гость)
Статус: Участник

Создано: 6 июня 2014 22:16 · Поправил: Treant New!
Цитата · Личное сообщение · #3

Dr0p
Я вам LDE на фолтах принес, работает через Debug API.
На XP не работает, т.к используется DEP.
И мне нужен запуск процесса без файла, будет совсем годнота.
Сейчас через секцию попробую сделать, или буду с этими ошибками разбираться.

{ Атач доступен только для участников форума } - ProcessLDE.zip

| Сообщение посчитали полезным: Dr0p



Ранг: 70.5 (постоянный)
Статус: Участник

Создано: 6 июня 2014 22:29 New!
Цитата · Личное сообщение · #4

Treant

Погань какая то. Это мусор, он работать не может.

По сабжу - запуск процесса средствами нэйтива без файла не возможен. Так как аргумент там файловая секция.

Я понимаю что вы пытаетесь переписать образ в памяти приложения и совсем криво выразились, но сути это не меняет. Нужно использовать загрузчик.

Ранг: 3.0 (гость)
Статус: Участник

Создано: 6 июня 2014 22:35 New!
Цитата · Личное сообщение · #5

Dr0p
>Работать не может
>запуск процесса средствами нэйтива без файла не возможен
Но у меня все работает на семерке же, секция опциональный параметр.


Ранг: 70.5 (постоянный)
Статус: Участник

Создано: 6 июня 2014 22:36 New!
Цитата · Личное сообщение · #6

Treant

Ложь.

Ранг: 3.0 (гость)
Статус: Участник

Создано: 6 июня 2014 22:39 New!
Цитата · Личное сообщение · #7

Dr0p
Что вам скриншот штоле приложить?
Говорю же работает, задавайте любую хитровыкрученную комбинацию байт, выдаст правильную длину.


Ранг: 70.5 (постоянный)
Статус: Участник

Создано: 6 июня 2014 22:41 New!
Цитата · Личное сообщение · #8

Treant

Аа вы про дизасм. Давайте потестим, push 123, или быть может mov ss,ax ?

Ранг: 3.0 (гость)
Статус: Участник

Создано: 6 июня 2014 22:45 New!
Цитата · Личное сообщение · #9

Dr0p
0x6A, 0x7B - push 123 - результат верный, 2 байта
0x8E, 0xD0 - mov ss, ax - результат верный, 2 байта


Ранг: 70.5 (постоянный)
Статус: Участник

Создано: 6 июня 2014 22:57 · Поправил: Dr0p New!
Цитата · Личное сообщение · #10

Treant

Я на угад сказал, перед этим не сморел ваш код. Суть в том, что вы мою методу зарипали. Плюс в том, что выполняется изоляция стека, чего собстно я сразу и дал пример про стек. Спижжено с RLDE. Что вы мне хотите этим доказать ?

Да, это крайне просто реализуется при изоляции контекста - в ядре или через дебагапи. Вот только практически это смысла не имеет в вашем случае.

Плюсану за то, что вы поняли суть механизма. Респект.

Ранг: 3.0 (гость)
Статус: Участник

Создано: 6 июня 2014 23:04 New!
Цитата · Личное сообщение · #11

Dr0p
Я хотел просто запуск процесса без файла, а LDE это же с вашего дизасма, да, просто он тормозить будет, если на каждой инструкции грузить файл с диска.


Ранг: 70.5 (постоянный)
Статус: Участник

Создано: 6 июня 2014 23:10 · Поправил: Dr0p New!
Цитата · Личное сообщение · #12

Treant

Лет 6 или хз скока на лабе обсуждалась помню та тема с фрименом. Он вроде хотел стартануть процесс не из файловой секции(без привязки к файлу). Есно ничо не вышло.

В ядре проверки имеются на привязку к файлу. Даже если из ядра стартануть, то так просто не выйдет - нтлдр тоже файл юзает.

Суть вашего вопроса не совсем понятна. В коде примитивный инжект. Ели бы там был саспенд и освобождении екзешной проекции, то это типичная подмена образа. А тут не понятно, в частности причём тут "без пе".


Статус: Пришелец

Создано: 6 июня 2014 23:14 New!
Цитата #13

Dr0p пишет: А тут не понятно, в частности причём тут "без пе"

Видимо из буфера первого процесса запустить второй процесс, иначе автор наркоман.

Ранг: 3.0 (гость)
Статус: Участник

Создано: 6 июня 2014 23:16 New!
Цитата · Личное сообщение · #14

Dr0p
Должен быть создан процесс и запущены потоки в нем должны быть без обращения к диску.
Я думаю образ PE можно в памяти сформировать, просто надо его как то скормить загрузчику потом.


Ранг: 70.5 (постоянный)
Статус: Участник

Создано: 6 июня 2014 23:27 · Поправил: Dr0p New!
Цитата · Личное сообщение · #15

Treant

> Должен быть создан процесс и запущены потоки в нем должны быть без обращения к диску.

Штатными средствами процесс запустить без файла невозможно. Аргумент нтапи - файловая секция.

Потоки в процессе запускаются по логике удалённо, тоест из другого процесса, вероятно родителя. Потоки не связаны с файлами, это не файловые обьекты.

Вам нужен инжект и загрузка из памяти.

Ранг: 3.0 (гость)
Статус: Участник

Создано: 6 июня 2014 23:40 New!
Цитата · Личное сообщение · #16

Dr0p
>Штатными средствами процесс запустить без файла невозможно. Аргумент нтапи - файловая секция.
Код в 1м посте работает (просто на win8.1 при создании потока STATUS_PROCESS_IS_TERMINATING).
Т.е создается процесс без секции, выделяется память в нем, пишутся данные туда, все нормально, проблема только при создании потока.
Может есть там какие то варианты поправить этот статус?


Ранг: 70.5 (постоянный)
Статус: Участник

Создано: 6 июня 2014 23:46 New!
Цитата · Личное сообщение · #17

Treant

Не знаю, никогда такого не видел.


Статус: Пришелец

Создано: 7 июня 2014 00:00 · Поправил: F_a_u_s_t New!
Цитата #18

Treant пишет: Может есть там какие то варианты

У j00ru был лоадер, хотя хз остались ли исходники.

Поправил
Именно win 8 ( хотя кому она нужна )

Ранг: 3.0 (гость)
Статус: Участник

Создано: 8 января 2015 00:05 New!
Цитата · Личное сообщение · #19

Пореверсил немного.
Windows 8.1.
Еще при создании процесса с нулевой секцией в структуре _EPROCESS выставляется бит Flags.ProcessDelete;
В дальнейшем при вызове RtlCreateUserThread->NtCreateThreadEx->PspCreateThread->PspInsertThread происходит проверка этого значения и, в случае обнаружения, возвращается STATUS_PROCESS_IS_TERMINATING.
 eXeL@B —› Программирование —› Запуск процесса без PE файла

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS