21 / 29 / 2
Регистрация: 04.12.2013
Сообщений: 263
|
|
1 | |
Запуск приложения из ресурсов (без распаковки на диск)03.09.2014, 09:01. Показов 6843. Ответов 12
Метки нет (Все метки)
Добрый день всем!
Возникла необходимость запуска стороннего приложения, в формате exe-фала. Причем надо сделать так, чтобы данный сторонний файл на диске не сохранялся. Зачем это мне нужно. Все просто. Есть желание разобраться в защите программ и когда-нибудь написать shareware-программу, защитив ее на определенное время от взлома и распространения. Методик на эту тему много: от подсчета crc файла, до шифрования кусков кода и выполнение их по мере необходимости. Можно использовать и все вместе. Погуглив на эту тему я понял, что толкового решения для Builder C++ нет. Все советуют или использовать сторонние утилиты (ExeCriptor, ASPProtect и т.д.) или реализовывать облачное выполнение. Облачное выполнение для большей части фрилансеров вещь довольно дорогая и не совсем понятная в реализации. Поэтому решил шифровать части (функции) своего приложения. Подумав на эту тему, пришел к выводу, что можно сделать несколько ехе-фалов, которые будут выполнять свою часть функционала, а эти ехе-файлы добавить в ресурсы. Конечно защита будет не очень сложная, но для большинства программистов, со стоимостью их программ в 1000 - 2000 руб. вполне пригодное. Создал несколько ехе-фалов, которые выводят просто окна-сообщения. Создал основное приложение, добавив в его ресурсы эти самые ехе-фалы. Теперь возник вопрос: как запустить выполнение ехе файла из ресурсов? Ведь просто сохранять файл на диск, а потом его запускать, будет глупостью несусветной, ибо ничто не мешает этот файл с диска просто сохранить в другую папку и все. Следовательно надо запускать файл без сохранения его на диске. Попутный вопрос: может я вообще не то реализую и есть какие-то способы проще?
0
|
03.09.2014, 09:01 | |
Ответы с готовыми решениями:
12
Запуск exe из ресурсов без распаковки на диск Запуск исполняемого файла из ресурсов без распаковки на диск Запуск exe из ресурсов без распаковки Запуск приложения из ресурсов |
04.09.2014, 17:42 | 2 |
3
|
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
|
|
28.06.2017, 20:42 | 3 |
Приветствую всех. Заинтересовала эта тема. В функции
CreateFile необходимо указывать путь к файлу. В случае создания "временного" временного файла что указывать в параметре lpFileName ?
0
|
129 / 65 / 16
Регистрация: 03.09.2015
Сообщений: 832
|
|
03.07.2017, 13:17 | 4 |
Смотри здесь https://github.com/codecrack3/... /RunPE.cpp
0
|
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
|
|
03.07.2017, 20:22 | 5 |
ziqp, не увидел применения функции
CreateFile в коде по ссылке. Хотя, наверное, вопрос запуска файла из памяти там раскрыт.И все же. Если обычный исполняемый файл поместить в ресурсы приложения, то как его оттуда запустить используя функцию CreateFile и без сохранения на диск?
0
|
138 / 138 / 53
Регистрация: 14.06.2016
Сообщений: 467
|
|
03.07.2017, 20:53 | 6 |
эта функция только с файлами и работает.
сделать всё, что обычно делает загрузчик - установить правильный протект памяти для всех секций, настроить релоки, разрешить импорт, выполнить tls коллбэки, если есть и затем точку входа. (минимум) эта техника - довольно таки высший пилотаж. если желание очень сильное - гуглить ManualMapping и изучать структуру PE заголовка. но я всё таки советую ограничиться выгрузкой временного файла на диск.
1
|
03.07.2017, 21:07 | 7 |
А как вам вы хотите что бы ответили, так что бы вы прекратили задавать глупые вопросы и все же вникли в то что вам отвечают?
Очевидно то что ответил BRcr не является прямом ответом на поставленный вопрос ибо подразумевают выгрузку файла из ресурсов на диск и запуск его с диска.Просто используется временный файл. По крайней мере это то что я понял. А вот ответ ziqp, интересен. (Хотя лично сомневаюсь что там рабочий код) Добавлено через 6 минут Да только тогда возникает вопрос нафига экзе тогда пихать в ресурсы.
0
|
Ушел с форума
|
|
03.07.2017, 21:45 | 8 |
+1
В последних Windows столько всего наворотили, что сделать качественный PoC на тему "load exe from memory", который был бы для системы неотличим от "нормального" exe, - задача практически нереальная. Такие вещи только для мелких трюков типа выполнить 20 байт и быстро завершиться, пока все не грохнулось.
0
|
Ушел с форума
|
|
03.07.2017, 21:53 | 10 |
О, да!
Но мне как-то показывали один трюк, который работает в том числе и на последних версиях Windows - сохранить exe-файл в NTFS-поток, а затем запустить его оттуда. После чего поток можно удалять. Все никак руки не дойдут поковырять этот способ (например, куда будут выгружаться страницы памяти при нехватке ресурсов?)
0
|
129 / 65 / 16
Регистрация: 03.09.2015
Сообщений: 832
|
|
08.07.2017, 19:35 | 11 |
Не совсем понял что такое PoC..
Но сам давно пользуюсь запуском файла в памяти в моем проекте. Если в проекте парочка форм, кнопочки и запуск файла в памяти на кнопку, а не автоматически, то антивирям всеравно. Конечно, это не тот код, который я привел выше. В своем я делаю массив из байтов памяти, складываю и запускаю в памяти
0
|
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
|
|
08.07.2017, 21:57 | 12 |
0
|
129 / 65 / 16
Регистрация: 03.09.2015
Сообщений: 832
|
||||||||||||||||
09.07.2017, 20:47 | 13 | |||||||||||||||
h файл с функцией:
Минус метода в том, что слишком большой образ не скомпилируется
2
|
09.07.2017, 20:47 | |
09.07.2017, 20:47 | |
Помогаю со студенческими работами здесь
13
Запуск приложения из ресурсов, переименование окна Как скопировать файл на диск из ресурсов приложения? Хранение ресурсов приложения без БД Запуск .exe из приложения (не извлекая его на жёсткий диск) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |