Сейчас на форуме: 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 файла |