Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.67
Sky-WaLkeR
1 / 1 / 0
Регистрация: 15.06.2012
Сообщений: 59
#1

Запуск exe из ресурсов без распаковки - C++

03.07.2012, 16:31. Просмотров 2901. Ответов 18
Метки нет (Все метки)

Всем доброго времени суток!

Сразу оговорка: нужно для легальных целей - защита другой программы от декомпиляции. Никаких вирусов и прочих вредителей...

Можно ли запустить exe из ресурсов без распаковки на диск? И лучше перед запуском проводить манипуляции с его бинарным кодом (дешифровка, например)...

Суть в следующем: есть программа, написанная на ЯП AutoIt, декомпилировать которую - дело 5 секунд. А код Си++, насколько я знаю, декомпилировать нельзя (только про дизассемблер не говорите, у целевой аудитории нет таких познаний). Вот и возникла идея - модуль на Си запрашивает пароль, если правильный - запускает основную прогу. Чтобы исключить распаковку редакторами ресурсов, хочется применить какую-нибудь простейшую шифровку ресурса с exe...

Возможно ли такое? Заранее спасибо за ответ.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.07.2012, 16:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Запуск exe из ресурсов без распаковки (C++):

Запуск exe - C++
Пользуюсь вижуалом, когда скомпилировал приложение .exe его могут запустить только те у кого есть компилятор, когда человек без компилятора...

Запуск программы без создания окна. Запуск фоновой программы - C++
Вопрос, как сделать, чтобы консольное приложение при запуске не создавало окошко консоли. Т.е. запустился процесс, но визуально ничего не...

Запуск .exe с параметрами? - C++
как реализовать на С++ следующее: запускать приложение с параметрами и выполнять при получении нужного параметра нужную функцию?

Запуск .exe из программы - C++
Здравствуйте, господа. Можно ли каким-то образом запустить .exe файл из другой программы? Желательно использовать при этом...

запуск *.exe на других ПК - C++
появилась проблема. написал программу на Microsoft Visual C++ 2010 Express и теперь нужно запустить её "exeшник" на другом компьютере. как...

Некорректный запуск exe в VS 2013 - C++
Добрый вечер. Подскажите. Есть программа, написанная в visual studio 2013. Когда я открываю проект в этой среде и запускаю программу, то...

18
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
03.07.2012, 23:22 #2
Запустить exe не иначе как отдельным файлом в специальном формате не позволяет ОС. Возможно, как-то и можно, но это уже хак.
0
rlib
20 / 20 / 1
Регистрация: 01.05.2012
Сообщений: 60
04.07.2012, 02:16 #3
Возможно; придётся самому выполнить всю работу виндового лоадера - настройки аддрессов из импортов и т.д.

Добавлено через 4 минуты
То, что вы собиратесь писать, называется Molebox (не сочтите за рекламу!) - ничего на диск не пишется.
Попробуйте, также, обратиться к ThinApplication от VMWare.
1
Sky-WaLkeR
1 / 1 / 0
Регистрация: 15.06.2012
Сообщений: 59
04.07.2012, 11:03  [ТС] #4
rlib
За Molebox спасибо, буду пробовать... Жаль, конечно, то не самописная программа\код с++, но все же выход.

UPD: правда, у него лицензия Shareware...
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
04.07.2012, 11:07 #5
Если целю является только защита от декомпиляции, можно использовать паковщик ехе файлов. Например mpress не позволяет "расжать" файл (в отличии от наипопулярнейшего upx).
1
Sky-WaLkeR
1 / 1 / 0
Регистрация: 15.06.2012
Сообщений: 59
04.07.2012, 11:17  [ТС] #6
Deviaphan
Спасибо, но он мне, к сожалению, не подходит... При запуске сжатого exe выдает ошибку а-ля не найден файл скрипта (AutoIt - интерпретируемый язык, exe=autoit3.exe+script.au3, зашитый в его недрах.). Но качество упаковки радует, буду использовать в других проектах

Пробовал кучу разных упаковщиков\протекторов, из них половина вываливалась с ошибкой, а половина игнорировалась декомпилятором... Для уменьшения размера пользуюсь FSG, но он легко обходится...
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
04.07.2012, 11:24 #7
Можно через обфускатор прогнать. Тогда студенты (а у кого ещё знаний может не хватить?) не смогут получить читабельный код и, как минимум, им придётся думать, как же эта каша работает.)

Добавлено через 1 минуту
Цитата Сообщение от Sky-WaLkeR Посмотреть сообщение
Но качество упаковки радует
Вполне возможно, что файл скрипта при упаковке отбросился, если он как-нибудь нестандартно к ехе прикреплен.) Но в 2-10 раз сжимает махом в большинстве exe/dll.
0
Sky-WaLkeR
1 / 1 / 0
Регистрация: 15.06.2012
Сообщений: 59
04.07.2012, 11:25  [ТС] #8
Тоже пробовал, декомпилятор "деобфусцирует" на лету...
Был вариант записывать все строки в бинарном виде и на лету разворачивать, тогда читать действительно трудно, но все же открыть легко...
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
04.07.2012, 11:27 #9
О! Ещё вот этот попробуй, может с ним заработает http://ru.wikipedia.org/wiki/PECompact
0
Sky-WaLkeR
1 / 1 / 0
Регистрация: 15.06.2012
Сообщений: 59
04.07.2012, 11:30  [ТС] #10
Пробовал, декомпилятор открывает (но ошибку не дает).
Пробовал: FSG, Mew11, ASPack, PECompact, UPX, Private exe Protector, теперь еще и mpress
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
04.07.2012, 11:33 #11
Трям...
Тогда я тоже за ThinApplication. Но размер увеличится, а не уменьшится.)
0
Catstail
Модератор
22831 / 11197 / 1812
Регистрация: 12.02.2012
Сообщений: 18,438
04.07.2012, 12:14 #12
Я бы поступил так:

1) скрипт захорировать (причем, не одним байтом, а блоком байтов на 1000)
2) написать на C++ "запускач"
3) слить (двоично) запускач и хорированный скрипт
4) запускач при запуске (после запроса пароля) лезет в собственный хвост, расшифровывает скрипт и сохраняет его под случайным именем в Tmp, запускает оттуда, ждет завершения, удаляет из Tmp...
1
Sky-WaLkeR
1 / 1 / 0
Регистрация: 15.06.2012
Сообщений: 59
04.07.2012, 12:21  [ТС] #13
Вариант хороший, но тоже есть своя засада: при распаковке на диск юзер может отловить скрипт в его первоначальном состоянии (например с помощью FileMon) и декомпилировать...

P.S: а что значит захорировать?
0
Catstail
Модератор
22831 / 11197 / 1812
Регистрация: 12.02.2012
Сообщений: 18,438
04.07.2012, 12:42 #14
Это да. Но в системах защиты нужно иметь чёткую модель угрозы (от кого защищаемся). Если ОН умеет пользоваться FileMon, то ОН - не совсем лох. Защитить от такого СКРИПТ проблематично.

Ха! А как запускается интерпретатор скриптового языка? Может быть сделать вот как:

1) просто захорировать (см. выше) скрипт
2) сделать фильтр-расшифровщик (берет упакованный поток из stdin, распакованный поток направляет в stdout)
3) сделать конвейер: расшифровщик | интерпретатор
4) все это запускать в скрытом окне...
0
Sky-WaLkeR
1 / 1 / 0
Регистрация: 15.06.2012
Сообщений: 59
04.07.2012, 13:11  [ТС] #15
Модель угрозы есть: не лох, но и не крут (в качестве его инструментов - FileMon, декомпилятор, все.).

Хм, идея интересная... Можешь показать пример?
Интерпретатор Autoit3.exe здесь
Исходный код здесь
Результирующий exe здесь
Компилятор, наверное, не стоит выкладывать... (скорость ужас, 1Мб грузит секунд 40) Но если надо, выложу.
0
04.07.2012, 13:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.07.2012, 13:11
Привет! Вот еще темы с ответами:

Запуск стороннего exe файла - C++
Она должна, всего на всего, открывать .exe файл на компьютере в отдельном окне. Заранее спасибос!

Запуск исполняемого файла (.exe) - C++
Hi every body! Помогите в разработке программы. Я не знаю какие нужно использовать функции в C++ :scratch: для того, чтобы приложение...

Скрытый запуск exe файла - C++
Мне нужно запустить exe так, чтобы окно не появилось, но программа работала (как бы в фоне). Создал Win32 приложение (пустое). Делал...

Запуск exe файла в графическом режиме - C++
Помогите пожалуйста как сделать так чтобы по нажатию клавиши запускался определенный ехе файл у меня есть 5 ехе-шников и при нажатии на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru