«Прокачиваем» notepad.exe

image

Какая ассоциация связана у Вас с клавишей F5? Обновление страницы в браузере? Копирование файла из одной директории в другую? Запуск приложения из Visual Studio? А вот авторы notepad.exe подошли к этому вопросу довольно оригинально — по нажатию клавиши F5 происходит добавление текущей даты и времени в место, куда в этот момент указывает курсор. Всё было бы круто, если бы в notepad.exe была такая популярная и вполне естесственная для большинства текстовых редакторов фича, как перечитывание содержимого текущего файла, которая, казалось бы, и должна быть назначена на F5 / Ctrl-R или ещё какой-нибудь общепринятый хоткей.

Мы можем ждать, пока её реализуют Microsoft, выбрать другой текстовый редактор (ведь это не единственное ограничение по функционалу стандартного notepad.exe) или… Взять в руки дизассемблер, отладчик и редактор PE-файлов.

Как протекал процесс, и что из этого вышло, читайте под катом (осторожно, много скриншотов). Перед прочтением данной статьи также настоятельно рекомендую ознакомиться с предыдущими.

Чтобы не иметь дело с теми же неудобствами, с которыми мы столкнулись в предыдущей статье, давайте для начала отключим использование ASLR. Согласно вики, ASLR (Address space layout randomization) — это технология, при использовании которой случайным образом изменяется расположение в адресном пространстве процесса важных структур, а именно: образа исполняемого файла, подгружаемых библиотек, кучи и стека. Именно из-за неё в прошлый раз перезапуск приложения и приводил к изменению уже найденных нами ранее адресов. Если Вы используете Windows XP или более старую ОС, то можете с лёгкостью пропустить то, о чём будет рассказано в нескольких следующих абзацах, ведь ASLR на тот момент ещё не было.

Отключить использование ASLR можно как глобально (для этого необходимо добавить / отредактировать значение опции «MoveImages», хранящейся в реестре по адресу «HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management», чтобы сделать её равной нулю), так и локально, т.е. для конкретного исполняемого файла. Последний вариант выглядит более привлекательным, особенно если речь идёт не о виртуальной машине, а о реальной системе, так что давайте остановимся на нём.

Копируем notepad.exe в любую отличную от "%WINDIR%\System32" директорию, скачиваем, разархивируем и запускаем PE Tools, нажимаем Alt-1 и выбираем скопированный ранее notepad.exe:

image

Нажимаем на кнопку «Optional Header» и смотрим на поле DLL Flags, которое в нашем случае равно 0x8140:

image

Значение в этом поле является результатом выполнения операции битового «OR» для констант, перечисленных в официальной документации на MSDN. Несложно заметить, что наш бинарник обладает следующими характеристиками:

IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE
0x8000
The image is terminal server aware

IMAGE_DLLCHARACTERISTICS_NX_COMPAT
0x0100
The image is compatible with data execution prevention (DEP)

IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE
0x0040
The DLL can be relocated at load time

Обратили внимание на последнее значение? Что ж, это именно то, что нас интересует. Меняем 0x8140 на 0x8100, нажимаем «Ok» в обоих окнах и приступаем к отладке.

На какие этапы можно условно разделить наш патчинг notepad.exe?

  • Поиск адреса, по которому хранится путь до текущего файла
  • Поиск процедуры считывания содержимого файла
  • Поиск кода, отвечающего за обработку нажатия клавиши F5
  • Собственно, написание самого патча

Открываем notepad.exe в OllyDbg и приступаем к первому этапу.

Подойти к поиску адреса, по которому хранится путь до текущего файла, можно сразу с нескольких сторон. Можно, например, отыскать процедуру, которая занимается открытием файла (вероятнее всего, в случае успеха она сохраняет путь до файла по какому-то адресу), а можно посмотреть на реализацию алгоритма сохранения файла (очевидно, он должен знать либо хэндл текущего файла, либо путь до него). Предлагаю остановиться на втором варианте.

Надеясь, что файл при сохранении каждый раз открывается заново, ставим бряки на вызовы WinAPI-функции CreateFileW:

image

Нажимаем Ctrl-S, выбираем имя файла (в моём случае это «C:\helper.txt») и останавливаемся на следующем месте:

image

Посмотрим, откуда и с какими аргументами нас позвали:

image

Если посмотреть, на что указывает адрес, переданный в качестве второго аргумента (right-click по строке с данным аргументом -> Follow address in stack), то мы увидим как раз наш путь:

image

Давайте посмотрим на код, находящийся перед вызовом исследуемой нами процедуры, чтобы понять, откуда и как именно к нам попал этот адрес:

image

Как Вы видите, адрес, по которому хранится путь до файла, содержится в EBP-8. Давайте снова нажмём Ctrl-S и посмотрим, куда мы попадём на этот раз (ведь теперь программа уже знает путь до файла, что может поменять ход работы приложения):

image

Итак, мы оказались на том же самом бряке, что и раньше, однако позвали нас уже из другого места:

image

На этот раз адрес, по которому содержится путь до файла, хранится в регистре EBX. С момента начала текущего case-блока (обратите внимание на комментарий несколькими инструкциями раньше выделенного места) значение данного регистра не изменяется, что означает, что искать оригинальный адрес надо где-то раньше. Смотрим, какие инструкции ссылаются на начало данного case-блока (left-click по адресу 0x01004D5D -> Ctrl-R):

image

Раз такое обращение всего одно, прыгаем на него по нажатию клавиши Enter и сразу же видим, откуда в EBX появляется данный адрес:

image

Итак, мы поняли, что по адресу 0x0100CAE0 хранится путь до текущего файла. Что дальше? А дальше мы должны найти процедуру, ответственную за считывание содержимого файла.

Очевидно, что она также будет вызывать CreateFileW (вместо этого мы могли бы перехватить вызов функции GetOpenFileName, но её нет в списке межмодульных вызовов — видимо, вместо неё используется Common Item Dialog API, которое рекомендуется на MSDN). Нажимаем Ctrl-O, выбираем любой файл (я выбрал тот же самый) и, не успев сделать двойной клик мышью, оказываемся на бряке по адресу 0x01006E8C:

image

Проделываем то же самое несколько раз, прежде чем убрать данный бряк и надеяться на остальные. И правда, после того, как был убран бряк по указанному ранее адресу, мы всё же смогли сделать двойной клик по интересующему нас файлу, в результате чего сработала точка останова уже совершенно в другом месте:

image

Итак, наша задача — выяснить, каким образом и какую именно процедуру необходимо вызвать, чтобы успешно перечитать интересующий нас файл. Ставим бряк на адрес, с которого нас позвали

image

, нажимаем F9, и… Он тут же срабатывает! Ничего, снова нажимаем F9, пытаемся передать фокус окну notepad.exe и видим, что бряк снова срабатывает. Да что ж такое! Давайте посмотрим на начало процедуры, которую вызывает данный CALL:

image

Обратите внимание на единственный комментарий — судя по кол-ву обрабатываемых значений и тому, что мы наблюдаем на практике, данная процедура служит для реакции на любое выполняемое пользователем действие, будь то передача окну notepad.exe фокуса или открытие файла. Видимо, после нажатия Ctrl-O программа не выполняет никакого CALL’а, а лишь переходит на соответствующий case-блок при помощи операции условного перехода. Давайте уберём данный бряк, ещё раз попытаемся открыть файл и найдём ближайшую к бряку, стоящему на месте вызова CreateFileW, инструкцию, к которой есть обращения в коде. Ею оказалась инструкция по адресу 0x01004DF5:

image

Ставим бряки на оба обращения, проделываем те же самые действия и оказываемся тут:

image

Ставим бряк на начало данного case’а, снова открываем тот же самый файл и пытаемся понять, что тут происходит:

; Зануляем значение в регистре EDI 01003ECC   > \33FF          XOR EDI,EDI                              ;  Case 2 of switch 01001824 ; Вызываем процедуру проверки изменений в текущем файле ; Если они были, отобразится диалоговое окно с предложением сохранить изменения в файл 01003ECE   .  57            PUSH EDI 01003ECF   .  E8 90D7FFFF   CALL notepad.01001664 ; Проверяем возвращаемое значение ; EAX == 1, если изменений не было / пользователь нажал клавишу Save / Don't Save, EAX == 0, если была нажата кнопка Cancel 01003ED4   .  85C0          TEST EAX,EAX ; Если нажали Cancel, то дальнейшее нас уже не интересует, переходим в другой case 01003ED6   .^ 0F84 8ED9FFFF JE notepad.0100186A ; Перемещаем нечто с адреса 0x100C00C в EAX и затем в EBP-10 01003EDC   .  A1 0CC00001   MOV EAX,DWORD PTR DS:[100C00C] 01003EE1   .  8945 F0       MOV DWORD PTR SS:[EBP-10],EAX ; Вызываем процедуру отображения диалогового окна с просьбой выбрать файл 01003EE4   .  8D45 F8       LEA EAX,DWORD PTR SS:[EBP-8] 01003EE7   .  50            PUSH EAX                                 ; /Arg2 01003EE8   .  FF75 F4       PUSH DWORD PTR SS:[EBP-C]                ; |Arg1 01003EEB   .  E8 31000000   CALL notepad.01003F21                    ; \notepad.01003F21 ; В результате вызова данной процедуры в EBP-8 будет храниться путь до открываемого файла ; EAX == 0 в случае успеха и 0x800704C7 в случае нажаия кнопки Cancel 01003EF0   .  8BF0          MOV ESI,EAX 01003EF2   .  3BF7          CMP ESI,EDI ; Один из прыжков на интересующую нас процедуру 01003EF4   .  0F8D FB0E0000 JGE notepad.01004DF5 01003EFA   .  81FE C7040780 CMP ESI,800704C7 01003F00   .  0F85 DC0E0000 JNZ notepad.01004DE2 01003F06   >  3BF7          CMP ESI,EDI 01003F08   .  0F8D E70E0000 JGE notepad.01004DF5 01003F0E   >  8B45 F0       MOV EAX,DWORD PTR SS:[EBP-10] 01003F11   .  A3 0CC00001   MOV DWORD PTR DS:[100C00C],EAX 01003F16   .  56            PUSH ESI 01003F17   .^ E9 A2FCFFFF   JMP notepad.01003BBE 

Теперь давайте посмотрим, какие регистры и адреса использует код по адресу 0x01004DF5, чтобы понять, какое «окружение» необходимо для его корректной работы:

image

Разумеется, данный код обращается к EBP-8, по которому, как Вы помните, хранится путь до открываемого файла. Помимо этого, ему также важно значение регистра EDI, который используется в качестве аргументов для параметров hTemplateFile и pSecurity. Первое мы можем достать из адреса 0x0100CAE0, а в обозначенные параметры можно просто передать ноль.

Теперь давайте найдём код, отвечающий за обработку нажатия клавиши F5. Для этого предлагаю поставить бряк на вызовы функций, отвечающих за получение текущего времени. Наиболее популярные из них — GetSystemTime и GetLocalTime. Первой нет в списке межмодульных вызовов, а вот вторая вызывается сразу из двух мест:

image

Ставим бряки, нажимаем F5 и оказываемся тут:

image

Прыгаем на место вызова текущей процедуры и попадаем практически в самое начало ещё одного case-блока, который, очевидно, и отвечает за обработку нажатия F5:

image

Отлично. Ищем место для нашего code cave’а и пишем (разумеется, адреса могут отличаться):

0100BEB3      33FF          XOR EDI,EDI 0100BEB5      C745 F8 E0CA0>MOV DWORD PTR SS:[EBP-8],notepad.0100CAE0    ;  UNICODE "C:\helper.txt" 0100BEBC      A1 0CC00001   MOV EAX,DWORD PTR DS:[100C00C] 0100BEC1      8945 F0       MOV DWORD PTR SS:[EBP-10],EAX 0100BEC4    ^ E9 2C8FFFFF   JMP notepad.01004DF5 

Вставляем по адресу 0x0100447B прыжок на наш code cave:

image

Нажимаем F9, снова жмём F5 и наблюдаем следующую картину:

image

Как видите, мы упали где-то в недрах функции CoTaskMemFree. Обратите внимание на аргумент, переданный этой функции — да-да, это адрес нашей строки с путём до файла. Значит, память под неё необходимо выделять при помощи CoTaskMemAlloc. В этом нам может помочь функция SHStrDup, которая создаёт дупликат переданной ей строки, выделив память под неё при помощи CoTaskMemAlloc.

Перезапускаем notepad.exe и ищем адрес функции SHStrDupW в IAT. Для этого смотрим на вызов любой другой WinAPI-функции в модуле:

image

Следовательно, адрес функции GetDlgItemTextW в IAT — 0x010012A4. Прыгаем на него и ищем нашу SHStrDupW:

image

Получается, её вызов можно оформить в виде инструкции CALL DWORD PTR DS:[010013B4]. Тогда пишем следующий код (проверка на наличие ошибок опущена):

0100BFA5   .  33FF             XOR EDI,EDI 0100BFA7   .  8D45 F8          LEA EAX,DWORD PTR SS:[EBP-8] 0100BFAA   .  50               PUSH EAX                                          ; /pTarget 0100BFAB   .  68 E0CA0001      PUSH notepad.0100CAE0                             ; |Source = "C:\helper.txt" 0100BFB0   .  FF15 B4130001    CALL DWORD PTR DS:[<&SHLWAPI.SHStrDupW>]          ; \SHStrDupW 0100BFB6   .  A1 0CC00001      MOV EAX,DWORD PTR DS:[100C00C] 0100BFBB   .  8945 F0          MOV DWORD PTR SS:[EBP-10],EAX 0100BFBE   .^ E9 328EFFFF      JMP notepad.01004DF5 

Открываем наш файл «C:\helper.txt», убеждаемся, что он пустой, редактируем и сохраняем его в другой копии notepad.exe, нажимаем F5 в отлаживаемой нами версии, и… Файл обновляется!

Давайте сохраним наши изменения в исполняемый файл. Делаем right-click по окну CPU -> Copy to executable -> All modifications -> Copy all и видим:

image

Получается, что мы вылезли за физические границы исполняемого файла. Давайте взглянем на границы секций в PE Tools (кнопка «Sections»)

image

и поместим наш code cave в какое-нибудь другое место. Для получения верхней «границы» области для «безболезненного» патча мы должны сложить Virtual Offset секции .text, куда мы собираемся положить наш патч, её Raw Size и Image Base, т.е. Virtual Offset (0x00001000) + Raw Size (0x0000A800) + Image Base (0x01000000) = 0x0100B800. Поместим его, например, по адресу 0x0100B6CF и попытаемся сохранить изменения ещё раз (right-click по окну CPU -> Copy to executable -> All modifications -> Copy all -> right-click на появившемся окне -> Save file).

Проверяем получившийся исполняемый файл на работоспособность и убеждаемся, что всё ведёт себя так, как и ожидается.

Послесловие

Цель данной статьи — в очередной раз продемонстрировать возможность добавления собственного функционала в существующие программы, не имея при этом на руках исходных кодов. А теперь возвращайтесь к своим vim’ам / emacs’ам / Notepad++ / etc, но помните — если Вы встретите баг или обратите внимание на отсутствие какого-либо функционала в редакторе с закрытым кодом, теперь Вы знаете, что надо делать.

Спасибо за внимание, и снова надеюсь, что статья оказалась кому-нибудь полезной.

ссылка на оригинал статьи http://habrahabr.ru/post/261411/

Проекция информации на лобовое стекло автомобиля ухудшает безопасность вождения

image

На прошлой неделе исследователи из Торонтского университета опубликовали работу, выводы которой предостерегают водителей от чрезмерного увлечения модными системами, проецирующими на лобовое стекло дополнительную информацию, связанную с автомобилем и смартфоном. Такая система, задумывавшаяся, как облегчающая вождение, по мнению учёных на самом деле увеличивает поток информации, который необходимо обработать водителю, и отвлекает его от дороги.

Такие системы получили название Augmented-reality head-up displays (AR-HUD, или индикаторы на лобовом стекле с дополненной реальностью). Эта технология, первоначально разработанная исключительно для военной авиации (в первую очередь для реактивных истребителей и вертолётов), в настоящее время находит применение в гражданской авиации и автомобилестроении.

Пилот военного самолёта вынужден постоянно оценивать как окружающую обстановку, так и показания многочисленных приборов. Выводимая на дисплей шлема необходимая информация, дополняющая вид через стекло, облегчает его работу.

О создании подобной системы задумались и производители автомобилей. Принцип действия систем различается — здесь и встроенные в конструкцию приборной панели проекторы, и навигаторы со встроенным проектором, и даже простые приложения для смартфонов. Если положить смартфон на приборную панель, отражение его экрана в лобовом стекле будет работать, как AR-HUD.

image

Теоретически, такая система действительно даёт преимущества. Можно выводить на лобовое стекло текущую скорость, рекомендации навигатора о ближайших поворотах, уведомления о сообщениях на смартфоне, время. Продвинутые системы могут ассистировать водителю, подсказывая расстояние до ближайшего автомобиля и предлагая возможности для маневрирования.

Всё бы было хорошо — но так не бывает. «Водителям приходится распределять своё внимание, отдавая часть его новой визуальной информации,- поясняет профессор психологии Ян Спенс. — Водителям нужно концентрироваться не только на том, что происходит на дороге вокруг них, как обычно, но и обращать внимание на всяческие уведомления».

Профессор со своими студентами разработал двухэтапное тестирование. Сначала испытуемые на компьютере проверяли своё внимание, подсчитывая появляющиеся на экране случайные точки. А в некоторых случаях на экране непредсказуемо появлялся квадратик, который тоже нужно было попытаться заметить — это было вторичным визуальным стимулом.

Оказалось, что в 7-10% случаев, в зависимости от количества точек, которые подсчитывали участники, они пропускали появление на экране дополнительного квадратика. Кроме этого, точность подсчёта количества точек также снижалась. Когда внимание испытуемых было поглощено одной главной задачей, со второстепенной они справлялись хуже, да и качество выполнения главной падало.

А водителю требуется не только увидеть и распознать нечто неожиданное, но и адекватно среагировать на это. Кроме того, необходимо различать, допустим, предупреждения о возможном столкновении и уведомления о необходимости сделать поворот — в противном случае соревнующиеся друг с другом предупреждения нанесут больше вреда, чем пользы.

Для этого второй тест был усложнён, и вместе с точками, которые нужно было считать, на экране могли появляться фигуры разной формы (треугольник, квадрат, ромб). Такой тест показал, что появление дополнительной фигуры часто не замечают, или же её форма воспринимается неправильно. Кроме того, выяснилось, что скорость выполнения главной задачи уменьшалась на 200% при появлении дополнительной фигуры.

В итоге, из данного исследования вытекает, что набор дополнительной информации, который должен дополнять сведения водителя о происходящем и облегчать вождение автомобиля, на деле, скорее всего, будет только отвлекать его от первоначальной задачи — безопасно вести автомобиль.

ссылка на оригинал статьи http://geektimes.ru/post/252754/

Игра на нервах

Просматривая страницы в интернете я нашел нечто.

Если Вы видели скелет современной видео игры, то представляете насколько мощный там код и сколько в нем, приблизительно, строк. Но оказывается достаточно только одной строки что бы сделать нечто залипательное. Это игра которая не только заставит нажимать и нажимать на кнопку мыши, но и проверит Ваши нервы.

Игра в которая смогла поместится в одном твите.

Вся структура данной игры состоит из одной строки HTML / JavaScript.

<script>var e,s=0,t=Date.now();function f(){((e=Date.now()-t)<15000)?a.style.margin=++s+e%300:alert(s)}</script><p id="a" onclick="f()">X

Идея явно не вынашивалась неделями. Это лишний раз доказывает что для интересных вещей не нужна целая команда аналитиков. Нужен только один скучающий программист.

Такую замечательную строку можно найти здесь.

ссылка на оригинал статьи http://habrahabr.ru/post/261503/

Почему так трудно стать программистом?

Вот уже около полугода, в качестве добровольного «лаборанта» участвую в работе клуба начинающих программистов. Хочу
поделиться своими итогами этих наблюдений и собственными мыслями насчет того, почему далеко не все желающие способны освоить эту профессию. Как-то читал о том, что заниматься IT-технологиями в состоянии не более 9% людей в любом обществе. Когда создавался наш клуб, у меня появилась реальная возможность опровергнуть или подтвердить этот тезис и понять, почему же «айтишников» так мало.

Среда для исследования

Наш клуб могут посещать все желающие. Основная масса узнает о нем из рекламы курсов для начинающих пользователей ПК. Многие приходят именно оттуда. Это очень разные люди и все они, конечно, слышали о высоких зарплатах в IT-отрасли и полны энтузиазма освоить столь выгодную в финансовом плане профессию. Но действительность быстро охлаждает пыл большинства из них.

image

Изучить программирование непросто

Программирование включает набор сложнейших дисциплин, для освоения которых необходим обширный объем специфических знаний. Для «айтишника» в этом нет ничего нового но для неофитов это удивительно и неприятно.
Оказывается, что несмотря на энтузиазм и огромное желание зарабатывать в будущем хорошие деньги, для того, чтобы присвоить одну переменную другой, освоить пару операторов и выполнить с ними какие-то действия, многим требуется вовсе не пара часов, а несколько месяцев. Причем, они уходят только на понимание этих самых, на первый взгляд, довольно примитивных действий.
Почему это происходит? Думаю потому, что людям не имевшим прежде дела с логикой, математикой и программированием совсем непросто перестроить собственное мышление. Обычно ведь человек получает опыт, изучая окружающую его внешнюю среду и отталкиваясь от уже имеющихся знаний. Но в этом опыте нет места условиям, циклам, двоичному счислению и многому другому, что требуется для программирования. Эти в быту и обычной жизни не используются. Именно поэтому часть «начинающих программистов», сталкиваясь с совершенно непонятными вещами, бросают учёбу уже в первые дни или даже часы.

Необходимо научиться пользоваться инструментами ЯП, вспомнить все свои скудные знания по математике (а многие её, в принципе, не используют, разве что, только для подсчета купюр), расширить их до необходимого уровня. Да и это только на «старте». Дальше придется осваивать технологии, построенные на основе избранного языка программирования. Я уже молчу о том, что нужен ещё и английский язык, хотя бы на техническом уровне. Именно поэтому шансы у соискателя, не имеющего особых способностей, не увлекавшегося в школе информатикой и не сталкивавшегося в вузе с программированием, совсем невелики.

Конечно, есть талантливые люди, которым новые знания даются довольно быстро. Но, как показали мои наблюдения, это — редчайший случай. На моих глазах через клуб прошло множество потенциальных «специалистов». Никто из них до финиша так и не добрался. До подавляющего большинства новоявленных студентов, после месяца-двух интенсивной учебы доходило, что программирование — совершенно не их предмет. А наиболее способные поняли это гораздо быстрее.
Из, примерно двух сотен людей, прошедших через клуб, до сих пор переквалифицировать в программисты удалось лишь двум талантливым и упорным технарям, которых прижала жизнь. Это всего 1 процент, а не 9, как гласило прочитанное когда-то мной исследование.

Так что же клуб?

Клуб продолжает работать, он оказался великолепным местом для знакомства и общения с людьми, которые хотели бы узнать что-то новое без слишком уж большого напряжения. Приходил, например, немолодой ученый, уже на пенсии, решивший взяться за освоение языков программирования. Были мамы с детьми, супружеские пары — молодые и не очень, лаборанты и преподаватели вузов, действующие офицеры спецслужб, инженеры заводов и даже спортсмены. Кого только не было! Но большинству, повторюсь, программирование давалось трудно или не давалось, вообще. Никто не утруждал себя даже номинальным выполнением домашнего задания. И, практически все, через месяц-другой занятия бросали.

Почему так получается?

Всё достаточно просто. Многим кажется, что им удастся освоить новую профессию мимоходом, позанимавшись месяц или два в легком комфортном режиме. Работать и учиться всерьез, тратить на это месяцы или даже годы своей жизни на освоение нового дела не может или не хочет почти никто. Вот такая вот получается картинка.

ссылка на оригинал статьи http://megamozg.ru/post/16976/

LG Cloud прекращает работу в России

Сообщение на устройствах LG с начала июня 2015 года.

В конце 2012 года LG объявила о скором запуске в России облачного мультимедийный сервиса «LG Cloud». В середине мая сервис был представлен глобально в 40 странах. В сервисе делался акцент на мгновенной синхронизации с облаком всех мультимедийных устройств, что позволяло, к примеру, просматривать на SmartTV снимки и видео сделанных на смартфоне, без необходимости каких либо дополнительных действий по синхронизации.

К сожалению, продолжая существующую тенденцию, в начале июня, вслед за внезапным "Компания LG ELECTRONICS ПРЕКРАТИЛА АКТИВНОСТЬ НА ХАБРЕ" для России становится недоступен и сервис LG Cloud.

На немой вопрос, ответы таковы:
— Нет, сервис прекратит работать только в России.
— Сервис LG Cloud прекращает работу в связи с изменениями в политике нашей деятельности.
— Перестанут работать ВСЕ приложения на устройствах (ТВ, телефон, планшет, ПК), а также сайт сервиса.
— Нет. ваш аккаунт LG это не затронет. Прекратит работу только сервис LG Cloud.
— Если у вас остались вопросы, свяжитесь по электронной почте со службой поддержки по адресу lgcloud@lge.com.

Выдержка с официального сайта:

[LG Cloud] уведомление о прекращении работы сервиса LG Cloud

Уважаемые пользователи LG Cloud.
Позвольте выразить искреннюю благодарность за поддержку сервиса LG Cloud, которую вы оказывали нам вплоть до сегодняшнего дня. В связи с изменениями в политике нашей деятельности ВСЕ сервисы LG Cloud в России, доступные на телевизорах, смартфонах, планшетах, ПК, а также на сайте сервиса, прекратят свою работу с 15 июля 2015 года. Внимательно ознакомьтесь с нижеизложенной информацией во избежание каких-либо неудобств, вызванных прекращением работы сервиса LG Cloud.

— После прекращения работы сервиса все файлы, сохраненные в LG Cloud, будут удалены. Не забудьте загрузить ваши файлы до прекращения работы сервиса во избежание каких-либо проблем или неудобств.

— После прекращения работы сервиса пользователи не смогут применять функцию автоматической загрузки, предоставляемую на смартфонах/планшетах/ПК. Проверьте, что функция активирована, и начните загружать файлы, сохраненные в папке для синхронизации.
— После прекращения работы сервиса личная информация пользователя, собранная для предоставления доступа к сервису, будет уничтожена. Тем не менее, если, согласно соответствующим законам и нормативно-правовым актам, требуется сохранить информацию, компания сохранит ее на определенный период времени, установленный этими законами и нормативно-правовыми актами.
— Изображения, видео-, аудио- и другие файлы, сохраненные в LG Cloud, удобнее загружать через сайт LG Cloud или приложение для ПК.

Больше подробностей доступно на официальном сайте в разделе Конец службы Вопросы и ответы

Если кто включал синхронизацию с LG Cloud, но перестал пользоваться сервисом, и не получил уведомления на этот счет, то сейчас самое время проверить наличие копий всей нужной информации. До часа Х осталось чуть более двух недель.

ссылка на оригинал статьи http://geektimes.ru/post/252748/