Пользователь
0,0
рейтинг
28 мая 2015 в 14:44

Разработка → Почему айфон перезагружается от арабской смс

DISCLAIMER

Не пытайтесь повторить это со своими телефонами и телефонами коллег! Судя по комментариям, много людей уже заразили свои телефоны, а 100%-тного лекарства еще нет!

DISCLAIMER 2

Даже не пытайтесь назвать так Wi-fi точку!

Около 15 часов назад на Reddit появился забавный пост, который рассказывал о перезагрузке айфона после странного сообщения вида:
Не шлите никому на айфон
Power
لُلُصّبُلُلصّبُررً ॣ ॣh ॣ ॣ




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

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

Также на Reddit было описано лекарство — требуется прислать смс любого содержания на атакованный номер, и глюк пропадет. Поясню — после перезагрузки атакованного телефона все работает нормально до тех пор, пока жертва не хочет прочитать смс, т.е. загрузить встроенное приложение Messages.

Messages вылетает по той же причине, что и вся iOS, с единственной разницей — являясь отдельным приложением, она не провоцирует падение mainthread самой iOS. Крэш Messages происходит из-за того, что на главном экране вы видите тексты последних отправленных и полученных сообщений. После получения нового смс от отправителя «вируса», последним сообщением станет новое смс и Messages, логично, перестанет падать.

Мне стало интересно, почему именно все так печально крешится, и я создал тестовый проект в xCode. При попытке добавить злополучный текст прямо в Interface Builder, я получил крэш самого xCode, причем он не открывался до тех пор, пока я не удалил тестовый проект с жесткого диска.

Со второй попытки я добавлял арабский текст кодом из текстового файла и после нескольких попыток, путем проб и ошибок выяснил, что:
  • UILabel ни при чем, он не может даже показать текст, останавливаясь на слове Power;
  • UITextField аналогично;
  • UITextView прекрасно отобразил полный текст;
  • UIButton сгенерировал bad access!!


Тут уже интересней. Распечатываем полный стэк трейс llvm-командой bt и получаем примерно следующее:

* thread #1: tid = 0xf611cd, 0x00000001120ce5f3 CoreText`CopyFromStorage(TRunGlue&, long) + 28, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x90)
    frame #0: 0x00000001120ce5f3 CoreText`CopyFromStorage(TRunGlue&, long) + 28
    frame #1: 0x00000001120ce283 CoreText`TRunGlue::RotateGlyphs(CFRange, long) + 527
    frame #2: 0x000000011212b71b CoreText`OpenTypeShapingEngine::ApplyScriptShaping(unsigned int*) + 465
    frame #3: 0x00000001120d0201 CoreText`TOpenTypeMorph::ApplyShapingEngine(OTL::GSUB&, OTL::GlyphLookups&, unsigned int*, CFRange, bool&) + 739
    frame #4: 0x00000001120d1007 CoreText`TOpenTypeMorph::ShapeGlyphs(bool&) + 331
    frame #5: 0x0000000112056c4e CoreText`TShapingEngine::ShapeGlyphs(TLine&, TCharStream const*) + 264
    frame #6: 0x000000011205c48b CoreText`TTypesetter::FinishEncoding(std::__1::tuple<TLine const*, TCharStream const*, void const* (*)(__CTRun const*, __CFString const*, void*), void*, std::__1::shared_ptr<TBidiLevelsProvider>*, unsigned int, unsigned char> const&, TLine&, signed char) + 127
    frame #7: 0x0000000112070586 CoreText`TTypesetterAttrString::Initialize(__CFAttributedString const*) + 674
    frame #8: 0x000000011207029a CoreText`TTypesetterAttrString::TTypesetterAttrString(__CFAttributedString const*) + 158
    frame #9: 0x000000011205d79f CoreText`CTLineCreateWithAttributedString + 63
    frame #10: 0x0000000110c6d8bd UIFoundation`__NSStringDrawingEngine + 18744
    frame #11: 0x0000000110c68f5f UIFoundation`-[NSString(NSExtendedStringDrawing) boundingRectWithSize:options:attributes:context:] + 198
    frame #12: 0x000000010e875788 UIKit`-[UIButton _intrinsicSizeWithinSize:] + 946
    frame #13: 0x000000010ec2466d UIKit`-[UIView(UIConstraintBasedLayout) intrinsicContentSize] + 37
    frame #14: 0x000000010ec24b6c UIKit`-[UIView(UIConstraintBasedLayout) _generateContentSizeConstraints] + 33
    frame #15: 0x000000010ec24930 UIKit`-[UIView(UIConstraintBasedLayout) _updateContentSizeConstraints] + 422
    frame #16: 0x000000010ec2bd25 UIKit`-[UIView(AdditionalLayoutSupport) updateConstraints] + 162
    frame #17: 0x000000010e87521b UIKit`-[UIButton updateConstraints] + 2925
    frame #18: 0x000000010ec2b346 UIKit`-[UIView(AdditionalLayoutSupport) _internalUpdateConstraintsIfNeededAccumulatingViewsNeedingSecondPassAndViewsNeedingBaselineUpdate:] + 242
    frame #19: 0x000000010ec2b53e UIKit`-[UIView(AdditionalLayoutSupport) _updateConstraintsIfNeededAccumulatingViewsNeedingSecondPassAndViewsNeedingBaselineUpdate:] + 124
    frame #20: 0x000000010e0bd354 CoreFoundation`CFArrayApplyFunction + 68
    frame #21: 0x000000010ec2b2ed UIKit`-[UIView(AdditionalLayoutSupport) _internalUpdateConstraintsIfNeededAccumulatingViewsNeedingSecondPassAndViewsNeedingBaselineUpdate:] + 153
    frame #22: 0x000000010d9ef1be Foundation`-[NSISEngine withBehaviors:performModifications:] + 155
    frame #23: 0x000000010ec2b53e UIKit`-[UIView(AdditionalLayoutSupport) _updateConstraintsIfNeededAccumulatingViewsNeedingSecondPassAndViewsNeedingBaselineUpdate:] + 124
    frame #24: 0x000000010ec2ba0e UIKit`__60-[UIView(AdditionalLayoutSupport) updateConstraintsIfNeeded]_block_invoke + 96
    frame #25: 0x000000010d9ef1be Foundation`-[NSISEngine withBehaviors:performModifications:] + 155
    frame #26: 0x000000010ec2b6d6 UIKit`-[UIView(AdditionalLayoutSupport) updateConstraintsIfNeeded] + 231
    frame #27: 0x000000010ec2bdde UIKit`-[UIView(AdditionalLayoutSupport) _updateConstraintsAtEngineLevelIfNeeded] + 146
    frame #28: 0x000000010e623a3d UIKit`-[UIView(Hierarchy) _updateConstraintsAsNecessaryAndApplyLayoutFromEngine] + 114
    frame #29: 0x000000010e62fa2b UIKit`-[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 536
    frame #30: 0x0000000111e08ec2 QuartzCore`-[CALayer layoutSublayers] + 146
    frame #31: 0x0000000111dfd6d6 QuartzCore`CA::Layer::layout_if_needed(CA::Transaction*) + 380
    frame #32: 0x0000000111dfd546 QuartzCore`CA::Layer::layout_and_display_if_needed(CA::Transaction*) + 24
    frame #33: 0x0000000111d69886 QuartzCore`CA::Context::commit_transaction(CA::Transaction*) + 242
    frame #34: 0x0000000111d6aa3a QuartzCore`CA::Transaction::commit() + 462
    frame #35: 0x000000010e5ada2d UIKit`-[UIApplication _reportMainSceneUpdateFinished:] + 44
    frame #36: 0x000000010e5ae6f1 UIKit`-[UIApplication _runWithMainScene:transitionContext:completion:] + 2648
    frame #37: 0x000000010e5ad0d5 UIKit`-[UIApplication workspaceDidEndTransaction:] + 179
    frame #38: 0x0000000110d835e5 FrontBoardServices`__31-[FBSSerialQueue performAsync:]_block_invoke_2 + 21
    frame #39: 0x000000010e0ea41c CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 12
    frame #40: 0x000000010e0e0165 CoreFoundation`__CFRunLoopDoBlocks + 341
    frame #41: 0x000000010e0dff25 CoreFoundation`__CFRunLoopRun + 2389
    frame #42: 0x000000010e0df366 CoreFoundation`CFRunLoopRunSpecific + 470
    frame #43: 0x000000010e5acb42 UIKit`-[UIApplication _run] + 413
    frame #44: 0x000000010e5af900 UIKit`UIApplicationMain + 1282
  * frame #45: 0x000000010d91ed0f Islam`main(argc=1, argv=0x00007fff522e1330) + 111 at main.m:14
    frame #46: 0x000000011076e145 libdyld.dylib`start + 1

Последней документированной функцией является CTLineCreateWithAttributedString, что нам в принципе ничего не дает. Сам же крэш происходит внутри метода CopyFromStorage(TRunGlue&, long) и, судя по ассемблерному коду, в момент копирования байтов длиной long n из одной части памяти в другую (movq 0x90(%rax), %rdx).

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

Баг, видимо, существует столько же, сколько и iOS, и был замечен, видимо, случайно. Кстати, слово Power вставлено для красного словца и роли не играет. Смысл же текста мне не удалось выявить даже с помощью Google Translate (последний символ — вовсе не арабский, а китайский, и означает Избыточность, что как бы намекает!). Возможно, из-за присутствия китайских и арабских символов одновременно?

За сим откланяюсь, желаю всем кодов 200, билдов без exc_bad_access и stackoverflow и приятного окончания продуктивной рабочей недели!
@iago
карма
48,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (138)

  • +9
    Занудства ради скажу, что там не только арабский (или родственные ему). В конце стоит китайский (точнее CJK) иероглиф, а по центру вообще чёрти-что, наводящее на мысль о хинди или бенгальском. Вы проверяли, всё рушит только сообщение целиком или определённая его часть?
    • +26
      О как интересно, мне почему-то до сих пор это в голову не пришло. Минимально опасный текст таков:
      Заголовок спойлера
      а
      رر ॣ ॣ


      Т.е. одна буква из нормального алфавита (кирилицы, латиницы — не важно), по две из арабского и маратхи и одного китайского иероглифа! Также необходимы /r/n между строками. Преинтереснейший результат!
      • +5
        Отправил себе через сервис мегафона на 5s — пришло следущее
        а
        &# 1585;&# 1585; &# 2403; &# 2403;
        &# 20887;
        


        потом отправил себе через pushbullet, и он перестал запускаться) Даже после перегруза...) Помогло только убийство мессаги через ПК

        *Поставил пробелы после диеза, так как текст обращался в злополучное сообщение
      • +4
        Отправил сам себе с виндофона:
        первый текст не отправляется, второй не работает, «кастомный» тоже не работает.
        iOS 7.1.2
        кастомная SMS
        image
        • +5
          Кстати телефон вполне дал зайти на Хабр, скопировать злополучный текст SMS, и отправить его обратно.

          Не отправил потому, что денег нет на счету :3
          image
          • 0
            Видимо подвержена только 8.3 версия iOS.
            Проверил на пачке айфонов и падов, версии от 6.1.3 до 7.1.2 не подвержены. 8.0.2 тоже, вроде не подавала признаков ошибки.

            Вайфай точка доступа ничего страшного не делает с айфоном 4S и iPad Air на 8.3, но сообщение отправленное через iMessage «жертве», при попытке «злоумышленником» открыть сообщения, крашит его самого.

            В случае двух устройств — планшет и телефон, все не так страшно. Планшет крашился сразу, а телефон секунд через 5-8. За это время можно стереть у себя вредоносное сообщение из отправленных, и дать ему отсинхриться на другое (другие) устройства.
            Что происходит у «жертвы» — я х.з. Путь тот коллега сам со своей женой разбирается :)

            прим. все отправлялось через iMessage, в случае отправки через SMS результат может быть другим, или не быть другим.
      • +2
        Все же понятно. Там написано:

        Жопа, смотри!
        П… ц!
        • –10
          Вам, с вашим ником, в этом топике вообще появляться не стоило.
          • +5
            Шта?
            • 0
              Блин, ну я думал хоть вы поймете… Какими двумя «словами» повестить Z80?
              • +1
                Да я понял, только тут мимо как бы.
                • +1
                  Про мимо и я уже понял. Извините, если задел.
                  • 0
                    Теперь хоть понятно почему ник такой! Хорошо же вы о Хабре думаете, раз ожидали, что это будет очевидно для всех.
    • +4
      Автор поста называет это «исламский текст».
      А пишем мы тут христианским текстом!
      • +2
        Исправил, спасибо! На автомате написал, имел в виду конечно арабский :)
    • 0
      ॣ ॣ — это тайские
  • +26
    По опыту разработки системы процессинга/рендеринга текста с нуля (поддерживающей сложные скрипты) — всякий bidi процессинг (когда в тексте встречаются сразу символы left-to-right и right-to-left), арабские диалекты, хинди, кхмер и т. п. — поле непаханное для крэшей. Во всех операционных системах. Там, на стыках естественных и искусственных языков — конь не валялся :) Это очень, очень глубокое IMHO.
    • +2
      А какие языки вы подразумеваете под искусственными в данном случае?
      • +17
        Я не совсем точно выразился. Не искусственные языки, а эмм… Грубо говоря, обработка [например двухбайтных] символов каждого типа естественного языка — это примерно как виртуальная машина. Символы — как опкоды. В сложных языках эти опкоды могут модифицировать на лету [сегмент кода] прочий текст. Правила этих модификаций не до конца внятны. Например, в Sinhala. Отсюда ошибки. Принадлежность к естественному языку определяется, как правило, по юникодным идентификаторам символов. Некоторые языки предполагают определенное количество символов после некоторого символа. Его может там не быть, а быть совершенно другое. Знаю, описал не слишком внятно, но в абзац это поместить сложно.
      • +1
        deleted
    • +4
      Ну я понимаю, что все ситуации предусмотреть невозможно, но систему то крашить зачем? Ошибка то чисто программерская. Длина массива не проконтролирована. И уже ведь который раз такие ошибки у Apple вылезают, а воз и ныне там.
      • +9
        К сожалению, у Апплов не декомпозированы некоторые элементы, которые на добрый толк должны быть в отдельных процессах. Так, например, было у Win9x, в которой ошибка UI приложения могла закрешить всю систему. Грубо говоря, много хард-кода. Андроид же изначально разрабатывался модульным, там таких проблем бы не возникло — вы просто не увидели бы пуш-уведомление.
        • +1
          Обратная сторона, что андроид жрёт больше ресурсов для получения более-менее гладкого ui. Просто apple выбрали скорость против устойчивости.
          • +16
            Да, конечно — для показа виджета андроиду надо запустить VM, запустить песочницу и т.п., а Apple просто выполняет бинарный код отрисовки. Как хорошо, что андроиды сейчас мощные и довольно плавные — помню, во времена 1.5-1.6 разница была чересчур существенной.
  • +4
    Время от времени меня посещает спам по iMessage. Настало время его боятся?
    • +3
      Параноик будет скорее бояться всех пуш сообщений и отключит их в первую очередь. То же самое может случиться, если пришлет сообщение vk.
      • +4
        Скидывали на ipad в приложение vk — вылетает при попытке зайти в сообщения, после 3 попытки заходит и не отображает данного сообщения.
  • –8
    На iPhone 6 не работает
    • +15
      работает на шестерке, 100% работает, только что проверяли.
    • +2
      Разве это может зависит от железа? Сотфтаврный баг же
  • +1
    на iPhone5 работает
  • +1
    У меня лекартсво не сработало :)))
    • +3
      А вы сами слали смс или вам пришло? Точно вам послали лекарственную смс, и ее не перехватил Messages на маке?
      • +2
        Мы в офисе решили проверить, как работает. Так что слал мне коллега :)
        На маке не перехватил, уведомление прило на айфон. Но в сообщения войти не удается.
        Сейчас восстанавливаюсь из бекапа :)
        • +1
          А удалить все сообщения не получилось или не вариант?
          • +1
            К сожалению, просто не пускал в Сообщения совсем. Если удалять с Мака, то на телефон это не влияет, они хранят независимо.
            Тут кто-то писал, что через менеджер запущенных приложений можно вернуться в него, но у меня не получилось. Возможно, мало попыток сделал.
            • +2
              Можно было, например, отправить самому себе сообщение через Сири. Или с мака.
            • +3
              Вот рецепт от Эпла:
              Apple is aware of an iMessage issue caused by a specific series of unicode characters and we will make a fix available in a software update. Until the update is available, you can use these steps to re-open the Messages app.

              1. Ask Siri to «read unread messages.»

              2. Use Siri to reply to the malicious message. After you reply, you'll be able to open Messages again

              3. In Messages, swipe left to delete the entire thread. Or tap and hold the malicious message, tap More, and delete the message from the thread.
              • 0
                Сири грустно сообщает, что у вас нет новых сообщений(
  • +1
    Если мне память не изменяет складывался даже Safari, если зайти на страницу с таким текстом.
    • +3
      у меня сложился Chrome под мак, приложение Slack. Gmail обрабатывает нормально — там, видимо, кастомные контролы используются.
      • +3
        у меня ничего не сложилось. Читаю эту статью из Хрома под маком
    • +4
      нет с safari все хорошо )
  • +4
    Если вам кто-то отправил смертоносную СМС, но не хочет отправлять «лекарство», мне помогло: попытаться запустить приложение, когда оно вылетело, дважды нажать кнопку домой, чтобы появился список запущенных приложений (оттуда оно не вылетело), открыть его. Дальше сразу же удалить сообщение. Срабатывает не с первого раза, но срабатывает.
  • НЛО прилетело и опубликовало эту надпись здесь
    • +52
      Нива это такой внедорожник, который застрянет там, куда другие внедорожники не доедут.

      Не злорадствую, просто шутка. Сколько людей себе добровольно вывели телефоны из строя и теперь не знают, как быстро исправить.
    • НЛО прилетело и опубликовало эту надпись здесь
  • +20
    Лекарство:
    Заходим в заметки, пишем любое сообщение, выбираем поделиться, сообщения, отсылаем абоненту от которого получено сообщение. После этого messages снова заработают.
    • 0
      Но ломается у того, который прислал первым? Круговорот зла.
    • 0
      Спасибо, помогло
  • +2
    Вконтакте удаляет «оригинальное» сообщение из ленты и сообщений. Однако «минимально опасный» оставляет.
    • +1
      через Вконтаке iPhone тоже перезагружается?
      • +1
        Я так понял, что падать будет только приложение в котором открывается лента ВК с данным сообщением. Проверить пока не удалось. Коллега с iPhone уже уехал.
      • +4
        это как с окрашенной лавкой: пока не проверят — не поверят
      • +3
        Через любое приложение, которое пришлет вам push-уведомление с данным текстом. Любой мессенджер, например.
        • +1
          Стоит проверить на разных iOS. У меня ничего не крашит, ни смс ни пуш. 7.1.2, 5ый айфон
          • +2
            Завидую вам, у меня крешит на пятерке, 8.3. У меня нет возможности проверить — пусть лучше Apple поскорей выпустит 8.3.1 или 8.4 с фиксом.
            • +1
              Принципиально не обновляюсь, вполне устраивает моя прошивка, а если что-то нужно дополнительно — решаемо с помощью джейла.
              Ну тут дело и не только в принципе, еще и в невозможности обновиться из-за отсутствия хорошего интернета)
              • +2
                Как разработчик я бы больше хотел, чтобы вы обновлялись!
              • 0
                Есть еще один способ вылечить телефон — достаточно прислать на зараженный телефон смс с десятка разных номеров, чтобы плохая смска оказалась глубоко внизу
  • –11
    Айфон 5 на грани смерти, уже не смешно!
  • +7
    На хабре тут уже был описан похожий баг в 2013 году (тогда падение было вроде в CoreFont тоже от арабской последовательности символов):
    DoS эксплоит для движка WebKit
    • +6
      О, так это тот же баг! Видимо, WebKit тоже работает поверх Core Text, отсюда и одни корни проблемы.
    • +1
      Вот, точно, было же. А то я испытал мощное чувство дежавю когда открыл сегодняшний пост и на всякий случай проверил дату — не занесло ли меня на пару лет назад, так как явно на хабре я про это уже когда-то читал…
  • +1
    «Слишком длинное сообщение», сообщает мне freesms.mts.by.
    При том, что длиной оно 35 символов.
    Так что анонимно ребутить не выйдет
    • +2
      freesms.mts.by еще добавляет в конец айпишник и еще что-то, если мне не изменяет память
  • +21
    Вспомнилась откуда-то фраза «повесьте на забор кнопку, напишите большими буквами: „Кнопка Конца Света, НЕ НАЖИМАТЬ“ краска даже высохнуть не успеет.»
    • +4
      Это, кстати, доказывает масштабный эксперимент на Reddit'е
      • +3
        Обоги, он еще не закончился?
        • +1
          Нет ещё. Скоро, наверное, будет уже миллион нажатий.
        • 0
          Только что видел как счетчик дошел до нуля
          pasteboard.co/QCF227f.png
          И ничего не произошло. Через пару секунд снова пошел отчет.
          • 0
            Это нормально. Счетчик крутится не на страничке ведь, а где-то на сервере а на страничке он отображается с некоторым лагом.
            • 0
              А что, если нет, и это все шутка?
              • +1
                • 0
                  Отмучились. интересно сколько народу резко пошли спать в этот момент?
                  • 0
                    Разве каждый мог нажать не по 1 разу? Или вы про субреддит?
                    • 0
                      По разу. Но там помнится мне образовывались сообщество по недопущению провалов, вот они наверняка дежурили у кнопки — вот эти люди резко потеряли смысл жизни и пошли наконец спать после дежурства которое теперь не нужно.
                      • +2
                        А что там за эксперимент был, для тех кто в танке?
                        • –1
                          Краем уха слышал что группа пользователей организовалась и устроили дежурство чтобы не допустить конца отсчета. Не знаю как они там организовывались, но наверняка сидели и дежурили у кнопки.
                        • 0
                          Там была кнопка и счётчик, который считает секунды вниз. Предполагалось, что если счётчик достигнет нуля, эксперимент закончится. После нажатия на кнопку, счётчик сбрасывается на 60. Каждый пользователь может нажать только один раз. И никаких официальных объяснений, что это и зачем.

                          Результаты тут: button.cstevens.me
                          Сама кнопка и обсуждение тут www.reddit.com/r/thebutton
    • +1
      В волшебной игре The Neverhood тоже такое есть. Кажется, это один из примерно двух способов закончить игру до её логического окончания.
  • +3
    iOs 7.1.2
    Друг прочитал статью и попытался меня крашнуть. Ничего не вышло. Могу сто раз открыть сообщения, и любые пуш с этим текстом приходят. Ничего не вылетает. Чем я обделен?
    • +2
      Эпл каждый релиз меняет что-то в недрах системы. О чем тут говорить, даже в стандартных, проверенных временем контролах типа UITableView порой вылазят новые баги на ровном месте. Может, подлили случайно код из старой ветки — никто не застрахован от ошибок.
    • +1
      На 7 не работает.
      А вообще интересная штука, побаловались всем офисом, а потом искали другой телефон что бы переставить симки и перебить сообщения, а то у всех мессенджер падал.
  • +6
    Прямо «Зенитные кодексы Аль-Эфесби» в реальности :)
  • +28
    Прочитав все комментарии невольно вспоминается картинка:
    раскрыть
    image
  • +2
    Sublime складывается, но если добавлять в новый файл. Если дописывать к уже существующему — все работает.
    • +1
      Проверил в 3-ем Сублиме, ничего не складывается, добавлял в новый файл.
  • –1
    Allah Akbar )))
  • +1
    Что очень странно, что даже при копировании текста в PHPStorm, приложение тупо вырубило. Crash log: gist.github.com/anonymous/4bb78a72a930ad12561a

    UPD: аналогично положило и терминал: gist.github.com/anonymous/32bdf8257fa250423d63
    • +2
      Ничего странного, баг в CoreText.

      Что видно и по вашему трейсу:
      Thread 33 Crashed:: Java: AWT-EventQueue-1 8.0.3#PS-139.1348, eap:false
      0   com.apple.CoreText            	0x00007fff8bf86d54 CopyFromStorage(TRunGlue&, long) + 28
      1   com.apple.CoreText            	0x00007fff8bf869b5 TRunGlue::RotateGlyphs(CFRange, long) + 517
      2   com.apple.CoreText            	0x00007fff8bfc86fb OpenTypeShapingEngine::ApplyScriptShaping(unsigned int*) + 473
      
  • +1
    Вот Unicode коды всех символов:

    Unicode codes
    Line #1: 80, 111, 119, 101, 114, 10
    Line #2: 1604, 1615, 1604, 1615, 1589, 1617, 1576, 1615, 1604, 1615, 1604, 1589, 1617, 1576, 1615, 1585, 1585, 1611, 32, 2403, 32, 2403, 104, 32, 2403, 32, 2403, 10
    Line #3: 20887


    Что очень интересно, как я понял, это опасно только для iOS/Mac OS подобных систем…
  • +2
    %english возвращается! :)
  • +1
    MacOS X 10.10.4 — полёт нормальный на Chrome 44.0.2403.9. Видимо, фикс уже на подходе.
    • +1
      Safari 7.1.6 на MacOS X 10.9.5 – тоже всё работает.
  • +1
    Проверил в собственном приложении. iOS 6.1/7.1 отнеслись к этому нормально, и даже прекрасно всё нарисовали. А вот 8.3 легла наглухо.
    • +1
      … на iOS8.3 так же не падает, если отрисовка идёт через CATextLayer. В UILabel падает.
  • +1
    А если телефон с которого шлют это смс тоже айфон, то тоже баг сработает? В message исходящие тоже в списках показывают
    • +2
      Сработает.
    • +5
      Это худший кейс, не надо так делать!
  • 0
    Решил запостить шутку про это сообщение себе на стену ВК, и пост через несколько секунд «самоудалился». Администрация ВК борется с распространением.
    • 0
      А вы запостите модификацию, там в верху темы есть минимальный набор и описание, как изготовить новый.
  • +1
    В общем, отправил сам себе, ради «забавы». Полетело все. В сообщение уже зайти не мог, сразу вырубало. Лекарство тоже не помогло.
    Помогло следующие: полная очистка сообщений, при помощи PhoneClean. Он требует PRO доступ, но там же на 4PDA и ключик есть для актуальной версии. Минус один, он тупо очищает всю историю сообщений. Если у кого-то там важные данные, но не используйте.
  • +4
    А что будет, если на андроиде создать точку доступа с таким именем?
    • +10
      Переход от слов к делу в войне телефонов.
      • 0
        Если будут подтверждения — напишите. Реально интересный способ вырубить или подвесить все айфоны в пределах видимости, например, домашнего роутера.
        Смущает одно: мы в этом конфликте будем агрессорами.
        • 0
          Попробовал создать точку доступа на своем ноутбуке (netsh wlan start hostednetwork), ввел символы побайтово через реестр с переводами строк, все как надо (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WlanSvc\Parameters\HostedNetworkSettings). С андроида символы видны нормально. С айфона в список сетей нормально заходит, в названии сети отображает только первую строчку, при попытке соединиться перезагружает SpringBoard. Кто-нибудь в курсе, на iphone открытые сети показывает в push, как на андроиде? Поэкспериментировать пока не удастся за неимением iPhone на руках.
          • 0
            Пробовал на своем андроиде создать точку доступа с таким именем. Я правда не стал заморачиватся вводить побайтово а просто скопировал без переносов строку. Ну че, эффект достигнут, открываю настройки, WI-FI и вылетаю на главный экран.
  • +3
    Хабранарод! Мне помогло следующее:

    1) Запускаем «Заметки»
    2) Выбираем любую заметку (или создаем новую), нажимаем пиктограмму «Поделиться»
    3) Выбираем «Сообщение», в поле «Кому» указываем того, кто прислал нам вредное сообщение. Если высылали себе или кому-то еще — поочередно всем отсылаем по сообщению.

    После этого «Сообщения» будут запускаться нормально.

    Проверено на iPhone 5S 8.3 и iPad mini 2 8.3
    • +1
      iPhone 6, iOS 8.3 — не помогло…
      • 0
        Специально сломал iPad и запилил видео с восстановлением — ссылку отправил в личку — посмотрите, может быть поможет…
        • 0
          Большое спасибо! Я то решил проблему путем удаления всех смс-ок (сообщений).
          При «поделиться заметкой», у меня открывается модальное окно в этом же приложение (Заметки), наверное потому и не помогло.
  • +1
    А почему нельзя называть так Wi-Fi точку? Что будет в данном случае в теме не раскрыто. Проверить тоже не могу, ибо ни одного iPhone ни у меня, ни у знакомых нет.
    • +1
      Наверное при обнаружении открытой точки телефон показывает уведомление. Но у меня тоже нету iphone. Просто догадка.
  • +1
    xCode 6.2 вылетил, на телефоне тестить не рискнул
    Когда пытался расшарить эту новость в группе CocaoHeads Belarus, Facebook сказал мне следующее:

    The content you're trying to share includes a link that might be unsafe

    Power
    لُلُصّبُلُلصّبُررً ॣ ॣh ॣ ॣ


    всем!
    • +4
      Антон, можешь написать короткую версию в Facebook, она так же работает.
      а
      رر ॣ ॣ
  • +2
    Последний иероглиф должен быть не 冗, а 操, так как, скорее всего, именно это слово и захочет сказать несчастный владелец айфона :)
    (http://bkrs.info/slovo.php?ch=%E6%93%8D, пункт IV)
  • 0
    Билайн заблокировал прием таких сообщений для своих абонентов. Но не в ММS, тач что просто добавьте к сообщению любую картинку.
    • 0
      Не подтверждаю. Только что отправил с билайна на билайн такое сообщение.
      Оба дошли. Правда оба андроид телефона (может он это определяет и решает слать или не слать?).
      И заметил странность, что отчет о доставке смс приходит буквально на минуту раньше самой смс (оба телефона рядом лежали).
  • 0
    На iOS 8.3 iMessage подвисает и отвисает, без крашей
  • 0
    Баг, скорее всего, из-за особенностей объединения символов в юникоде: тут они и с разным типом joining (когда символы можно объединять с другими слева, справа, сверху,… — вот те, где нарисованы такие пунктирные кружочки), направлением текста (влево, вправо) и на разных строках. Если вставить такую строчку, например, в консоль в хроме, курсор по ней тоже перемещается, как будто бы там есть меньше символов, чем на самом деле.
  • 0
    Для обладателей джейлбрейкнутых устройств есть простое решение для «закрытия» данной уязвимости. В репозитории cydia.angelxwind.net необходимо установить твик IneffectivePower. Проверил на своем 5s с прошивкой 8.1
  • +1
    «В контакте» при публикации на стенке такого сообщения удаляет его буквально через минуту. Модификация прошла.
    Фэйсбук не пропускает такое сообщение, почему-то ругаясь на «ссылку». Модификация прошла.

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

  • 0
    Наверное, теперь будут приходить спамовые смс с просьбой разблокировать повисший айфончик по такому-то номеру и подписывать на платные контент-сервисы по факту отправки смс.

    Надеюсь я ни кому не подал идею.
  • 0
    Каждый год одно и то же.
    habrahabr.ru/post/191654
    С яблофонов спойлер не открывайте-ка, на всякий
    سمَـَّوُوُحخ ̷̴̐خ ̷̴̐خ ̷̴̐خ امارتيخ ̷̴̐خ
    • 0
      И то, и пост 2013 года было про WebKit, здесь же — нативные контролы. Разница все же ощутимо есть.
  • 0
    Пхех, нестабильный нынче софт — от багов в каком-то кортексте операционка перезагружается… Я когда-то Nokia 3310 глючить заставил. Там при вводе номера с домашнего экрана можно по нему не только позвонить, но и выбрать сохранение или конвертацию валют. Проверки на длину при сохранении, в отличие от мастера создания контакта, там нет (видимо, упор на то, что на симку столько не влезет и лишнее обрежется). Вбил over 9k двоек и сохранил. Причём без имени контакта… При попытке отобразить этот номер — ПРОСТО выбрасывало на домашний экран (в итоге, телефонную книжку нельзя было листать через конец).
    • +3
      Заходит однажды тестировщик в бар.
      Забегает в бар.
      Пролезает в бар.
      Танцуя, проникает в бар.
      Крадется в бар.
      Врывается в бар.
      Прыгает в бар

      и заказывает:

      кружку пива,
      2 кружки пива,
      0 кружек пива,
      999999999 кружек пива,
      ящерицу в стакане,
      –1 кружку пива,
      qwertyuip кружек пива.
  • 0
    В далеком 2003ем так вылетали сименсы. Вся 35-ая серия перезагружалась при получении сообщения '%english' или чегото похожего :) Но можно было перепрошиться исправив это слово в прошивке на другое секретное (да, было захардкожено для каких то нужд, типа переключения языка или чего еще) и тогда массовый (но тогда это слово носило другой характер, так как телефоны были только у 30% однокурсников с потока) спам только развлекал. а вот девочкам приходилось помогать :)
  • 0
    Мой товарищ кипешует, что от этой смс на утро у него пропали все контакты. Пожалуйста, дайте ему профессиональный ответ насчёт этого.
    • 0
      Контакты (Contacts) — отдельное приложение, смски (Messages) — отдельное приложение. Если он не называл контакт арабскими символами, у него ничего пропасть не могло.

      Если он имеет в виду то, что пропали все смски — пришлите ему штук 10 смс с разных номеров, это 100% лечит от бага. (т.к. превью сообщения с опасными символами уйдет глубоко вниз)
  • 0
    Спешу заметить, что при Стиве это, вероятно, было, так как “ошибка существует, вероятно, столько же, сколько и сама iOS, и замечена случайно”.
  • 0
    Один мой коллега послал директору эту смс, и того после этого айфоном было отправлено много смс на сумму 400р на номер +447786205094
    Из интернета стало ясно, что номер используется при активации Face Time, однако непонятно, как смс-убийца спровоцировала айфон на отправку этих смс.
    У кого-нибудь было такое?
    • 0
      Никак. Скорей всего сам начудил и списал это все на действие вредной СМС-ки.
    • 0
      Мне кажется, что просто директору выпал удачный шанс свалить свою оплошность допущенную ранее (или позже, в попытках «исправить») на другого

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.