PDA

Просмотр полной версии : Delphi: Запустить приложение с параметрами в потоке


o_OBallers
11.10.2007, 13:24
Как запустить приложение с параметрами в отдельном потоке то есть, что-бы не создавался новый процесс.

LEE_ROY
11.10.2007, 13:58
ты сам походу непонял что хотел... заинжектить можно, тольок смысла - zero.

Robin_Hood
11.10.2007, 20:32
никак. поток можно запустить с кодом, который есть в приложении, если на пальцах.

KEZ
11.10.2007, 21:50
Как запустить приложение с параметрами в отдельном потоке то есть, что-бы не создавался новый процесс.


Взять нужный код, потом PsCreateSystemThread() в ядре
круто?

DWORD
11.10.2007, 22:16
Э... Так ведь память будет вся той программы, где ты решил запускать свой код, какой в этом смысл, ничего работать не будет (если это конечно не вредительский какой-нибудь фрагмент типа "шеллкода")

GlOFF
11.10.2007, 22:21
o_OBallers Если ты силен в PE формате, то можно запускать файл, без создания отдельного процеса путем проецирования файла в память, т.е. выполнить работу загрузчика - произвести работу с импортом и другими директориями в файле - а потом создать поток через CreateTheared указав в виде процедуры адресс оригинальной точки входа в программу OEP...

// Конечно накладываются некоторые ограничения, но все же для каждой задачи свои методы!

DWORD
11.10.2007, 22:34
Не чужое приложение запустить, а свой код, который пишется с учетом того где он будет выполняться можно, на эту тему статей много даже написано

ZaCo
11.10.2007, 23:23
>>Как запустить приложение с параметрами в отдельном потоке то есть, что-бы не создавался новый процесс.
да вроде теоретически можно, тк стек у потока, что хорошо, свой да и даже регистры, но, что делать, например, с глобальными переменными? а если будет вызываться в конце ExitProcess? так что в общем случае ничего ты созданием клиентского потока стандартным CreateThread не сделаешь. свой код естественно - на адрес байткода сделай jmp и пусть себе там работает)

Ni0x
11.10.2007, 23:52
KEZ, я не вижу позитива в ваших словах. Где новые идеи? Пусть с помощью функций диспетчера объектов сначала создаст объект типа "process", предварительно заполнив необходимые структуры, не забыв при этом с помощью ExCreateHandleTable создать БД хендлов, в которой мы найдем позже указатель на объект-поток.

ZaCo
12.10.2007, 00:13
что-то мне подсказывает, что это будет эквивалентно в общем экспорту кода CreateProcess. а смысл)

Ni0x
12.10.2007, 00:18
Ну вообще это был ответ Кезу на его сообщение о PsCreateSystemThread(), ибо моя извращенная идея круче. А насчет эквивалентности - это наврятли, слишко много нюансов.

KEZ
12.10.2007, 00:22
На самом деле, что требуется? Как понять создать поток вне процесса? То, что поток является чьим-то - определяется по сис. записям в ядре и хендлами потоков. Переключением занимается пл
онеровщенг.


o_OBallers Если ты силен в PE формате, то можно запускать файл, без создания отдельного процеса путем проецирования файла в память, т.е. выполнить работу загрузчика - произвести работу с импортом и другими директориями в файле - а потом создать поток через CreateTheared указав в виде процедуры адресс оригинальной точки входа в программу OEP...
// Конечно накладываются некоторые ограничения, но все же для каждой задачи свои методы!

П****ц, а процесс, который спроецировал файл - чем будет являться? Не кажется ли что в нем и запустится новый поток?


да вроде теоретически можно, тк стек у потока, что хорошо, свой да и даже регистры, но, что делать, например, с глобальными переменными? а если будет вызываться в конце ExitProcess?

Понятия процесса вообще впринципе нет. Пропатчить планировщик, который переключает контексты (стек, регистры, таблицы и тп) потоков.
Создать системный поток без процесса. Как бы в контексте SYSTEM, но грубо говоря без процесса.


Э... Так ведь память будет вся той программы, где ты решил запускать свой код, какой в этом смысл, ничего работать не будет (если это конечно не вредительский какой-нибудь фрагмент типа "шеллкода")

Угу, прям на планке ОЗУ написана "это память эксплорер точка эгзе"

ну это я все пишу конечно чисто в понт. потому что не хочется делом заниматься, работать и тп - я на форумах отвечаю и тп