<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Форум Guardant &mdash; Эффективность защиты только средствами API.]]></title>
	<link rel="self" href="https://forum.guardant.ru/feed/atom/topic/393/" />
	<updated>2014-03-06T19:24:25Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.guardant.ru/topic/393/</id>
		<entry>
			<title type="html"><![CDATA[Re: Эффективность защиты только средствами API.]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/1908/#p1908" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Александр (Rouse_) Багель пишет:</cite><blockquote><p>Но отвечу только в понедельник...</p></blockquote></div><p>Хорошо, мне не к спеху:-)</p>]]></content>
			<author>
				<name><![CDATA[zegsoft]]></name>
				<uri>https://forum.guardant.ru/user/769/</uri>
			</author>
			<updated>2014-03-06T19:24:25Z</updated>
			<id>https://forum.guardant.ru/post/1908/#p1908</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Эффективность защиты только средствами API.]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/1907/#p1907" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Александр (Rouse_) Багель]]></name>
				<uri>https://forum.guardant.ru/user/53/</uri>
			</author>
			<updated>2014-03-06T19:19:41Z</updated>
			<id>https://forum.guardant.ru/post/1907/#p1907</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Эффективность защиты только средствами API.]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/1906/#p1906" />
			<content type="html"><![CDATA[<p>Насколько я понял из указанной статьи, суть заключается в том, что с помощью ключа происходит кодирование/декодирование документа (или его части) при сохранении/загрузке. В такой постановке, даже если хаккер каким-то образом сможет &quot;отучить&quot; программу от ключа, она станет бесполезной, поскольку документ не получится правильно раскодировать. Но что делать, если документ кодировать не приемлемо (поскольку необходимо, чтобы документы открывались и в незащищенной версии программы, которой пользуется ограниченный доверенный круг лиц)?&nbsp; В таком случае приведенные в статье рекомендации теряют смысл?</p><br /><p>&gt;В принципе, в свободное время, я могу провести для вас консультацию по использованию ключей Guardant Code и дать некий набор рекомендаций, после которых Вы и сами поймете как его &quot;правильно готовить&quot;.</p><p>Буду Вам очень признателен. Как это лучше организовать? e-mail? ICQ? Или прям здесь?</p>]]></content>
			<author>
				<name><![CDATA[zegsoft]]></name>
				<uri>https://forum.guardant.ru/user/769/</uri>
			</author>
			<updated>2014-03-06T19:16:42Z</updated>
			<id>https://forum.guardant.ru/post/1906/#p1906</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Эффективность защиты только средствами API.]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/1904/#p1904" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Александр (Rouse_) Багель]]></name>
				<uri>https://forum.guardant.ru/user/53/</uri>
			</author>
			<updated>2014-03-06T17:13:44Z</updated>
			<id>https://forum.guardant.ru/post/1904/#p1904</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Эффективность защиты только средствами API.]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/1903/#p1903" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[zegsoft]]></name>
				<uri>https://forum.guardant.ru/user/769/</uri>
			</author>
			<updated>2014-03-06T13:38:57Z</updated>
			<id>https://forum.guardant.ru/post/1903/#p1903</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Эффективность защиты только средствами API.]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/1898/#p1898" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Антон Тихиенко]]></name>
				<uri>https://forum.guardant.ru/user/31/</uri>
			</author>
			<updated>2014-03-06T12:00:24Z</updated>
			<id>https://forum.guardant.ru/post/1898/#p1898</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Эффективность защиты только средствами API.]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/1894/#p1894" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[zegsoft]]></name>
				<uri>https://forum.guardant.ru/user/769/</uri>
			</author>
			<updated>2014-03-05T19:24:47Z</updated>
			<id>https://forum.guardant.ru/post/1894/#p1894</id>
		</entry>
</feed>
