|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
07.09.2009, 08:40 | #1 |
Регистрация: 07.09.2009
Сообщений: 7
|
Запуск Load.dll (бывшая Load.exe) в дереве проц-ов, Как запустить прогой на C# .dll-ку
Подскажите, как должен выглядеть код простейшей программы на C# (Loader.exe), которая бы загружала под собой исполняемый файл (Prog.dll), причем Prog.dll это переименованный исполняемый файл Prog.exe. В итоге должно получиться дерево процессов. Не путать с API функцией при импорте dll в приложение. Если предложений ни у кого нет, то буду рад хотя бы ссылке на ресурсы, так как все перерыл и ничего не нашел.
P. S. Исходников Prog.dll (бывшей Prog.exe) нет, но я уверен, что они и не нужны, так как нужно просто ее запустить. |
07.09.2009, 13:50 | #2 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
Вот такая бяка подойдёт? http://blogs.msdn.com/thottams/archi...11/696013.aspx
Загрузчику вообще-то абсолютно пофиг расширение файла, exe это или dll он определяет сам, по PE-заголовку
пыщь
|
07.09.2009, 19:57 | #3 |
Регистрация: 07.09.2009
Сообщений: 7
|
Спасибо, вот еще тут нашел попроще варианты http://forum.vingrad.ru/forum/topic-63152.html
Я пытаюсь управлять пакетами, а именно их шифрацией от Prog.dll (Prog.exe) создав простой прокси: TcpListener слушая локальные IP на порту Затем с помощью TcpClient принимаю ожидающий запрос клиента на подключение (AcceptTcpClient()), короче создаю сокет. Обеспечиваю поток данных через NetworkStream (TcpClient.GetStream()) Затем создаю снова TcpClient который поключается к серверу. для него тоже создаю NetworkStream для потока данных (GetStream()) Объявил поключение к серверу и к клиенту отдельно. Но перехватывать пакеты могу только все а не отдельно от клиента и отдельно от сервера. Нетворкстрем.Read() и затем Буффер.Гетбите() - Сетбите() 1. Как отдельно ловить пакеты от сервера и отдельно от клиента и затем оперировать ими с помощью моего прокси или же мой прокси на такое не способен? 2. Как в моем случае перехватывать траффик при помощи все той же Loader.exe от Prog.dll (Prog.exe) раньше чем это делают снифферы внедряющиеся в процесс Prog.dll и заставляющие его направлять пакеты по туннелю на себя и только затем в точку назначения. Пробовал защищать Земидой Prog.dll, но после даже самой мягкой защиты не запускается. |
07.09.2009, 21:53 | #4 | |
Регистрация: 07.09.2009
Сообщений: 7
|
Цитата:
Process p = new Process(); p.StartInfo = new ProcessStartInfo("\Prog.dll"); p.Start(); но так запускаются только .exe, а бывший .exe переименованный в .dll не запускается, хотя я видел, что исполняемый .dll можно запускать. |
|
07.09.2009, 22:17 | #5 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
а если p.StartInfo.UseShellExecute = false;?
пыщь
|
09.09.2009, 00:59 | #6 |
Регистрация: 07.09.2009
Сообщений: 7
|
А возможно ли запускать исполняемый файл и если возможно, то как, если этот файл был добавлен в проект приложения как внедренный исполняемый ресурс? Т. е. в данном случае Prog.exe добавлен в проект приложения Loader.exe
|
09.09.2009, 13:19 | #7 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
Извлечь на диск и запустить. А если из памяти, да на managed-коде - мсье знает толк в извращениях
пыщь
|
10.09.2009, 00:50 | #8 |
Регистрация: 07.09.2009
Сообщений: 7
|
Извлечь на диск - отличная идея, спасибо, но уж больно заметно будет. А вот в память и запуск из памяти больше подходит, правда слова управляемый-код для меня малоинформативны, на яве использовал супрессы для того чтобы не ругался компилятор на "странные" методы для ВМ. Если можно, последний момент поподробнее.
|
10.09.2009, 13:15 | #9 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
Запустить себя ещё раз через CreateProcess с флагом CREATE_SUSPENDED
Прочесть заголовки - ReadProcessMemory Получить контекст потока - GetThreadContext Размапить образ загруженного экзешника - NtUnmapViewOfSection Выделить себе новый кусок памяти - VirtualAlloc Записать заголовки, образ запускаемого экзешника - WriteProcessMemory Записать контекст потока - SetThreadContext Сделать кусок памяти выполняемым - VirtualProtectEx с PAGE_EXECUTE_READWRITE Запустить поток - ResumeThread Глюкавый и недокументированный способ под win32, который не любят антивирусы. Возможно ли такое сделать под .NET - не знаю.
пыщь
Последний раз редактировалось JTG; 10.09.2009 в 13:17. |
15.09.2009, 02:58 | #10 |
Регистрация: 07.09.2009
Сообщений: 7
|
Пытаюсь правильно добавить файл (Prog.dll) в виде ресурса, а затем извлечь его. Добавил ресурс Prog (Prog.dll), затем в свойствах изменяю:
"Действия при построении" на "Внедренный ресурс". В св-вах ресурса указываю Двоичный файловый ресурс (Binary). MSDN - "Конструктор ресурсов можно использовать для создания и управления ресурсами проекта. Конструктором ресурсов поддерживаются такие типы ресурсов, как строки, изображения, значки, звук и файлы." Нашел статью на MSDN про добавление ресурсов, компиляцию их в сборку приложения и доступ к ним во время выполнения. Еще нашел "Сохранение и выдёргивание ресурсов в DLL или EXE", но только на Делфи Отсюда два вопроса: Правильно ли я добавляю Prog.dll в Loader.exe в качестве ресурса и как его оттуда извлечь? |
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
из .exe TBitMap передать в DLL(форма) | lexaltd | Мультимедиа в Delphi | 13 | 14.07.2009 17:47 |
Соединение DLL и EXE | Alex Cones | Общие вопросы Delphi | 2 | 19.04.2009 16:20 |
Запуск приложения из DLL | Hollander | Общие вопросы Delphi | 2 | 17.05.2007 20:04 |