Здравствуйте. Кто нибудь знает где можно почитать про то как создать объект ядра-процесс. Собственно пытаюсь сделать свой CreateProcess, только из памяти. На сколько я знаю виндовский делает так: 1.Находит указанный файл. 2.Создаёт объект ядра процесс. 3.делает маппинг этого файла. 4.загружает его по необходимому адресу. вроде так. Я пытаюсь сделать чтобы процесс создавался из уже мэпированного файла(грубо говоря из памяти.) Но чего то нормальной информации о том как манипулировать с таким объектом ядра не нахожу. Может кто подскажет? Заранее благодарен. С уважением hawk3500/
hawk так вам нужно создавать процесс из ядра или из юзермода? Если из юзермода то проще создать левый процесс замороженым, переписать его образ и отпустить.
не все так просто, я же тебе писал об этом... надо ещё регистры поправить... и ещё кстати с пебом есть некоторые проблемы... и вообще говоря, лучше не переписывать образ, а размаппить и замаппить на его место свой, так как потенциально возможны проблемы с памятью (например если новый образ больше старого)... надо бы еще зарегистрировать в csrss... хз... посмотри в сторону ZwCreateProcess, может там что-то найдешь...
наткнулся на реализацию аналога функции fork под винду, сразу вспомнил об этой теме: http://www.cygwin.com/ml/cygwin-developers/2001-02/msg00032.html
litrovith всымсле? насколько я понял автору надо банально распаковать екзешник в память и запустить. Отмапить,пофиксать импорты релоки и т.д, настроить PEB. При чем тут объект ядра, тем более что тема в разделе WIN32.
Если он правильно выразился, то ему нужно отдельное адресное пространство. Хотя, возможно, он просто не совсем уверен, что ему нужно
Именно так. Мне нужно отдельное адресное пространство. Общий смысл заключается в том что есть желание создать процесс который используя свои ресурсы(в которых содержаться скомпилированные exe файлы) умел запускать как отдельные процессы.
Т.е. в ресурсах лежат другие екзешники? Ну так дропни их на диск и сделай CreateProcess, чем не подходит?
Да не подходит по той причине что на диск кидать их очень не хочется. Ну на счёт ацкой не знаю))))) К ним это ну никак не относиться. С ними особых затруднений нет, а здесь скорее всего вопрос больше относиться к сфере безопасности кода. на счёт релокеёшенов......ну тут не совсем все просто на сколько я понимаю. Дело в том что exe пожаты(расжимать не вариант), а как в такой ситуации поступать с релокейшеноми я не в курсах. да смотреть то смотрел...только вот если построить этот механизм опираясь на сорцы допустим Win2k будет ли это работать в Windows7? Я на такой вопрос крайне затрудняюсь ответить..........
а никак ты их не настроишь, если секции с релоками нет... заливай образ по базовому адресу... в чем проблема то? есть канеш вариант взять базовый адрес и размер бинарника и пройтись по секциям в поисках двордов в интервале <базовый адрес> - <базовый адрес + размер>, но это - бред... кстати о малваре... лучше не держи PE-бинарщину в ресурсах, это самое очевидное... лучше уж в секцию данных положить...
Ну если вам охота заниматься подобным гемороем просто из-за того что "не хочется" это дело ваше)) Какая безопасность? Вы думаете есть большая разница если возьмут ваш екзе с диска либо из ресурсов вытянут?
да, нет никакой разницы... даже если бинарщина закриптована будет... самое клевое ухищерение, что я видел было: весь код и данные загрузщика и полезная нагрузка были в перемешку в одной секции, код по мере исполнения расшифровывал следующие блоки опкодов и данные... вообще, мне кажется, что сейчас уже пора обращать свое внимание на интерпретаторы байт кодов и встраиваемые виртуальные машины... имхо канеш...