| Сейчас на форуме: Rio, tyns777, zombi-vadim (+7 невидимых) | 
| eXeL@B —› Программирование —› Запуск процесса без PE файла | 
| Посл.ответ | Сообщение | 
| 
 | 
Создано: 06 июня 2014 13:55  · Личное сообщение · #1 У кого-нибудь есть рабочий на всех системах код? Я написал под win7, но на 8.1 уже не работает, остальные не проверял. Code: 
 CreateRemoteThread на win7 возвращает ERROR_NOT_ENOUGH_MEMORY, на 8.1 ERROR_ACCESS_DENIED Спасибо. ![]()  | 
| 
 | 
Создано: 06 июня 2014 21:41  · Личное сообщение · #2  | 
| 
 | 
Создано: 06 июня 2014 22:16 · Поправил: Treant  · Личное сообщение · #3 Dr0p Я вам LDE на фолтах принес, работает через Debug API. На XP не работает, т.к используется DEP. И мне нужен запуск процесса без файла, будет совсем годнота. Сейчас через секцию попробую сделать, или буду с этими ошибками разбираться.   6e4c_06.06.2014_EXELAB.rU.tgz - ProcessLDE.zip
  | Сообщение посчитали полезным: Dr0p | 
| 
 | 
Создано: 06 июня 2014 22:29  · Личное сообщение · #4 Treant Погань какая то. Это мусор, он работать не может. По сабжу - запуск процесса средствами нэйтива без файла не возможен. Так как аргумент там файловая секция. Я понимаю что вы пытаетесь переписать образ в памяти приложения и совсем криво выразились, но сути это не меняет. Нужно использовать загрузчик. ![]()  | 
| 
 | 
Создано: 06 июня 2014 22:35  · Личное сообщение · #5  | 
| 
 | 
Создано: 06 июня 2014 22:36  · Личное сообщение · #6  | 
| 
 | 
Создано: 06 июня 2014 22:39  · Личное сообщение · #7  | 
| 
 | 
Создано: 06 июня 2014 22:41  · Личное сообщение · #8  | 
| 
 | 
Создано: 06 июня 2014 22:45  · Личное сообщение · #9  | 
| 
 | 
Создано: 06 июня 2014 22:57 · Поправил: Dr0p  · Личное сообщение · #10 Treant Я на угад сказал, перед этим не сморел ваш код. Суть в том, что вы мою методу зарипали. Плюс в том, что выполняется изоляция стека, чего собстно я сразу и дал пример про стек. Спижжено с RLDE. Что вы мне хотите этим доказать ? Да, это крайне просто реализуется при изоляции контекста - в ядре или через дебагапи. Вот только практически это смысла не имеет в вашем случае. Плюсану за то, что вы поняли суть механизма. Респект. ![]()  | 
| 
 | 
Создано: 06 июня 2014 23:04  · Личное сообщение · #11  | 
| 
 | 
Создано: 06 июня 2014 23:10 · Поправил: Dr0p  · Личное сообщение · #12 Treant Лет 6 или хз скока на лабе обсуждалась помню та тема с фрименом. Он вроде хотел стартануть процесс не из файловой секции(без привязки к файлу). Есно ничо не вышло. В ядре проверки имеются на привязку к файлу. Даже если из ядра стартануть, то так просто не выйдет - нтлдр тоже файл юзает. Суть вашего вопроса не совсем понятна. В коде примитивный инжект. Ели бы там был саспенд и освобождении екзешной проекции, то это типичная подмена образа. А тут не понятно, в частности причём тут "без пе". ![]()  | 
| 
 | 
Создано: 06 июня 2014 23:14  · Личное сообщение · #13  | 
| 
 | 
Создано: 06 июня 2014 23:16  · Личное сообщение · #14  | 
| 
 | 
Создано: 06 июня 2014 23:27 · Поправил: Dr0p  · Личное сообщение · #15 Treant > Должен быть создан процесс и запущены потоки в нем должны быть без обращения к диску. Штатными средствами процесс запустить без файла невозможно. Аргумент нтапи - файловая секция. Потоки в процессе запускаются по логике удалённо, тоест из другого процесса, вероятно родителя. Потоки не связаны с файлами, это не файловые обьекты. Вам нужен инжект и загрузка из памяти. ![]()  | 
| 
 | 
Создано: 06 июня 2014 23:40  · Личное сообщение · #16 Dr0p >Штатными средствами процесс запустить без файла невозможно. Аргумент нтапи - файловая секция. Код в 1м посте работает (просто на win8.1 при создании потока STATUS_PROCESS_IS_TERMINATING). Т.е создается процесс без секции, выделяется память в нем, пишутся данные туда, все нормально, проблема только при создании потока. Может есть там какие то варианты поправить этот статус? ![]()  | 
| 
 | 
Создано: 06 июня 2014 23:46  · Личное сообщение · #17  | 
| 
 | 
Создано: 07 июня 2014 00:00 · Поправил: F_a_u_s_t  · Личное сообщение · #18  | 
| 
 | 
Создано: 08 января 2015 00:05  · Личное сообщение · #19 Пореверсил немного. Windows 8.1. Еще при создании процесса с нулевой секцией в структуре _EPROCESS выставляется бит Flags.ProcessDelete; В дальнейшем при вызове RtlCreateUserThread->NtCreateThreadEx->PspCreateThread->PspInsertThread происходит проверка этого значения и, в случае обнаружения, возвращается STATUS_PROCESS_IS_TERMINATING. ![]()  | 
| eXeL@B —› Программирование —› Запуск процесса без PE файла | 




 
 Для печати