<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=467405&amp;view=findpost&amp;p=3931333</guid>
        <pubDate>Mon, 10 Nov 2025 12:47:17 +0000</pubDate>
        <title>QT-защита программы</title>
        <link>https://forum.sources.ru/index.php?showtopic=467405&amp;view=findpost&amp;p=3931333</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=467405&view=findpost&p=3931284'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>sharky72 &#064; <time class="tag-quote__quoted-time" datetime="2025-11-09T22:35:43+03:00">09.11.25, 19:35</time></span><div class='quote '>В том что он выставлял время файлу в 00 секунд и при запуске проверял. А DOS&#39;овский dir показывал время с точностью до минут, помоему даже NC этого не делал, только VC и DOS Navigator умели. Если файл копировался то у него менялось время создания.</div></div><br>
Хочешь спрятать надёжнее - прячь на видном месте. Народная мудрость.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=467405&view=findpost&p=3931284'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>sharky72 &#064; <time class="tag-quote__quoted-time" datetime="2025-11-09T19:35:43+00:00">09.11.25, 19:35</time></span><div class='quote '>Весьма остроумно.</div></div><br>
Согласен. Кстати, ломается - проще простого, но при одном &quot;но&quot; ... Если это делать сразу по старту программы. А если сделать проверку рандомно, к примеру, после старта программы через 15-45 мин, то будут неприятные &quot;сюрпрайзы&quot; как энд-юзеру, так и кул-хацкеру. Хороший и качественный гемор :lol:]]></description>
        <author>Majestio</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=467405&amp;view=findpost&amp;p=3931284</guid>
        <pubDate>Sun, 09 Nov 2025 19:35:43 +0000</pubDate>
        <title>QT-защита программы</title>
        <link>https://forum.sources.ru/index.php?showtopic=467405&amp;view=findpost&amp;p=3931284</link>
        <description><![CDATA[sharky72: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=467405&view=findpost&p=3931283'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>tumanovalex &#064; <time class="tag-quote__quoted-time" datetime="2025-11-09T19:19:14+00:00">09.11.25, 19:19</time></span><div class='quote '>Спасибо за ответ<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=467405&view=findpost&p=3931277'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>kolobok0 &#064; <time class="tag-quote__quoted-time" datetime="2025-11-07T22:00:46+00:00">07.11.25, 22:00</time></span><div class='quote '>а оказалось - всего ничего, человек тупо реагировал на время установленное рабочему файлу = 00 секунд</div></div>Поясните, пожалуйста, в чем суть защиты и как она срабатывала. Досик - это ОС DOS?</div></div><br>
В том что он выставлял время файлу в 00 секунд и при запуске проверял. А DOS&#39;овский dir показывал время с точностью до минут, помоему даже NC этого не делал, только VC и DOS Navigator умели. Если файл копировался то у него менялось время создания.<br>
Весьма остроумно.]]></description>
        <author>sharky72</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=467405&amp;view=findpost&amp;p=3931283</guid>
        <pubDate>Sun, 09 Nov 2025 19:19:14 +0000</pubDate>
        <title>QT-защита программы</title>
        <link>https://forum.sources.ru/index.php?showtopic=467405&amp;view=findpost&amp;p=3931283</link>
        <description><![CDATA[tumanovalex: Спасибо за ответ<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=467405&view=findpost&p=3931277'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>kolobok0 &#064; <time class="tag-quote__quoted-time" datetime="2025-11-07T22:00:46+00:00">07.11.25, 22:00</time></span><div class='quote '>а оказалось - всего ничего, человек тупо реагировал на время установленное рабочему файлу = 00 секунд</div></div>Поясните, пожалуйста, в чем суть защиты и как она срабатывала. Досик - это ОС DOS?]]></description>
        <author>tumanovalex</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=467405&amp;view=findpost&amp;p=3931277</guid>
        <pubDate>Fri, 07 Nov 2025 22:00:46 +0000</pubDate>
        <title>QT-защита программы</title>
        <link>https://forum.sources.ru/index.php?showtopic=467405&amp;view=findpost&amp;p=3931277</link>
        <description><![CDATA[kolobok0: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=467405&view=findpost&p=3929558'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>tumanovalex &#064; <time class="tag-quote__quoted-time" datetime="2025-10-06T12:27:37+00:00">06.10.25, 12:27</time></span><div class='quote '></div></div><br>
<br>
Сделать защиту - может любой дурак. А вот эффективную защиту....<br>
Эффективность защиты не считается в попугаях, а считается во времени. Да, да = сравнивается время на изготовление защиты и на её взлом.<br>
На защиту влияет очень много параметров. И язык на котором она написана, и востребованность, и многое ещё чего.<br>
Нельзя защитить чужое (т.е. все внешнии защищалки хакаются на раз-два), сложно защищать без опыта взлома, лучше распределённая защита, ещё лучше аппаратно-программная защита.<br>
Ну и не делайте школьных ошибок:<br>
- используйте мощь языка на котором пишете (например на азме - это более одного смысла у текущей команды, знание аппаратных и системных нюансов. для высокоуровневых языков - это распылённость и отсрочка детекции-события-сработки)<br>
- если используете общепризнанную теорию, то не пытайтесь её улучшить как бы вам это не казалось логичным или лучшим решением.<br>
- старайтесь сделать несколько эшелонов защиты. например = официальную и та которая основная.<br>
- не используйте готовые ПО пакеты для защиты, универсального нет в природе, от слова совсем.<br>
<br>
<br>
Пример:<br>
создал разработчик русификатор (времена досика), и ставил его на подшефного завода терминалы PCXT. Пытались его копировать - не работал. Иногда правда удачно без проблем.<br>
всякие супер-пупер анализаторы секторов, защиты = не спасали(это отдельная тема) и не давали никакой инфы.<br>
а оказалось - всего ничего, человек тупо реагировал на время установленное рабочему файлу = 00 секунд. Досик время показывал с точностью до минут, посему это не мозолило глаза.<br>
Время изготовления такой защиты - 5 минут. Время потраченное на его ловлю (в те времена) - хренова туча человеко-часов.<br>
<br>
удачи вам<br>
(круглый)]]></description>
        <author>kolobok0</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=467405&amp;view=findpost&amp;p=3929813</guid>
        <pubDate>Thu, 09 Oct 2025 19:44:31 +0000</pubDate>
        <title>QT-защита программы</title>
        <link>https://forum.sources.ru/index.php?showtopic=467405&amp;view=findpost&amp;p=3929813</link>
        <description><![CDATA[amk: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=467405&view=findpost&p=3929646'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2025-10-07T17:54:21+00:00">07.10.25, 17:54</time></span><div class='quote '>привязка работы проги к инету - это некрасивое решение&#33;</div></div> А в организациях, где за несанкционированный доступ в iNet с рабочего компа увольняют, ещё и нерабочее.]]></description>
        <author>amk</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=467405&amp;view=findpost&amp;p=3929646</guid>
        <pubDate>Tue, 07 Oct 2025 17:54:21 +0000</pubDate>
        <title>QT-защита программы</title>
        <link>https://forum.sources.ru/index.php?showtopic=467405&amp;view=findpost&amp;p=3929646</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=467405&view=findpost&p=3929645'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>macomics &#064; <time class="tag-quote__quoted-time" datetime="2025-10-07T17:13:17+00:00">07.10.25, 17:13</time></span><div class='quote '>Зачем его вводить? Сразу получать его по параметрам компа и использовать.</div></div><br>
Ну хорошо, пусть так, пусть это будет &quot;логин&quot;. Как я писал выше - можно прогу запускать на виртуалках. Не уверен, но допускаю, что виртуалкам в режиме NAT-подключений вполне можно иметь внутренние одинаковые МАС адреса карт (не уверен, но допускаю). И если это так - грош-цена всей этой защите, даже через инет-логин.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=467405&view=findpost&p=3929645'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>macomics &#064; <time class="tag-quote__quoted-time" datetime="2025-10-07T17:13:17+00:00">07.10.25, 17:13</time></span><div class='quote '>Что подменять? Данные NTP?</div></div><br>
Небольшое недопонимание с моей стороны, сорян. Если &quot;сессии&quot; храняться не локально а на логин-сервере - то да, можно отслеживать.<br>
<br>
Но, как я писал ранее, привязка работы проги к инету - это некрасивое решение&#33; Особенно если это касается жадности и алчности, а не функционала.]]></description>
        <author>Majestio</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=467405&amp;view=findpost&amp;p=3929645</guid>
        <pubDate>Tue, 07 Oct 2025 17:13:17 +0000</pubDate>
        <title>QT-защита программы</title>
        <link>https://forum.sources.ru/index.php?showtopic=467405&amp;view=findpost&amp;p=3929645</link>
        <description><![CDATA[macomics: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=467405&view=findpost&p=3929637'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2025-10-07T13:50:56+00:00">07.10.25, 13:50</time></span><div class='quote '>И все 145 энженеров в какой-то конторе будут его вводить, ага? Нужна именно ПРИВЯЗКА экземпляра проги к оборудованию.</div></div><br>
Зачем его вводить? Сразу получать его по параметрам компа и использовать. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2025-10-07T17:15:20+00:00">07.10.25, 17:15</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=467405&view=findpost&p=3929637'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2025-10-07T13:50:56+00:00">07.10.25, 13:50</time></span><div class='quote '>И так получается, что можно подменить. Бинго?</div></div><br>
Что подменять? Данные NTP?]]></description>
        <author>macomics</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=467405&amp;view=findpost&amp;p=3929637</guid>
        <pubDate>Tue, 07 Oct 2025 13:50:56 +0000</pubDate>
        <title>QT-защита программы</title>
        <link>https://forum.sources.ru/index.php?showtopic=467405&amp;view=findpost&amp;p=3929637</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=467405&view=findpost&p=3929636'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>macomics &#064; <time class="tag-quote__quoted-time" datetime="2025-10-07T13:37:58+00:00">07.10.25, 13:37</time></span><div class='quote '>Так не нужно у пользователей ничего запрашивать, а просто использовать тот же самый MachineID.</div></div><br>
И все 145 энженеров в какой-то конторе будут его вводить, ага? Нужна именно ПРИВЯЗКА экземпляра проги к оборудованию.<br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2025-10-07T13:52:43+00:00">07.10.25, 13:52</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=467405&view=findpost&p=3929636'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>macomics &#064; <time class="tag-quote__quoted-time" datetime="2025-10-07T13:37:58+00:00">07.10.25, 13:37</time></span><div class='quote '>Я тут намекаю на то, что лучше считать количество дней с первого запуска вместо их числа.</div></div><br>
Ой сама наивность  :lol: Это самое нужно где-то хранить. И так получается, что можно подменить. Бинго?]]></description>
        <author>Majestio</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=467405&amp;view=findpost&amp;p=3929636</guid>
        <pubDate>Tue, 07 Oct 2025 13:37:58 +0000</pubDate>
        <title>QT-защита программы</title>
        <link>https://forum.sources.ru/index.php?showtopic=467405&amp;view=findpost&amp;p=3929636</link>
        <description><![CDATA[macomics: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=467405&view=findpost&p=3929635'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2025-10-07T13:35:37+00:00">07.10.25, 13:35</time></span><div class='quote '>И всеж, как я писал ранее - авторизация и аутентификация посредством инета - это &quot;двойной костыль&quot; (имхо).</div></div><br>
Так не нужно у пользователей ничего запрашивать, а просто использовать тот же самый MachineID.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=467405&view=findpost&p=3929634'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>macomics &#064; <time class="tag-quote__quoted-time" datetime="2025-10-07T13:26:18+00:00">07.10.25, 13:26</time></span><div class='quote '>Что же касательно количества запусков. Что мешает просто оставить работать компьютер 24/7 со включенной программой?</div></div><br>
Я тут намекаю на то, что лучше считать количество дней с первого запуска вместо их числа.]]></description>
        <author>macomics</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=467405&amp;view=findpost&amp;p=3929635</guid>
        <pubDate>Tue, 07 Oct 2025 13:35:37 +0000</pubDate>
        <title>QT-защита программы</title>
        <link>https://forum.sources.ru/index.php?showtopic=467405&amp;view=findpost&amp;p=3929635</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=467405&view=findpost&p=3929634'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>macomics &#064; <time class="tag-quote__quoted-time" datetime="2025-10-07T13:26:18+00:00">07.10.25, 13:26</time></span><div class='quote '>Если есть доступ к интернет, тогда можно запрашивать количество запусков на сервере и там же их считать.<br>
Тогда достаточно будет хранить любой файл с идентификатором компьютера как флаг разрешения запуска. При запуске без интернет он удаляется и это считается за последний запуск. Но при доступе к интернет информация из файла используется для получения количества запусков. При получении в ответ 1 (последний запуск) файл так же удаляется. Иначе информация в нем обновляется.</div></div><br>
И всеж, как я писал ранее - авторизация и аутентификация посредством инета - это &quot;двойной костыль&quot; (имхо). Равно как и разновсяческая валидация и хранение.]]></description>
        <author>Majestio</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=467405&amp;view=findpost&amp;p=3929634</guid>
        <pubDate>Tue, 07 Oct 2025 13:26:18 +0000</pubDate>
        <title>QT-защита программы</title>
        <link>https://forum.sources.ru/index.php?showtopic=467405&amp;view=findpost&amp;p=3929634</link>
        <description><![CDATA[macomics: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=467405&view=findpost&p=3929617'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>tumanovalex &#064; <time class="tag-quote__quoted-time" datetime="2025-10-07T11:48:49+00:00">07.10.25, 11:48</time></span><div class='quote '>Чтобы программа могла запускаться только на 3 ПК пользователей организации, для которой я ее сделал, ограниченное числов раз (пока за нее не заплатили).</div></div><br>
Тогда решение уже подсказали.<br>
<div class="tag-spoiler spoiler closed"><div class="spoiler_header" onclick="openCloseParent(this)">Скрытый текст</div><div class="body"><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=467405&view=findpost&p=3929572'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2025-10-06T16:41:15+00:00">06.10.25, 16:41</time></span><div class='quote '>2) В ответ на &quot;покупку&quot; возвращать недостающую dll-ку или so, которая будет исполнять какие-то взаимодействия с программой с учётом Machine-ID, эти dll/so должны &quot;собираться под покупку&quot;</div></div></div></div><br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=467405&view=findpost&p=3929572'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2025-10-06T16:41:15+00:00">06.10.25, 16:41</time></span><div class='quote '>4) Количество запусков можно хранить где-то во внешнем файле, в файле настроек или в реестре винды. Это самое узкое место твоей защиты. Тут даже не хакер, а просто подготовленный программер может найти где этот &quot;счётчик&quot; сбрасывать.</div></div><br>
Если есть доступ к интернет, тогда можно запрашивать количество запусков на сервере и там же их считать.<br>
Тогда достаточно будет хранить любой файл с идентификатором компьютера как флаг разрешения запуска. При запуске без интернет он удаляется и это считается за последний запуск. Но при доступе к интернет информация из файла используется для получения количества запусков. При получении в ответ 1 (последний запуск) файл так же удаляется. Иначе информация в нем обновляется. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2025-10-07T13:35:16+00:00">07.10.25, 13:35</time></span></span><br>
Что же касательно количества запусков. Что мешает просто оставить работать компьютер 24/7 со включенной программой?]]></description>
        <author>macomics</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=467405&amp;view=findpost&amp;p=3929617</guid>
        <pubDate>Tue, 07 Oct 2025 11:48:49 +0000</pubDate>
        <title>QT-защита программы</title>
        <link>https://forum.sources.ru/index.php?showtopic=467405&amp;view=findpost&amp;p=3929617</link>
        <description><![CDATA[tumanovalex: Спасибо за ответ.<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=467405&view=findpost&p=3929572'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2025-10-06T16:41:15+00:00">06.10.25, 16:41</time></span><div class='quote '>Защиты от хакеров не существует, это надо запомнить.</div></div>Это я понимаю. Мне нужно только защититься от несанкционированного распространения программы. Чтобы программа могла запускаться только на 3 ПК пользователей организации, для которой я ее сделал, ограниченное числов раз (пока за нее не заплатили).<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=467405&view=findpost&p=3929572'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2025-10-06T16:41:15+00:00">06.10.25, 16:41</time></span><div class='quote '>5) SQLite файл сам шифровать не нужно, нужно шифровать его поля.</div></div>А как это сделать?]]></description>
        <author>tumanovalex</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=467405&amp;view=findpost&amp;p=3929572</guid>
        <pubDate>Mon, 06 Oct 2025 16:41:15 +0000</pubDate>
        <title>QT-защита программы</title>
        <link>https://forum.sources.ru/index.php?showtopic=467405&amp;view=findpost&amp;p=3929572</link>
        <description><![CDATA[Majestio: Защиты от хакеров не существует, это надо запомнить. Если программа имеет высокую практическую ценность - её сломают завтра, после опубликования.<br>
<br>
Для узкого круга казуал-юзеров можно посопротивляться:<br>
<br>
1) В программе предусмотреть активацию. Генерировать код запроса. Допустим на базе Machine-ID, используя к примеру <span class="tag-font" data-value="Courier" style="font-family:Courier"><span class="tag-color tag-color-named" data-value="blue" style="color: blue">QStorageInfo</span></span> для ID диска и <span class="tag-color tag-color-named" data-value="blue" style="color: blue">QNetworkInterface</span> для MAC первого сетевого интерфейса, и потом возвращать что-то типа:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">QCryptographicHash::hash((mac + serial).toUtf8(), QCryptographicHash::Sha256).toHex(); // Уникальный хэш будет твоим Machine-ID</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
2) В ответ на &quot;покупку&quot; возвращать недостающую dll-ку или so, которая будет исполнять какие-то взаимодействия с программой с учётом Machine-ID, эти dll/so должны &quot;собираться под покупку&quot;<br>
3) Для шифрования можно использовать что-то типа SimpleCrypt (из Qt Solutions)<br>
4) Количество запусков можно хранить где-то во внешнем файле, в файле настроек или в реестре винды. Это самое узкое место твоей защиты. Тут даже не хакер, а просто подготовленный программер может найти где этот &quot;счётчик&quot; сбрасывать.<br>
5) SQLite файл сам шифровать не нужно, нужно шифровать его поля.<br>
6) Есть вариант - защитить только с помощью предварительного логина в инет. Но это неудобно для энд-юзера. И ломается, при необходимости, не сильно сложнее.<br>
<br>
Бывают еще некоторые виды защит, одна из которых - проверка на запуск под виртуальной машиной. Ведь твою прогу могут именно так &quot;размножить&quot;. Но это отдельное шаманство.]]></description>
        <author>Majestio</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=467405&amp;view=findpost&amp;p=3929558</guid>
        <pubDate>Mon, 06 Oct 2025 12:27:37 +0000</pubDate>
        <title>QT-защита программы</title>
        <link>https://forum.sources.ru/index.php?showtopic=467405&amp;view=findpost&amp;p=3929558</link>
        <description><![CDATA[tumanovalex: Здравствуйте&#33;<br>Сделал программу на QT. Подскажите, пожалуйста, как лучше ее защитить для следующих условий:<br>1. Файл настроек должен быть зашифрован.<br>2. Программа может быть установлена только на 3 ПК.<br>3. Количество запусков на каждом ПК не должно превышать 30.<br>4. Если в качестве файла настроек использовать файл SQLite (настройки в будущем скорее всего будут добавляться), то как лучше этот файл зашифровать.]]></description>
        <author>tumanovalex</author>
        <category>Кроссплатформенный C/C++: cl/gcc/Qt/Gtk+/WxWidgets</category>
      </item>
	
      </channel>
      </rss>
	