Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++: WinAPI
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.67/12: Рейтинг темы: голосов - 12, средняя оценка - 4.67
newbie666
Заблокирован
1

Самомодифицирующийся EXE файл

22.11.2013, 11:15. Просмотров 2301. Ответов 38
Метки нет (Все метки)

Привет! Озадачился тут защитой от не лицензионного использования моего софта.
Вопрос в следующем. Возможно ли при запуске EXE файла при каком то внешнем воздействии (это я беру на себя) изменить код самого ЕХЕ, например сделать так, чтоб он работал не правильно, при подаче команды из вне.
Команды могут быть разные и разными способами доставлены. Свой случай рассказывать не хочу, дабы не раскрывать тайну По этому приведу простой пример:
Ну я не знаю, например, программа что - то там по сети принимает и при поступлении определённой команды секретной так сказать - сама программа должна себя модифицировать и сохраниться на харде с новой модификацией. То есть если поступила команда на блокировку использования, программа сама должна модифицировать свой код и сохранится, чтоб при следующем её запуске, чисто например, вылетало бы окошко - мол ты не имеешь право меня запускать, так как не заплатил бабла за лицензию - пошёл на ...

Как или через что такое можно сделать. Полагаю, что при запущенной программе, её на харде я перезаписать не смогу, т.к. она используется (хотя мне кажется, что она считывается в память и ЕХЕ файл на диске закрывается).
То есть во время работы я легко могу выкинуть такое окошко, но как сделать так, чтоб программа сохранила самомодифицирующий свой код. Это её как то компильнуть на лету с новым кодом надо или что ?

Добавлено через 12 минут
Пока что почитываю статейку http://habrahabr.ru/sandbox/38307/ ....
Если у кого - то мысли появятся, буду рад услышать... Пока что полагаю, что для этого надо по мимо кода в ресурсы программы встраивать компилятор, просто пока не пойму, как его оттуда использовать ...

Добавлено через 5 минут
а ещё интересно, как антивирусы будут на это дело реагировать... Думаю, будут блокировать, но может есть вариант их обойти ?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2013, 11:15
Ответы с готовыми решениями:

Не удается найти файл .exe
Поставил по учебе С++ 2010 года, ввожу типичный код #include <iostream> using...

Интегрирование картинки в *.exe файл
Здравствуйте. Я пытаюсь маленько попрограммировать в DEV C++ ver.4.9.9.2 Win...

Как запаковать картинку в exe файл
Здравствуйте! Подскажите примерно как это делается. Я так понял это надо...

Коммерческо-тайное ПО: защитить exe-файл
Разрабатываю для фирмы ПО. Недаано начальство сказало, дескать надо от...

Открыть и закрыть файл exe через определенное время
Извините за тупой вопрос. Мне нужно просто открыть экзешник и со...

38
CheshireCat
Эксперт С++
2913 / 1262 / 114
Регистрация: 27.05.2008
Сообщений: 3,464
22.11.2013, 11:25 2
1. Антивирусы на это будут крайне болезненно реагировать.
2. Задача решается установкой атрибута RW на секцию кода (ну или куда тебе там надо....). Кури мануал по формату PE файла и атрибутам секций.
3. Ну и отламывается такая защита очень быстро.
0
newbie666
Заблокирован
22.11.2013, 11:42  [ТС] 3
Цитата Сообщение от CheshireCat Посмотреть сообщение
Антивирусы на это будут крайне болезненно реагировать.
логично, а есть способ обойти?

Цитата Сообщение от CheshireCat Посмотреть сообщение
Кури мануал по формату PE файла и атрибутам секций.
ок

Цитата Сообщение от CheshireCat Посмотреть сообщение
Ну и отламывается такая защита очень быстро.
а есть варианты по лучше? Тоесть чтоб я командой из вне залочил софт ?

Добавлено через 14 минут
Ладно, стволы под стол карты на стол
Есть у меня уникальная модель нейронной сети для распознавания/ синтеза речи, идентификации диктора, компьютерного зрения и управляющего этим всем глобального интеллекта.
Для начала хочу задействовать её в распознавании речи и потеснить всех зажравшихся "гигантов" со стандартными криво работающими моделями. Варианты использования:

1. Предоставлять услуги онлайн. Думаю, это самое безопасное. То есть клиент просто коннектится к серверу и загружает туда свои данные, сервак запускает модуль и распознаёт речь - потом возвращает результат клиенту. Тоесть клиент вообще не видит моего ЕХЕ-шника... Конечно есть вариант взлома сервера

2. По скольку, в отличии от всех, моей модели не нужна тонна вычислительных ресурсов и она способна работать в принципе на простом интегральном чипе. Думаю, делать девайсы, с вшитой в чип программой своей. По сколько при прошивки чипа есть возможность его блокировки от чтения, тоесть одноразовая запись, думаю это будет тоже безопасно. Что скажите? Или и это могут взломать?

3. Торговать именно программой, тоесть ЕХЕ файлом под винду. Но тут как раз нужна какая - то защита от не легального использования. Думал сделать что - то вроде следующего: Не добросовестный потребитель моего софта его в наглую использует, например в банковском call-центре, я просто звоню туда как обычные клиент и воспроизвожу специальный секретный звук, вариантов которого может быть много и после прослушки этого секретного звука (специальный не повторяющийся шум), программа должна выводится из строя или говорить всем клиентам: ООО РОГА И КОПЫТА использует софт великого меня не законно, распознавание не возможно!
Вот тут то и надо как то модифицировать исходный код ехе-шника...
Что скажите спецы ?

Добавлено через 1 минуту
Думаю, в случае 3-го варианта, если программу даже дизассемблировать, это мало чё хакеру даст, т.к. модель нейронной сети достаточно не однозначная и сложная...
0
CheshireCat
Эксперт С++
2913 / 1262 / 114
Регистрация: 27.05.2008
Сообщений: 3,464
22.11.2013, 11:56 4
1. способ "обойти" антивирусов - имхо только договариваться с вендорами этих антивирусов, чтобы сигнатуру твоего файла внесли в "благонадежные", тогда антивири не будут на него ругаться. Да, договариваться придется с каждым вендором отдельно. Потому что у каждого - своя база сигнатур. И пока ты не "раскрутил" бизнес - есть готовое приложение, идут продажи, есть раскрученный сайт... - внимания на тебя будут обращать чуть менее, чем нисколько.
2. практически нет. Единственный вариант - если данные, получаемые "извне" (из сети - с твоего сервера, находящегося полностью под твоим контролем), жизненно необходимы для использования софта по назначению. Тогда для нелицензионной копии просто не отдаем нужные данные. Вуаля, приплыли, программа становится ненужной.
(Грубый пример: онлайн-плеер, умеющий проигрывать только контент, получаемый из Сети с твоего сервера. Не отдаем нелицензионному экземпляру контент - ему нечего проигрывать. А ничего другого он не умеет.)

Добавлено через 8 минут
Цитата Сообщение от newbie666 Посмотреть сообщение
Есть у меня уникальная модель нейронной сети для распознавания/ синтеза речи, идентификации диктора, компьютерного зрения и управляющего этим всем глобального интеллекта.
Для начала хочу задействовать её в распознавании речи и потеснить всех зажравшихся "гигантов" со стандартными криво работающими моделями.
Гмм. Ну тогда сразу куча вопросов:
Распознавание тестировалось? Каково качество распознавания, на каких текстах? На каком языке?
Идентификация диктора тестировалась? Каковы показатели Fr и Fa? На каких базах?
2
newbie666
Заблокирован
22.11.2013, 12:06  [ТС] 5
Тогда остаётся вариант с загажением программы во время работы. Тоесть, например, какой - то банк использует в кол центре не легально мой софт, я просто напросто отправляю специальную шумовую команду прямо по телефону и софт выводится из строя до перезагрузки, а с учётом того, что перезагрузка софта в при миллионных звонках в кол центре - дело редкое - жизнь нелегалам можно будет подпортить основательно и наконец то мне банк заплатит, или закажет меня

Добавлено через 2 минуты
Цитата Сообщение от CheshireCat Посмотреть сообщение
Распознавание тестировалось?
да
Цитата Сообщение от CheshireCat Посмотреть сообщение
Каково качество распознавания
99.9 %

Цитата Сообщение от CheshireCat Посмотреть сообщение
на каких текстах?
на своих
Цитата Сообщение от CheshireCat Посмотреть сообщение
На каком языке?
на любом. на данном момент тестировал на 7-и языках. Дело в том, что глобальный интеллект обучает блок памяти любому языку в течении 3-х минут на даже не особо мощном компе.
Цитата Сообщение от CheshireCat Посмотреть сообщение
Идентификация диктора тестировалась?
да
Цитата Сообщение от CheshireCat Посмотреть сообщение
Каковы показатели Fr и Fa?
понятия не имею о чём вы, я самоучка, а не учёный

Цитата Сообщение от CheshireCat Посмотреть сообщение
На каких базах?
базах чего?

Добавлено через 2 минуты
Дело в том, что я с самого начала решил не забивать себе голову всякими персептронами и пр. Так как был убеждён, что сделать что - то принципиально новое можно только в том случае, если не будешь забивать голову себе тем, что есть у других

Добавлено через 1 минуту
И ещё ребят, давайте, если хотите помочь, будем ближе к топику или другим вариантам защиты уникального софта ...
0
Dmitriy_M
1429 / 1309 / 131
Регистрация: 20.03.2009
Сообщений: 4,680
Записей в блоге: 11
22.11.2013, 12:08 6
Обычно люди вводят лицензии.
0
newbie666
Заблокирован
22.11.2013, 12:09  [ТС] 7
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
Обычно люди вводят лицензии.
а другие люди обычно потом качают их софт с торрентов после взлома его третьими людьми )))
0
CheshireCat
Эксперт С++
2913 / 1262 / 114
Регистрация: 27.05.2008
Сообщений: 3,464
22.11.2013, 12:09 8
Тьфу-ты ну-ты..... Детский сад, штаны на лямках.

Если ты реально сможешь продать свой софт банку для использования в колл-центре, то - поверь уж! - цена контракта будет такова, что любая даже хардовая защита (типа Sentinel, etc.) будет совершенно незаметна в этой цене. А в хороший HASP ключ можно даже и часть программы запихнуть. Или, по крайней мере, критически важные данные.
1
newbie666
Заблокирован
22.11.2013, 12:16  [ТС] 9
ладно, ни кто меня ни в чём не убедил, буду делать защиту специальной звуковой командой. Спасибо за внимание

Добавлено через 58 секунд
Цитата Сообщение от CheshireCat Посмотреть сообщение
HASP ключ
это кстате тоже идея

Добавлено через 49 секунд
Цитата Сообщение от newbie666 Посмотреть сообщение
HASP ключ
это кстате тоже идея
правда на любой HASP найдётся эмулятор
0
Dmitriy_M
1429 / 1309 / 131
Регистрация: 20.03.2009
Сообщений: 4,680
Записей в блоге: 11
22.11.2013, 12:17 10
Цитата Сообщение от newbie666 Посмотреть сообщение
а другие люди обычно потом качают их софт с торрентов после взлома его третьими людьми )))
Все можно взломать. Вопрос лишь в цене.

Цитата Сообщение от newbie666 Посмотреть сообщение
буду делать защиту специальной звуковой командой.
А как гарантируешь защиту от патча убирающая эту команду?
0
fridi
42 / 40 / 2
Регистрация: 21.09.2009
Сообщений: 145
22.11.2013, 12:22 11
Не добросовестный потребитель моего софта его в наглую использует, например в банковском call-центре, я просто звоню туда как обычные клиент и воспроизвожу специальный секретный звук
в этом то вся ирония и заключается, многие до вас хотели изобрести идеальную защиту, от нерадивых пользователей, и не кому это не удалось, думаете Microsoft это не обдумывала? Программа может быть только в одном случае защищенная это когда ты сам ее используешь и написал чисто под себя.
Допустим что твою программу можно приобрести только после оплаты, но кто будет покупать программу которая мало-известная?..на мой взгляд для того чтобы программа использовалась в массах и ты получал за это деньги, не беспокоясь о лицензиях и т.д, следует прибегнуть к принципу который уже давно используется, базовая часть программы предоставляется бесплатно, но если пользователю нужны какие то дополнительные фичи, ему нужно будет заплатить за них, причем плата ну относительно небольшая, тем самым ты убьешь двух зайцев, бесплатное распространение программы, твоя программа будет выходить в массы, и при необходимости, ты будешь получать деньги, если кто-то действительно захочет воспользоватся полными функциями твоей программы.
0
newbie666
Заблокирован
22.11.2013, 12:23  [ТС] 12
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
А как гарантируешь защиту от патча убирающая эту команду?
этих команд должно быть очень много
0
агерон
274 / 281 / 58
Регистрация: 12.10.2009
Сообщений: 1,112
22.11.2013, 12:23 13
самый радикальный способ защиты сделать программу OpenSource а брать деньги за модификацию и поддержку
0
newbie666
Заблокирован
22.11.2013, 12:33  [ТС] 14
Цитата Сообщение от fridi Посмотреть сообщение
базовая часть программы предоставляется бесплатно, но если пользователю нужны какие то дополнительные фичи, ему нужно будет заплатить за них
это то понятно, но как только кто - то один её купит, её сразу взломают и привет

Добавлено через 1 минуту
Цитата Сообщение от агерон Посмотреть сообщение
сделать программу OpenSource

На самом деле лучше тогда получить патент и афишировать всё, а может даже и нобелевскую премию и брать бабло за использование технологии

Добавлено через 5 минут
Цитата Сообщение от CheshireCat Посмотреть сообщение
Тьфу-ты ну-ты..... Детский сад, штаны на лямках.
Ладно, думаю через пол года / год доведу модель до продакшена и тогда специально зайду сюда и посмеюсь над твоим постом, предоставив тебе сайт, где ты сможешь заказать мои услуги
0
OhMyGodSoLong
~ Эврика! ~
1247 / 996 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
22.11.2013, 12:37 15
Цитата Сообщение от newbie666 Посмотреть сообщение
На самом деле лучше тогда получить патент и афишировать всё, а может даже и нобелевскую премию и брать бабло за использование технологии
Для этого вам придётся подавать патент в бюро каких-нибудь США, где патентовать можно любую глупость, лишь бы была уникальной патентное бюро о ней не знало на момент утверждения заявки. В России, Украине и соседях патентование алгоритмов не позволяется.

Цитата Сообщение от newbie666 Посмотреть сообщение
Ладно, думаю через пол года / год доведу модель до продакшена и тогда специально зайду сюда и посмеюсь над твоим постом, предоставив тебе сайт, где ты сможешь заказать мои услуги
Удачи.
1
Dmitriy_M
1429 / 1309 / 131
Регистрация: 20.03.2009
Сообщений: 4,680
Записей в блоге: 11
22.11.2013, 12:46 16
Цитата Сообщение от newbie666 Посмотреть сообщение
этих команд должно быть очень много
А функция изменения PE то одна.
0
newbie666
Заблокирован
22.11.2013, 12:49  [ТС] 17
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
А функция изменения PE то одна.
да я уже понял, что лучше всего делать блокировку работающей программы без изменения её кода. Тоесть при получении зашифрованной звуковой команды сама программа просто начинает работать не правильно. Для устранения этого требуется перезагрузка, после которой я могу опять и опять слать блокировку
0
ISergey
Maniac
Эксперт С++
1414 / 924 / 149
Регистрация: 02.01.2009
Сообщений: 2,754
Записей в блоге: 1
22.11.2013, 13:12 18
Для устранения этого требуется перезагрузка, после которой я могу опять и опять слать блокировку
а если инет тебе обломят?..

1) как на меня, то можно логику работы софта где-то удаленно реализовать и не морочить себе голову со взломами.
2) то что ломают это не проблема.. есть на ком тестировать потом.
0
Dmitriy_M
1429 / 1309 / 131
Регистрация: 20.03.2009
Сообщений: 4,680
Записей в блоге: 11
22.11.2013, 13:19 19
Поэтому в случае с нейронками можно сделать шифрование весов, т.к. без своих параметров она вряд ли будет давать хороший результат.
Дешифровку можно выполнить средствами электронного ключа.
А что бы еще сложнее усложнить взлом, можно сделать выборочную обфускацию, в частности участка кода вызова функции расшнуровки и загрузка результата в память, на случай от дампирования.
0
CheshireCat
Эксперт С++
2913 / 1262 / 114
Регистрация: 27.05.2008
Сообщений: 3,464
22.11.2013, 13:19 20
Нет, там предполагается, что "зашифрованный звуковой сигнал" поступает в колл-центр как обычный телефонный звонок. Так что "отрубить вход" нельзя - тогда никто дозвониться не сможет.

Но здесь, правда, в реализации защиты есть другая засада. Что будет, если случайно обычный телефонный звонок на лицензионной копии программы будет распознан, как та самая зашифрованная команда? (ага, Fa-то ненулевая....) Колл-центр встанет колом. Бизнес (банк, к примеру), естессно, влетит на неслабые бабки.... Предлагаю с трех раз угадать, кому будет выставлен иск за убытки, как только CIO отойдет от шока :-)
0
22.11.2013, 13:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.11.2013, 13:19

Настройка компилятора Visual 2015 C++: exe-файл не запускается на других компьютерах
программа создается на виндовс 10 64бит. беру ехе из Дебаг и Релеасе,...

Получить адрес текущей директории в которой находиться текущий файл *.exe
Всем привет! Подскажите апишку для получения адреса директории в которой...

Создать exe, запускающий exe
Говорю сразу: я ничего не смыслю в програмировании; зачем подался на такой...


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

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

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