Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

как запустить ексешник из моей проги и как его туда засунуть. Ресурсы

1.9K
26 июля 2008 года
tva94
115 / / 01.05.2007
У меня три вопроса:
1. Как засунуть прогу в другую прогу(файликом)
2. Как её от туда запустить
3. Как её в моей проге редактировать.

C#
5
27 июля 2008 года
hardcase
4.5K / / 09.08.2005
Цитата: tva94
У меня три вопроса:
1. Как засунуть прогу в другую прогу(файликом)
2. Как её от туда запустить
3. Как её в моей проге редактировать.

C#


1) Зачем?
2) Вопрос неоднократно освещался.
3) А еще можно в рантайме сгенерировать код - это несложно.

3.7K
27 июля 2008 года
0nni
326 / / 24.06.2008
Цитата: hardcase

3) А еще можно в рантайме сгенерировать код - это несложно.


хм. А где можно поподробнее, я знаю только вариант - таскать с собой компилятор, а pe создавать программно - это жесть...

6.8K
27 июля 2008 года
Аццкий программер
91 / / 27.11.2006
хм. я так понимаю, автор темы хочет запускать этот экзешник скрыто. а-ля вирус?) иначе бы не стал пытаться его прятать :) ну и соответственно запускаться он будет в начале программы, я правильно понимаю?

ну это, конечно, не самый лучший вариант и он мало чего общего имеет с си#, но все же: можно позаимствовать методику поведения вирусов. дописать ексзешник в конец файла и изменить точку входа в PE-хидере приложения так, чтобы запускался первым екзешник, а потом возвращал управление приложению.
Вот собсна тут много интересного на эту тему:
http://www.viruslist.com/ru/viruses/encyclopedia?chapter=156769328

з.ы. кстати почему тема не в C#, а в дотнете?
5
28 июля 2008 года
hardcase
4.5K / / 09.08.2005
Цитата: 0nni
хм. А где можно поподробнее, я знаю только вариант - таскать с собой компилятор

В .NET компиляторы всегда под рукой: для C# и для VB.NET ну и особые эстеты могут заюзать CIL напрямую; использовать их можно, но для этого нужно быть быть в зоне ФулТраст (кажется так) - т.е. приложение нужно запускать с локальной машины.
Есть два варианта, оба неплохо рассмотрены у Троелсена (пример там примитивный, но для начала сгодится).
1) Пространство имен System.Reflection.Emit. Классы позволяют сгенирировать динамические сборки (да и статические тоже) используя чистый CIL, классы ориентированы на компиляторы.
2) Пространство имен System.CodeDom. Классы позволяют строить программы из готовых блоков - наиболее общих конструкций языков, типа if, while, формировать методы и прочее.
Особенно эффективно использовать кодогенерацию совместно с отражением и атрибутами, подобным образом можно построить достаточно сложную логику.

1.9K
28 июля 2008 года
tva94
115 / / 01.05.2007
Цитата:
хм. я так понимаю, автор темы хочет запускать этот экзешник скрыто. а-ля вирус?) иначе бы не стал пытаться его прятать ну и соответственно запускаться он будет в начале программы, я правильно понимаю?


Не так. Мне надо чтобы мою прогу можно было запустить только из другой моей проги. Дык я придумал спрятать её в свою и зашифровать. А как дешифровать и запустить не знаю. Можно собрать прогу в лвый ексе из исходного кода, но это мне не подходит.

241
31 июля 2008 года
Sanila_san
1.6K / / 07.06.2005
Цитата:
Мне надо чтобы мою прогу можно было запустить только из другой моей проги. Дык я придумал спрятать её в свою и зашифровать. А как дешифровать и запустить не знаю. Можно собрать прогу в лвый ексе из исходного кода, но это мне не подходит.

А можно и просто динамически собрать прогу из другой, о чём и сказал hardcase. Причём можно сначала сгенерировать для неё исходный код, потом собрать, а если это особо секретно, то первый экзешник обработать дотфускатором.

5
31 июля 2008 года
hardcase
4.5K / / 09.08.2005
Цитата: tva94
Не так. Мне надо чтобы мою прогу можно было запустить только из другой моей проги. Дык я придумал спрятать её в свою и зашифровать. А как дешифровать и запустить не знаю. Можно собрать прогу в лвый ексе из исходного кода, но это мне не подходит.

Есть более простой способ в .NET.
У тебя есть некоторый набор классов, реализующий твой функционал. В статическом конструкторе этих классов проверяем публичный токен (PublicKeyToken) сборки, которая является исполнимым файлом твоего приложения. Если токен отличается от эталона - кричим об ошибке и резко падаем.
Для реализации этого подхода конечно придется подписывать сборки (это уже шифрование!). И никаких костылей с распаковкой бинарника и прочей "неуправляемой" чепухи.

341
31 июля 2008 года
Der Meister
874 / / 21.12.2007
Цитата: hardcase
Есть более простой способ в .NET.
У тебя есть некоторый набор классов, реализующий твой функционал. В статическом конструкторе этих классов проверяем публичный токен (PublicKeyToken) сборки, которая является исполнимым файлом твоего приложения. Если токен отличается от эталона - кричим об ошибке и резко падаем.
Для реализации этого подхода конечно придется подписывать сборки (это уже шифрование!). И никаких костылей с распаковкой бинарника и прочей "неуправляемой" чепухи.


То есть, вместо приложения сделать библиотеку?

5
31 июля 2008 года
hardcase
4.5K / / 09.08.2005
Цитата: Der Meister
То есть, вместо приложения сделать библиотеку?

Нуда. Но такую библиотеку, которая будет работать только с подписанными нужным ключем исполняемыми сборками (.exe).
А для пущей вящности можно эту библиотеку через обфускатор пропустить.

41K
05 августа 2008 года
MiNus
2 / / 04.08.2008
хм. я так понимаю, автор темы хочет запускать этот экзешник скрыто. а-ля вирус?) иначе бы не стал пытаться его прятать :) ну и соответственно запускаться он будет в начале программы, я правильно понимаю?



Вирус на .NET это что то новенькое! :)
Типа установите пожалуйсто ДОТНЕТ, что бы вирус мог работать=))))

1.9K
08 августа 2008 года
tva94
115 / / 01.05.2007
Буту пытаться.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог