Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > .NET > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 07.09.2009, 08:40   #1
kapustin
 
Регистрация: 07.09.2009
Сообщений: 7
Репутация: 10
По умолчанию Запуск Load.dll (бывшая Load.exe) в дереве проц-ов, Как запустить прогой на C# .dll-ку

Подскажите, как должен выглядеть код простейшей программы на C# (Loader.exe), которая бы загружала под собой исполняемый файл (Prog.dll), причем Prog.dll это переименованный исполняемый файл Prog.exe. В итоге должно получиться дерево процессов. Не путать с API функцией при импорте dll в приложение. Если предложений ни у кого нет, то буду рад хотя бы ссылке на ресурсы, так как все перерыл и ничего не нашел.

P. S. Исходников Prog.dll (бывшей Prog.exe) нет, но я уверен, что они и не нужны, так как нужно просто ее запустить.
kapustin вне форума   Ответить с цитированием
Старый 07.09.2009, 13:50   #2
JTG
я получил эту роль
Профессионал
 
Аватар для JTG
 
Регистрация: 25.05.2007
Адрес: тут темно и с потолка капает
Сообщений: 3,695
Репутация: 2224

icq: III 37373860
По умолчанию

Вот такая бяка подойдёт? http://blogs.msdn.com/thottams/archi...11/696013.aspx
Загрузчику вообще-то абсолютно пофиг расширение файла, exe это или dll он определяет сам, по PE-заголовку
__________________
пыщь
JTG вне форума   Ответить с цитированием
Старый 07.09.2009, 19:57   #3
kapustin
 
Регистрация: 07.09.2009
Сообщений: 7
Репутация: 10
По умолчанию

Спасибо, вот еще тут нашел попроще варианты 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, но после даже самой мягкой защиты не запускается.
kapustin вне форума   Ответить с цитированием
Старый 07.09.2009, 21:53   #4
kapustin
 
Регистрация: 07.09.2009
Сообщений: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от JTG Посмотреть сообщение
Вот такая бяка подойдёт? http://blogs.msdn.com/thottams/archi...11/696013.aspx
Загрузчику вообще-то абсолютно пофиг расширение файла, exe это или dll он определяет сам, по PE-заголовку
Попробовал так
Process p = new Process();
p.StartInfo = new ProcessStartInfo("\Prog.dll");
p.Start();

но так запускаются только .exe, а бывший .exe переименованный в .dll не запускается, хотя я видел, что исполняемый .dll можно запускать.
kapustin вне форума   Ответить с цитированием
Старый 07.09.2009, 22:17   #5
JTG
я получил эту роль
Профессионал
 
Аватар для JTG
 
Регистрация: 25.05.2007
Адрес: тут темно и с потолка капает
Сообщений: 3,695
Репутация: 2224

icq: III 37373860
По умолчанию

а если p.StartInfo.UseShellExecute = false;?
__________________
пыщь
JTG вне форума   Ответить с цитированием
Старый 09.09.2009, 00:59   #6
kapustin
 
Регистрация: 07.09.2009
Сообщений: 7
Репутация: 10
По умолчанию

А возможно ли запускать исполняемый файл и если возможно, то как, если этот файл был добавлен в проект приложения как внедренный исполняемый ресурс? Т. е. в данном случае Prog.exe добавлен в проект приложения Loader.exe
kapustin вне форума   Ответить с цитированием
Старый 09.09.2009, 13:19   #7
JTG
я получил эту роль
Профессионал
 
Аватар для JTG
 
Регистрация: 25.05.2007
Адрес: тут темно и с потолка капает
Сообщений: 3,695
Репутация: 2224

icq: III 37373860
По умолчанию

Извлечь на диск и запустить. А если из памяти, да на managed-коде - мсье знает толк в извращениях
__________________
пыщь
JTG вне форума   Ответить с цитированием
Старый 10.09.2009, 00:50   #8
kapustin
 
Регистрация: 07.09.2009
Сообщений: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от JTG Посмотреть сообщение
Извлечь на диск и запустить. А если из памяти, да на managed-коде - мсье знает толк в извращениях
Извлечь на диск - отличная идея, спасибо, но уж больно заметно будет. А вот в память и запуск из памяти больше подходит, правда слова управляемый-код для меня малоинформативны, на яве использовал супрессы для того чтобы не ругался компилятор на "странные" методы для ВМ. Если можно, последний момент поподробнее.
kapustin вне форума   Ответить с цитированием
Старый 10.09.2009, 13:15   #9
JTG
я получил эту роль
Профессионал
 
Аватар для JTG
 
Регистрация: 25.05.2007
Адрес: тут темно и с потолка капает
Сообщений: 3,695
Репутация: 2224

icq: III 37373860
По умолчанию

Запустить себя ещё раз через CreateProcess с флагом CREATE_SUSPENDED
Прочесть заголовки - ReadProcessMemory
Получить контекст потока - GetThreadContext
Размапить образ загруженного экзешника - NtUnmapViewOfSection
Выделить себе новый кусок памяти - VirtualAlloc
Записать заголовки, образ запускаемого экзешника - WriteProcessMemory
Записать контекст потока - SetThreadContext
Сделать кусок памяти выполняемым - VirtualProtectEx с PAGE_EXECUTE_READWRITE
Запустить поток - ResumeThread

Глюкавый и недокументированный способ под win32, который не любят антивирусы. Возможно ли такое сделать под .NET - не знаю.
__________________
пыщь

Последний раз редактировалось JTG; 10.09.2009 в 13:17.
JTG вне форума   Ответить с цитированием
Старый 15.09.2009, 02:58   #10
kapustin
 
Регистрация: 07.09.2009
Сообщений: 7
Репутация: 10
По умолчанию

Пытаюсь правильно добавить файл (Prog.dll) в виде ресурса, а затем извлечь его. Добавил ресурс Prog (Prog.dll), затем в свойствах изменяю:
"Действия при построении" на "Внедренный ресурс". В св-вах ресурса указываю Двоичный файловый ресурс (Binary).

MSDN - "Конструктор ресурсов можно использовать для создания и управления ресурсами проекта. Конструктором ресурсов поддерживаются такие типы ресурсов, как строки, изображения, значки, звук и файлы."

Нашел статью на MSDN про добавление ресурсов, компиляцию их в сборку приложения и доступ к ним во время выполнения. Еще нашел "Сохранение и выдёргивание ресурсов в DLL или EXE", но только на Делфи

Отсюда два вопроса: Правильно ли я добавляю Prog.dll в Loader.exe в качестве ресурса и как его оттуда извлечь?
kapustin вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
из .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


07:32.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru