<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Форум Guardant &mdash; Эффективность защиты только средствами API.]]></title>
		<link>https://forum.guardant.ru/topic/393/</link>
		<atom:link href="https://forum.guardant.ru/feed/rss/topic/393/" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Эффективность защиты только средствами API.».]]></description>
		<lastBuildDate>Thu, 06 Mar 2014 19:24:25 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Эффективность защиты только средствами API.]]></title>
			<link>https://forum.guardant.ru/post/1908/#p1908</link>
			<description><![CDATA[<div class="quotebox"><cite>Александр (Rouse_) Багель пишет:</cite><blockquote><p>Но отвечу только в понедельник...</p></blockquote></div><p>Хорошо, мне не к спеху:-)</p>]]></description>
			<author><![CDATA[null@example.com (zegsoft)]]></author>
			<pubDate>Thu, 06 Mar 2014 19:24:25 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/1908/#p1908</guid>
		</item>
		<item>
			<title><![CDATA[Re: Эффективность защиты только средствами API.]]></title>
			<link>https://forum.guardant.ru/post/1907/#p1907</link>
			<description><![CDATA[<div class="quotebox"><cite>zegsoft пишет:</cite><blockquote><p>Но что делать, если документ кодировать не приемлемо</p></blockquote></div><p>В статье по понятием &quot;документ&quot; дается абстрактный блок данных, под которым может быть все что угодно.</p><div class="quotebox"><cite>zegsoft пишет:</cite><blockquote><p>Буду Вам очень признателен. Как это лучше организовать? e-mail? ICQ? Или прям здесь?</p></blockquote></div><p>для начала по мылу будет проще: rouse@grandsmeta.ru <br />Но отвечу только в понедельник...</p>]]></description>
			<author><![CDATA[null@example.com (Александр (Rouse_) Багель)]]></author>
			<pubDate>Thu, 06 Mar 2014 19:19:41 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/1907/#p1907</guid>
		</item>
		<item>
			<title><![CDATA[Re: Эффективность защиты только средствами API.]]></title>
			<link>https://forum.guardant.ru/post/1906/#p1906</link>
			<description><![CDATA[<p>Насколько я понял из указанной статьи, суть заключается в том, что с помощью ключа происходит кодирование/декодирование документа (или его части) при сохранении/загрузке. В такой постановке, даже если хаккер каким-то образом сможет &quot;отучить&quot; программу от ключа, она станет бесполезной, поскольку документ не получится правильно раскодировать. Но что делать, если документ кодировать не приемлемо (поскольку необходимо, чтобы документы открывались и в незащищенной версии программы, которой пользуется ограниченный доверенный круг лиц)?&nbsp; В таком случае приведенные в статье рекомендации теряют смысл?</p><br /><p>&gt;В принципе, в свободное время, я могу провести для вас консультацию по использованию ключей Guardant Code и дать некий набор рекомендаций, после которых Вы и сами поймете как его &quot;правильно готовить&quot;.</p><p>Буду Вам очень признателен. Как это лучше организовать? e-mail? ICQ? Или прям здесь?</p>]]></description>
			<author><![CDATA[null@example.com (zegsoft)]]></author>
			<pubDate>Thu, 06 Mar 2014 19:16:42 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/1906/#p1906</guid>
		</item>
		<item>
			<title><![CDATA[Re: Эффективность защиты только средствами API.]]></title>
			<link>https://forum.guardant.ru/post/1904/#p1904</link>
			<description><![CDATA[<p>Вы все верно изложили.<br />От битхака без применения навесного кода сделать зашиту достаточно проблематично, но...</p><p>Для начала необходимо разработать сам алгоритм защиты.<br />Ключ это просто железка - не ждите от него &quot;магии&quot;.<br />Как один из вариантов подхода к построению защиты можно рассмотреть рекомендованную выше Антоном Тихиенко статью, вот прямой линк на нее: <a href="http://alexander-bagel.blogspot.ru/2012/09/blog-post.html">http://alexander-bagel.blogspot.ru/2012 … -post.html</a></p><p>А теперь по поводу Guardant Code:<br /><strong>Вопрос</strong>: &quot;Небольшой объем памяти ключа&quot;<br /><strong>Ответ</strong>: всю программу туда переносить не стоит, только общую логику защиты, правда RAM узковат (мне не хватило, пришлось ужиматься) впрочем...<br />Это ж вам не PIC12F675-I/P, где с памятью вообще плохо (практически не память - а склероз).<br />Почитайте кстати: <a href="http://www.javaportal.ru/humour/history_of_one_byte.html">http://www.javaportal.ru/humour/history … _byte.html</a></p><p><strong>Вопрос</strong>: &quot;Программы пишутся на объектных языках программирования с использованием сторонних библиотек, в то время как в ключ можно загрузить код только на языке С и без использования сторонних библиотек.&quot;<br /><strong>Ответ</strong>: Да, это проблема, но с учетом того что код пишется на &quot;Ansi C&quot;, затруднений с его реализации не должно возникнуть даже у первокурсников.</p><p><strong>Вопрос</strong>: &quot;Быстродействие алгоритма, перенесенного в ключ будет заметно ниже.&quot;<br /><strong>Ответ</strong>: нет, это не так - проверенно практикой :)</p><p>Вообще идея работы с ключом Guardant Code должна сразу абстрагироваться от того что в нем &quot;просто выполняется код&quot;.<br />Т.к. это достаточно надежный &quot;BlackBox&quot; есть варианты переноса в него даже известной взломщику логики из старых версий ПО таким образом, что даже имея на руках полностью отреверсенный алгоритм от старой версии программы, он не сможет ничего сделать с этими знаниями, т.к. сам ключ будет мешать (конечно при правильной реализации).<br />Я уж не говорю о реализации новых алгоритмов, доступных только ключу.</p><p>В принципе, в свободное время, я могу провести для вас консультацию по использованию ключей Guardant Code и дать некий набор рекомендаций, после которых Вы и сами поймете как его &quot;правильно готовить&quot;.</p>]]></description>
			<author><![CDATA[null@example.com (Александр (Rouse_) Багель)]]></author>
			<pubDate>Thu, 06 Mar 2014 17:13:44 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/1904/#p1904</guid>
		</item>
		<item>
			<title><![CDATA[Re: Эффективность защиты только средствами API.]]></title>
			<link>https://forum.guardant.ru/post/1903/#p1903</link>
			<description><![CDATA[<p>Здравствуйте!<br />Спасибо за ответ, буду подробнее изучать документацию и примеры.</p><div class="quotebox"><cite>Антон Тихиенко пишет:</cite><blockquote><p>Также тут можно рассмотреть вариант использования электронных ключей с загружаемым кодом <a href="https://www.guardant.ru/products/guardant-code/">Guardant Code</a>.</p></blockquote></div><p>У меня как раз такой ключ, но как его использовать на практике мне сложно представить, поскольку, насколько я понял, преимущество такого ключа в том, что часть полезных функций программы можно перенести из exe файла в ключ. Однако для применения на практике такого принципа вижу ряд препятствий:<br />1. Небольшой объем памяти ключа.<br />2. Программы пишутся на объектных языках программирования с использованием сторонних библиотек, в то время как в ключ можно загрузить код только на языке С и без использования сторонних библиотек.<br />3. Быстродействие алгоритма, перенесенного в ключ будет заметно ниже.</p>]]></description>
			<author><![CDATA[null@example.com (zegsoft)]]></author>
			<pubDate>Thu, 06 Mar 2014 13:38:57 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/1903/#p1903</guid>
		</item>
		<item>
			<title><![CDATA[Re: Эффективность защиты только средствами API.]]></title>
			<link>https://forum.guardant.ru/post/1898/#p1898</link>
			<description><![CDATA[<p>Здравствуйте, zegsoft.</p><p>В целом Ваше суждение скорее ошибочно, а что касается наших примеров, то они как раз предназначены для дополнительной (помимо <a href="https://www.guardant.ru/support/download/manual/">документации</a>) иллюстрации применения функций Guardant API и намерено представлены в таком &quot;открытом&quot; виде, чтобы лишний раз не путать разработчика, начинающего осваивать их. Естественно, что использование в коде приложения таких функций должно быть не столь очевидным и выбор вариантов их применения и построения своей собственной, уникальной схемы защиты приложения, лежат только на плечах разработчиков, внедряющих эту самую защиту в свое ПО.</p><p>Очень вероятно, что в качестве источника идей для разработки своей защиты, может быть полезной статья из <a href="https://forum.guardant.ru/post/1631/#p1631">данной темы</a>.<br /></p><div class="quotebox"><cite>zegsoft пишет:</cite><blockquote><p>В общем, у меня сложилось впечатление, что эффективная защита может быть только в том случае, если она установлена в комплексе с автоматической защитой, исключающей возможность дизассемблирования.</p></blockquote></div><p>Здесь точно можно сказать то, что такая, комбинированная (Guardant API + автозащита), защита гораздо предпочтительней чем использование только одного метода (либо Guardant API, либо автозащита) и нами рекомендуется к применению.<br /></p><div class="quotebox"><cite>zegsoft пишет:</cite><blockquote><p>Однако автоматическая защита, судя по всему, уменьшает быстродействие программы, поскольку использует механизм виртуальной машины. Что делать, если для меня важно быстродействие программы, так как в ней заложены расчетные алгоритмы??</p></blockquote></div><p>Механизм виртуальной машины для Native-приложений можно не применять (опция &quot;<strong>/RIP_CODE</strong>&quot;), но в таком случае степень защищенности от дизасемблирования будет меньше. Правильнее будет использовать наши утилиты профилирования, позволяющие провести анализ скорости выполнения различных участков кода и в автоматическом или ручном режимах исключить (не будут защищаться) некоторые, особо медленные.</p><p>Также тут можно рассмотреть вариант использования электронных ключей с загружаемым кодом <a href="https://www.guardant.ru/products/guardant-code/">Guardant Code</a>.</p>]]></description>
			<author><![CDATA[null@example.com (Антон Тихиенко)]]></author>
			<pubDate>Thu, 06 Mar 2014 12:00:24 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/1898/#p1898</guid>
		</item>
		<item>
			<title><![CDATA[Эффективность защиты только средствами API.]]></title>
			<link>https://forum.guardant.ru/post/1894/#p1894</link>
			<description><![CDATA[<p>Здравствуйте. <br />Посмотрел примеры защиты программ с помощью Guardant API. У меня сложилось мнение (возможно ошибочное), что защита программ только средствами Guardant API (без применения автоматической защиты) очень мало эффективна, поскольку ее можно легко снять, как вы говорите, «бит-хаком». В частности, Вы пишите:</p><p>«6.&nbsp; Усложните&nbsp; логику&nbsp; обработки&nbsp; кодов&nbsp; возврата&nbsp; функций API. Если вы будете проверять код возврата функции API простым сравнением, хакеру не составит труда уничтожить это сравнение прямо в теле приложения – и таким образом снять защиту.»</p><p>Однако в уроке 3.3 приводите код:</p><p>// Проверяем подлинность подписи <br />&nbsp; &nbsp; nRet = GrdVerifySignSource( GrdECC160_PUBLIC_KEY_SIZE, abyPublicKey ,&nbsp; <br />&nbsp; &nbsp; &nbsp; sizeof(szMessage), szMessage,&nbsp; <br />&nbsp; &nbsp; &nbsp; sizeof(szDigitalSign), szDigitalSign, NULL ); <br />&nbsp; &nbsp;if(nRet) <br />&nbsp; &nbsp; &nbsp;cout &lt;&lt; &quot;G rdVerifySign() failed!&quot; &lt;&lt; endl; <br />&nbsp; &nbsp;else <br />&nbsp; { <br />&nbsp; &nbsp; &nbsp;// Алгоритм принятия решения о выборе напитка <br />&nbsp; &nbsp; &nbsp;random_shuffle(ans.begin(),ans.end(),p_random); <br />&nbsp; &nbsp; &nbsp;cout &lt;&lt; &quot;T oday your drink is &quot;; <br />&nbsp; &nbsp; &nbsp;if (q==&quot;t&quot;) <br />&nbsp; &nbsp; cout&lt;&lt;ans [0]; <br />&nbsp; &nbsp; &nbsp;else <br />&nbsp; &nbsp; cout&lt;&lt;ans [1]; <br />&nbsp; &nbsp; &nbsp;cout &lt;&lt; &quot;&nbsp; !!!&quot; &lt;&lt; endl; <br />&nbsp; } <br />&nbsp; &nbsp;cout &lt;&lt; &quot;= ==========================================&quot;&lt;&lt; endl;&nbsp; </p><p>Здесь опять же обычное сравнение. Как можно обойтись без сравнения, я никак не могу понять. Можете привести хотя бы простенький пример, чтобы можно было по аналогии развивать защиту своего приложения?</p><p>В общем, у меня сложилось впечатление, что эффективная защита может быть только в том случае, если она установлена в комплексе с автоматической защитой, исключающей возможность дизассемблирования. В этом случае, использование Guardant API позволяет свести к минимуму возможность эмулировать ключ </p><p>Однако автоматическая защита, судя по всему, уменьшает быстродействие программы, поскольку использует механизм виртуальной машины. Что делать, если для меня важно быстродействие программы, так как в ней заложены расчетные алгоритмы?? Подскажите, пожалуйста, прав ли я, что без автоматической защиты программа очень легко взламывается?</p>]]></description>
			<author><![CDATA[null@example.com (zegsoft)]]></author>
			<pubDate>Wed, 05 Mar 2014 19:24:47 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/1894/#p1894</guid>
		</item>
	</channel>
</rss>
