Рубрика «hack» - 5

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

Erica Sadun, The iPhone Developer's CookBook

Оригинал

As you’ve seen in this chapter, and throughout this book, some of the nicest bits of iPhone programming are included in the public iPhone frameworks but not in the SDK. Apple’s unofficial policy on this is clear:You can use these items in your programs, but you do so at your own risk.Your code may break at each firmware release. Striking the balance between risk and reward is up to you.

Дисклеймеры

  • Приведенные здесь куски кода работают на обычных iPhone (включая 4S) и iPad (включая new iPad) и не требуют jailbreak.
  • Все решения написаны и протестированы на iOS 5. Все решения также протестированы на совместимость с iOS 4.3, т.е. работают с iOS 4, если не сказано обратное. Основная часть статьи была написана до выхода iOS 6, так что приведенные решения не тестировались на совместимость с iOS 6.
  • Использование недокументированных API может привести к тому, что ваше приложение не допустят в AppStore. А может и не привести :-)
    Для тех, кому интересно, как Apple опрделяет использование приваетных API:«Как Apple узнаёт, что ты используешь приватные API?»
  • Apple может изменить реализацию вместе со следующим релизом iOS, и в вашем коде что-то сломается. Впрочем, это решаемо, и ничем принципиально не отличается от реализации обратной совместимости для документированных API. Ниже я рассмотрел эту проблему чуть подробнее.
  • Я не могу гарантировать, что у найденных мной API нет побочных эффектов. Используйте на свой страх и риск.
  • Лицензионное соглашение Apple Developer Program запрещает реверс-инжинеринг iOS.
  • Статья в процессе доработки. Конструктивная критика приветствуется!

Краткая инструкция по поиску в SDK

Допустим, вам нужно сделать что-то, выходящее за рамки официальной документации. Читать полностью »

Решил рассказать о уязвимости AirOS на примере взлома NanoStation M2.

Началось все с того, что меня подключили к интернету. А так как я живу в частном секторе, провайдер поставил направленный wi-fi а у меня на крыше NanoStation M2 2.4 GHz.
Меня очень возмутило что мне не сообщили ни пароль от wi-fi ни пароль от NanoStation (хотя и причины мне вполне понятны). Как я получил пароль от wi-fi читайте под катом.Читать полностью »

Так как я абитуриент в этом году, мне пришлось просмотреть несколько сайтов российских ВУЗов и определиться, куда поступать.

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

Через некоторое время, когда сайты были осмотрены, тексты с зазываниями по типу «какой у нас классный ВУЗ» прочитаны, и решение было принято, я решил проверить, как у выбранного университета с безопасностью.

Полазив по сайту, получив порцию информации, по разглядывая фотографии, я заметил, что все ссылки имеют одинаковый формат: xxx.ru/?id=46&group=xxxx. По старой привычке подставив кавычку в параметры я ничего толком не обнаружил, новость/статья/контент как выводились, так и выводятся. Никакой SQL инъекции в радиусе сайта не наблюдалось. Очень неплохо.

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

Все ли так хорошо у них? Я предполагал всего-лишь небольшой аудит безопасности, а вышло нечто большее.

Читать полностью »

Я думаю, что большинство iOS разработчиков так или иначе сталкивались с тем, что по правилам Apple не удавалось сделать какие-либо функции. Часто это бывает связано с тем, что определенные методы попали в раздел private. При попытке опубликовать приложение с их использованием последует его отклонение (пункт 2.5 Apple Review Guidelines).

Использование Private API в приложениях для App Store

Под катом я расскажу, как можно частично снять это ограничение.
Читать полностью »

Здесь я продемонстрирую возможность, которая по своей сути — самый настоящий хак. Вопрос, зачем это может понадобиться? На самом деле целей для этого может быть огромное множество. Итак наша задача — изменить код библиотеки mscorlib таким образом, чтобы все программы, которые ей пользуются, получили эти изменения. Не рантайм, конечно, а во время старта (для runtime необходимо проделать другие вещи, и тут надо оговориться что изменения эти не должны поломать текущие состояния библиотеки). Mscorlib я взял как пример, потому что она есть у всех на компьютере. Но можно хакать любую другую.

Все мы знаем, что для того, чтобы не было «ада dll», Microsoft помимо обычных версий и названия библиотек, дали возможность подписывать сборки ключом, public key которой гарантирует что конкретная сборка «пришла» от конкретного разработчика, а не от какого-то другого. Поэтому, если мы хотим по какой-то вполне добросовестной причине изменить код существующей библиотеки т.о., чтобы она загрузилась в чужой процесс и при этом ключик public key остался тем же, у нас этого не получится. Потому что мы не сможем ее подписать, у нас нет закрытого ключа.

Наша мини цель, чтобы программа вывела на консоль текст:
Hello World from .Net Framework Version: 123.456.789.0!

Читать полностью »

Всем хабрапривет!Qt Software / Выборочная сборка плагинов — мы пойдём иным путём

Маленькая (ну очень маленькая) заметка о том, как дать плагину выбирать самому — собираться в данной системе или нет. Конечно, есть старый добрый способ — просто исключить сам лишний плагин из сборки, к примеру, так:

# plugins.pro  TEMPLATE=subdirs  SUBDIRS+=common macx: SUBDIRS+=macplugin win32: SUBDIRS+=winplugin

Но при таком подходе при добавлении каждого нового плагина надо его прописать в plugins.pro и установить для каких систем он будет собираться. Если плагинов всего-то 5 штук и больше не предвидится, то это нормально. Но если уже есть 20 плагинов, и ещё 30 планируется, причём многие из них должныЧитать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js