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

Ваш аккаунт

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

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

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

Подскажите пожалуйста

15K
06 апреля 2006 года
AngelDance
7 / / 15.02.2006
Очень интересует как из своей программы загрузить в память другую программу и передать ей управление?
929
06 апреля 2006 года
sp999
198 / / 31.01.2003
Цитата:
Originally posted by AngelDance
Очень интересует как из своей программы загрузить в память другую программу и передать ей управление?


ShellExecute

15K
06 апреля 2006 года
AngelDance
7 / / 15.02.2006
Цитата:
Originally posted by sp999
ShellExecute


Я наверно не совсем внятно объяснил свою мысль. Я хочу слить две свои программы: одну за другой. Получается один запускной файл.
При старте первая программа подготавливает место или сразу передает управление на вторую программу не сохраняя ее на диск.
Такое возможно? Обязательно использовать поток?

1.9K
07 апреля 2006 года
Anton Chik
175 / / 26.09.2005
если это твои программы, то почему бы их просто не слить в один код и не откомпилять?
если у тебя нет исходника второй проги,то надо извращаться.
например, мы когда-то прикалывались тем, что просто втупую склеивали два exe-шника в один и запускали его - прокатывало, запускалась первая прога,когда из нее выходили, запускалась вторая.правда это были небольшие программки откомпилированные с С++ под UNIX...
а вообще, мне кажется вторую прогу можно засунуть в ресурсы первой, а потом в памяти развернуть и запустить... но сам таким еще не промышлял...
3
08 апреля 2006 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by Anton Chik
например, мы когда-то прикалывались тем, что просто втупую склеивали два exe-шника в один и запускали его - прокатывало, запускалась первая прога,когда из нее выходили, запускалась вторая.


А Деда Мороза, когда прикалыцвались, не видели?
Хорошая у вас трава... забористая.

Цитата:
Originally posted by Anton Chik

правда это были небольшие программки откомпилированные с С++ под UNIX...


А ну тогда, конечно... ведь Юникс - это Вселенная, в нем все возможно...
Особенно с такой травой...

Цитата:
Originally posted by Anton Chik
а вообще, мне кажется вторую прогу можно засунуть в ресурсы первой, а потом в памяти развернуть и запустить... но сам таким еще не промышлял...


Как отдельный процесс запустить не получится. В Windows процесс связан с физ.файлом.

929
08 апреля 2006 года
sp999
198 / / 31.01.2003
Цитата:
Originally posted by AngelDance
Я наверно не совсем внятно объяснил свою мысль. Я хочу слить две свои программы: одну за другой. Получается один запускной файл.
При старте первая программа подготавливает место или сразу передает управление на вторую программу не сохраняя ее на диск.
Такое возможно? Обязательно использовать поток?


Вот нашел в Инете статью.
Но сам не пробовал.

15K
10 апреля 2006 года
AngelDance
7 / / 15.02.2006
Цитата:
Originally posted by sp999
Вот нашел в Инете статью.
Но сам не пробовал.



Спасибо за ссылку, но к сожалению это не пойдет, так как там сохраняют второй файл на диск, а это нельзя. Просто хочу написать протектор для своих программ. Вот и ищу инфу...

929
10 апреля 2006 года
sp999
198 / / 31.01.2003
Цитата:
Originally posted by AngelDance
Спасибо за ссылку, но к сожалению это не пойдет, так как там сохраняют второй файл на диск, а это нельзя. Просто хочу написать протектор для своих программ. Вот и ищу инфу...


Если для протекции, то так у тебя ничего не выйдет, ибо все джойнеры работают таким образом, что они сначала сохраняют экзешник на диске, а после запускают его (http://www.portalus.ru/modules/computers/special/xaker/xa065/044/1.htm)

15K
11 апреля 2006 года
AngelDance
7 / / 15.02.2006
Цитата:
Originally posted by sp999
Если для протекции, то так у тебя ничего не выйдет, ибо все джойнеры работают таким образом, что они сначала сохраняют экзешник на диске, а после запускают его (http://www.portalus.ru/modules/computers/special/xaker/xa065/044/1.htm)


Жаль... очень... значит только на ASM переходить?

1
11 апреля 2006 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by AngelDance
Жаль... очень... значит только на ASM переходить?


Если делать самому - то да.
А что, обязательно защиту при помощи лоадера выполнять? Тем более самопальную? Решение для обхода скорее всего будет простое и незамысловатое. :) Хорошо выполненные защиты снимаются, а самопальные как правило занимают от часа до двух дней. Поэтому сначала посчитай - что будет дешевле - купить твою программу или оплатить N часов хорошего умельца.
Если твоя программа на столько дорога - обратись к непосредственно к разработчикам защит. Если в жабу - тогда внимательно проверь код и создай ок. 20-30 функций с РАЗЛИЧНЫМИ алгоритмами проверки и добавляй их в вызовы критичных и наиболее часто вызываемых функций. Только учти что алгоритм проверки не должен быть линейным - т.е. возвращать ДА/НЕТ - защита не ахти какая - но при определенном таланте и навыке работу сумеет осложнить более эффективно.

15K
11 апреля 2006 года
AngelDance
7 / / 15.02.2006
Цитата:
Originally posted by kot_
Если делать самому - то да.
А что, обязательно защиту при помощи лоадера выполнять? Тем более самопальную? Решение для обхода скорее всего будет простое и незамысловатое. :) Хорошо выполненные защиты снимаются, а самопальные как правило занимают от часа до двух дней. Поэтому сначала посчитай - что будет дешевле - купить твою программу или оплатить N часов хорошего умельца.
Если твоя программа на столько дорога - обратись к непосредственно к разработчикам защит. Если в жабу - тогда внимательно проверь код и создай ок. 20-30 функций с РАЗЛИЧНЫМИ алгоритмами проверки и добавляй их в вызовы критичных и наиболее часто вызываемых функций. Только учти что алгоритм проверки не должен быть линейным - т.е. возвращать ДА/НЕТ - защита не ахти какая - но при определенном таланте и навыке работу сумеет осложнить более эффективно.



Спасибо за совет. Просто хотелось попробовать себя в написании протера. Не для продажи, а просто, так сказать проба сил. :roll:

3
11 апреля 2006 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by AngelDance
Спасибо за совет. Просто хотелось попробовать себя в написании протера. Не для продажи, а просто, так сказать проба сил. :roll:


Как я уже говорил в Windows каждый процесс связан с физ.файлом, т.о. на асме или не на асме отстыковать в памяти от программы некоторый код и запустить его отдельным процессом НЕ ПОЛУЧИТСЯ. Отстыковывать созданием на диске временного файла, из которого родится новый процесс, - работа впустую, т.к. сводит на нет всю протекцию. Есть вариант создавать временный файл не на жестком диске, а на некотором виртуальном устройстве, но я думаю, мало кто из пользователей для запуска программы будес согласен устанавливать драйвер некоего виртуального устройства.
Остается один вариант - не создавать новый процесс, а работать с существующим. Т.е. запускается программа, которая разворачивает в памяти особым образом запакованные секции и передает одной из них (содержащей код) управление. Так работают все существующие пакеры и протекторы (yoda, upx и т.п.). Вся сложность в том, как и какие секции упаковывать, как правильно настроить таблицу секций в заголовке PE и как скрыть таблицы импорта/экспорта. Все это можно посмотреть на конкретных примерах открытых упаковщиков: upx, yoda. При этом upx - многоплатформенный упаковщик, там в исходниках черт ногу сломит, а yoda хоть и написан коряво и неаккуратно, но вполне простой и понятный. Я как-то в целях практикования рефакторинга давал задание зарефакторить yoda, вполне простой код получается. Кстати, хорошее практическое задание, попробуй. Только не забудь сначала, перед рефакторингом, написать тесты.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог