<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Форум Guardant &mdash; Перенос всей логики в ключ]]></title>
	<link rel="self" href="https://forum.guardant.ru/feed/atom/topic/164" />
	<updated>2012-03-29T12:30:43Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.guardant.ru/topic/164/</id>
		<entry>
			<title type="html"><![CDATA[Re: Перенос всей логики в ключ]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/808/#p808" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>laby пишет:</cite><blockquote><div class="quotebox"><cite>Denis пишет:</cite><blockquote><p>Как движется проект?</p></blockquote></div><p>Да пока пауза - появились другие неотложные проекты, возобновлю - напишу</p></blockquote></div><p>У меня есть ещё пара идей, когда проект станет актуальным, я их напишу.</p>]]></content>
			<author>
				<name><![CDATA[Denis]]></name>
				<uri>https://forum.guardant.ru/user/351/</uri>
			</author>
			<updated>2012-03-29T12:30:43Z</updated>
			<id>https://forum.guardant.ru/post/808/#p808</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Перенос всей логики в ключ]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/802/#p802" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Denis пишет:</cite><blockquote><p>Как движется проект?</p></blockquote></div><p>Да пока пауза - появились другие неотложные проекты, возобновлю - напишу</p>]]></content>
			<author>
				<name><![CDATA[laby]]></name>
				<uri>https://forum.guardant.ru/user/350/</uri>
			</author>
			<updated>2012-03-28T14:05:00Z</updated>
			<id>https://forum.guardant.ru/post/802/#p802</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Перенос всей логики в ключ]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/798/#p798" />
			<content type="html"><![CDATA[<p>Как движется проект?</p>]]></content>
			<author>
				<name><![CDATA[Denis]]></name>
				<uri>https://forum.guardant.ru/user/351/</uri>
			</author>
			<updated>2012-03-28T12:49:13Z</updated>
			<id>https://forum.guardant.ru/post/798/#p798</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Перенос всей логики в ключ]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/785/#p785" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>laby пишет:</cite><blockquote><p>Или как-то можно связать Eclipse с Yagarto. Проект в Eclipse открывается, а вот как его сбилдить, получить&nbsp; bin-файл - непонятно</p></blockquote></div><p>Я настраивал интеграцию только с VisualStudio. Использовал Post-Build Event скрипт, преобразующий строки с описанием ошибок компиляции (у gcc и cl они немного разные). Особой пользы мне это не принесло, удобней оказалось создать в каталоге с проектом файл “_make_.cmd” состоящий из двух строчек “make” и ”pause”. Команду “make template” вообще надо вызывать всего раз в начале создания проекта, и автоматизировать её нет смысла.</p><p>PS. Если кто-то знает и проверял на личном опыте удобный способ интеграции gcc c VisualStudio отпишитесь, а лучше создайте на форуме отдельную тему. Буду благодарен :)</p>]]></content>
			<author>
				<name><![CDATA[Denis]]></name>
				<uri>https://forum.guardant.ru/user/351/</uri>
			</author>
			<updated>2012-03-22T11:57:45Z</updated>
			<id>https://forum.guardant.ru/post/785/#p785</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Перенос всей логики в ключ]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/784/#p784" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>laby пишет:</cite><blockquote><p>А кроме yagarto кто что использовал? Например IAR Embedded Workbench for ARM?</p></blockquote></div><p>Тут лучше использовать yagarto, не потому что он лучше или хуже, а потому что&nbsp; на нём уже откатали кучу тестов с ключами Code и шанс нарваться на подводные камни значительно ниже. Другие сборки и компиляторы, возможно, тоже буду работать, но при каждой неочевидной ошибке, придётся рассматривать эту замену, как одну из возможных причин. Если всё-таки для такой замены есть весомые причины, это можно будет сделать, когда проект заработает, и для него будут написаны тесты. Для Code первого поколения я пробовал Sourcery, вроде всё работало.</p><p>ЗЫ. Первое правило радиолюбителя: Не крути две ручки одновременно :)</p>]]></content>
			<author>
				<name><![CDATA[Denis]]></name>
				<uri>https://forum.guardant.ru/user/351/</uri>
			</author>
			<updated>2012-03-22T11:49:44Z</updated>
			<id>https://forum.guardant.ru/post/784/#p784</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Перенос всей логики в ключ]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/781/#p781" />
			<content type="html"><![CDATA[<p>А кроме yagarto кто что использовал? Например IAR Embedded Workbench for ARM ?<br />Есть вариант чтоб make и make template не набирать, а из среды?<br />Или как-то можно связать Eclipse с Yagarto. Проект в Eclipse открывается, а вот как его сбилдить, получить&nbsp; bin-файл - непонятно</p>]]></content>
			<author>
				<name><![CDATA[laby]]></name>
				<uri>https://forum.guardant.ru/user/350/</uri>
			</author>
			<updated>2012-03-22T07:19:50Z</updated>
			<id>https://forum.guardant.ru/post/781/#p781</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Перенос всей логики в ключ]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/780/#p780" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Denis пишет:</cite><blockquote><p>на более быстром ключе, сказать сложно, лучше сделать пример.</p></blockquote></div><p>Вот собственно этим я и займусь. Продумал сегодня всю защиту в деталях, думаю что будет супер. А главное, что экзешник можно распространять и не бояться - вся логика то в ключе!!! Без ключа вообще непонятно как ломать прогу, проще новую написать :)</p>]]></content>
			<author>
				<name><![CDATA[laby]]></name>
				<uri>https://forum.guardant.ru/user/350/</uri>
			</author>
			<updated>2012-03-22T06:44:52Z</updated>
			<id>https://forum.guardant.ru/post/780/#p780</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Перенос всей логики в ключ]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/779/#p779" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>laby пишет:</cite><blockquote><p>Только я так и не понял сколько в моем случае будет выполняться с буфером 30 байт, автомат - без циклов тупое сравнение если-то штук 10 выполнится и присвоить, добавить в выходной буфер и всё. Никаких математических и прочих операций.</p></blockquote></div><p>Я думаю, в этом случае основное время уйдёт на накладные расходы вызова, т.е. 20мс. Но тут надо учитывать, что моё защищенное приложение работало на Core3i, а ключ был более медленный. Как изменится время на более медленном процессоре PC (я так понимаю, что в embedded-системы Corei3 не ставят:), но при этом на более быстром ключе, сказать сложно, лучше сделать пример.</p>]]></content>
			<author>
				<name><![CDATA[Denis]]></name>
				<uri>https://forum.guardant.ru/user/351/</uri>
			</author>
			<updated>2012-03-21T15:33:59Z</updated>
			<id>https://forum.guardant.ru/post/779/#p779</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Перенос всей логики в ключ]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/778/#p778" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Denis пишет:</cite><blockquote><p>PS. OMG! 38 новых сообщений из них 4 по теме :)</p></blockquote></div><p>Это чтоб я не расслаблялся :)</p>]]></content>
			<author>
				<name><![CDATA[laby]]></name>
				<uri>https://forum.guardant.ru/user/350/</uri>
			</author>
			<updated>2012-03-21T15:22:33Z</updated>
			<id>https://forum.guardant.ru/post/778/#p778</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Перенос всей логики в ключ]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/777/#p777" />
			<content type="html"><![CDATA[<p>Денис, всё так здорово по полочкам разложил, спасибо. Только я так и не понял сколько в моем случае будет выполняться с буфером 30 байт, автомат - без циклов тупое сравнение если-то штук 10 выполнится и присвоить, добавить в выходной буфер и всё. Никаких математических и прочих операций.</p>]]></content>
			<author>
				<name><![CDATA[laby]]></name>
				<uri>https://forum.guardant.ru/user/350/</uri>
			</author>
			<updated>2012-03-21T15:17:53Z</updated>
			<id>https://forum.guardant.ru/post/777/#p777</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Перенос всей логики в ключ]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/776/#p776" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>laby пишет:</cite><blockquote><p>ёси баси, сотни миллисекунд это ....</p></blockquote></div><p>Известные мне этапы работы функции GrdCodeRun:<br />1. Шифрование входного буфера (выполняется в коде API на PC)<br />2. Передача по USB<br />3. Расшифровка входного буфера (выполняется в ключе)<br />4. Вызов пользовательского кода (выполняется в ключе)<br />5. Шифрование выходного буфера (выполняется в ключе)<br />6. Передача по USB<br />7. Расшифровка выходного буфера (выполняется в коде API на PC)</p><p>1 и 7 пункты замедляются ещё и тем, что они защищены от дизассемблирования и отладки виртуальной машиной. Скорость их работы напрямую зависит от производительности процессора, на котором выполняется защищенное приложение.</p><p>Я делал замеры на ключах Code первого поколения.<br />1. Сделал 5 версий загружаемого кода, в которых выполнялась простая мат.операция, в первом 1 раз, во втором 10 раз, в третьем 100 раз и т.д.<br />2. Далее выполнил каждый из них 100 раз, откинул одно самое долгое выполнение для каждой прошивки, чтобы хоть как-то уменьшить погрешность в многопоточной среде.<br />3. Вычислил для каждой прошивки среднее время выполнения.<br />4. Составил систему уравнений, где Y - время выполнения моего кода в ключе (этап 4), X - накладные расходы на вызов этого кода (этапы 1-3,5-7):<br />&nbsp; &nbsp; X + 1*Y = t1<br />&nbsp; &nbsp; X + 10*Y = t2<br />&nbsp; &nbsp; X + 100*Y = t3<br />&nbsp; &nbsp; и т.д.</p><p>На моей машине X получился около 20 мс, а Y был настолько мал, что терялся в погрешности измерений, оказывая влияние только в 100 и более итерациях.</p><p>Нынешнее второе поколение ключей должно работать быстрее, т.к. ускоряются шаги 3 – 5.<br />Но мне вполне хватало и тогдашних показателей.</p><p>PS. OMG! 38 новых сообщений из них 4 по теме :)</p>]]></content>
			<author>
				<name><![CDATA[Denis]]></name>
				<uri>https://forum.guardant.ru/user/351/</uri>
			</author>
			<updated>2012-03-21T14:57:21Z</updated>
			<id>https://forum.guardant.ru/post/776/#p776</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Перенос всей логики в ключ]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/775/#p775" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Vladimir Ivanov пишет:</cite><blockquote><p>Так там загружается зашифрованный и подписанный код, а не какой угодно. Как я уже писал, без знания ключей шифрования и подписи нельзя подготовить gcexe-файл</p></blockquote></div><p> Ну да, это я как то упустил из виду. Тогда действительно, единственное что имеет смысл беречь это образ ключа :)</p>]]></content>
			<author>
				<name><![CDATA[Neekeetos]]></name>
				<uri>https://forum.guardant.ru/user/343/</uri>
			</author>
			<updated>2012-03-21T14:54:38Z</updated>
			<id>https://forum.guardant.ru/post/775/#p775</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Перенос всей логики в ключ]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/774/#p774" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Neekeetos пишет:</cite><blockquote><div class="quotebox"><cite>Vladimir Ivanov пишет:</cite><blockquote><p>Там кроме мигания светодиодом ничего нет.</p></blockquote></div><p>Там загружается код, замените его на нечто читающее ячейки и все что после него в области кода и все дела.</p></blockquote></div><p>Так там загружается зашифрованный и подписанный код, а не какой угодно. Как я уже писал, без знания ключей шифрования и подписи нельзя подготовить gcexe-файл, который корректно загрузится. Это может сделать только разработчик. Кроме того, загружаемому коду не позволяется делать в ключе все, что угодно - существуют ограничения.</p>]]></content>
			<author>
				<name><![CDATA[Vladimir Ivanov]]></name>
				<uri>https://forum.guardant.ru/user/4/</uri>
			</author>
			<updated>2012-03-21T14:33:27Z</updated>
			<id>https://forum.guardant.ru/post/774/#p774</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Перенос всей логики в ключ]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/773/#p773" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Vladimir Ivanov пишет:</cite><blockquote><p>Там кроме мигания светодиодом ничего нет.</p></blockquote></div><p>Там загружается код, замените его на нечто читающее ячейки и все что после него в области кода и все дела.</p>]]></content>
			<author>
				<name><![CDATA[Neekeetos]]></name>
				<uri>https://forum.guardant.ru/user/343/</uri>
			</author>
			<updated>2012-03-21T14:18:21Z</updated>
			<id>https://forum.guardant.ru/post/773/#p773</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Перенос всей логики в ключ]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/772/#p772" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Neekeetos пишет:</cite><blockquote><div class="quotebox"><cite>romik пишет:</cite><blockquote><p>Можно уточнить, в каком примере показана дозапись в ячейку с загружаемым кодом, и передача управления дописаному коду?</p></blockquote></div><p>Samples\ARM\05 - LED Control\</p></blockquote></div><p>Там кроме мигания светодиодом ничего нет.</p>]]></content>
			<author>
				<name><![CDATA[Vladimir Ivanov]]></name>
				<uri>https://forum.guardant.ru/user/4/</uri>
			</author>
			<updated>2012-03-21T13:57:56Z</updated>
			<id>https://forum.guardant.ru/post/772/#p772</id>
		</entry>
</feed>
