Pull to refresh

Comments 43

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

Ну, дык пускай смотрят. Мне, например, не жалко бы было.
Вопрос всегда о данных… Не думаю, что банк будет рад тому, что их код можно легко «почитать».
До определенной степени спасет обфускатор, самое главное это валидация сборки. Но, к сожалению, не в курсе как это на WP.
Подписать сборку есть возможность. Это не происходит во вкладке в свойствах, но с консолью и постбилд событиями можно автоматизировать. Не помню как называется, но есть гибридные библиотеки для сервелата, винфона и дотнета — там, возможно, есть вкладка для подписи.
В смысле я могу использовать strong named сборки и хранить ключик в своем сейфе?
После хорошей обфускации даже вышеупомянутый пример было бы уже не так просто подредактировать. А банковский софт вообще не должен никуда уходить за пределы здания, если уж на то пошло…
В маркете есть достаточно много банковских приложений, в которых можно посмотреть код. Причем эти банковские приложения выполняют функции перевода денег.
Так это UI обертка над банковским API, по идее никаких вредительских операций вы не сможете сделать даже имея все сорцы клиента.
Но все равно данные могут прочесть. Обфускация тут, максимум, даст ложную уверенность, что данные в безопасности.
Насколько я понимаю после выхода WP8 все это будет уже не актуально, т.к. обещали «Cloud Compile» в Native Code.
Обещали NGen в облаке?
Да, в том числе для тех приложений которые уже опубликованы (при условии запуска на wp8).
Сам код особой ценности не имеет. От того что вы прочитаете код, тот же SAML токен вам не расшифровать.
Нормальный обфускатор устроит такую лапшу, что будет очень сложно что-то понять.
Эта вкладка есть во всех проектах .net
Вот ведь! Интересно, в связи с чем это.
Зачем мучаться с обфускацией, защищаясь от ничтожного количества пользователей-хакеров?
достаточно одного который уведет у банка кое что что ему не принадлежит.
Можете перечислить то, что можно увести из приложения? Может я чего не понимаю, но приложение на трубке — low trust, что автоматом выливается в невозможность хранения ценных данных в открытом виде и передачу чего либо по незащищенным каналам, предварительно не пройдясь шифрованием?
Какая чушь, что ж это за банк который не делает дополнительные проверки на сервере. И не использует https для общения с клиентом?
Обфускация производится не только для защиты. Это ещё и оптимизация (в зависимости от возможностей обфускатора): например, вынос (или, наоборот, инлайн) методов, удаление неиспользуемых переменных и мёртвого кода, сокращение названий классов, методов и свойств, сортировка классов и методов и пр. На мобильных устройствах пусть даже мелкая оптимизация, но для миллионов устройств, выливается в значительную экономию ресурсов.
UFO just landed and posted this here
Могу сказать, что уже существуют способы обхода проверки подписи для приложений WP7 — правда пока только для запуска их на эмуляторе. Но нам динамического анализа приложений на текущий момент и эмулятора хватает.
UFO just landed and posted this here
Что такое «чисто анализ»? Мы производим статическую инструментацию скомпилированного приложения для WP7 и анализируем его в процессе его работы на эмуляторе. При желании и логику работы приложения изменить можно.
UFO just landed and posted this here
Это всего лишь вопрос времени — работаем в данном направлении. Для этого либо уязвимость в ОС WP7 нужна или ослабление безопасности ОС WP7 (по аналогии с jailbreak в iOS), что в принципе и реализует цепочку уязвимостей.
Есть программы, которые тупо срубают подпись с пакета
Так погодите, автор же запустил приложение у себя. Правда, у него developer unlocked устройство.
UFO just landed and posted this here
А заливали вы как? Application Deployment'ом? По идее он и должен ее переподписывать.
Что имеется ввиду под подписью? Если подпись маркета — то ее просто удаляем (WMAppPRHeader.xml)
Если именно подпись каждой сборки — от этого тоже умеет спасать рефлексил. У меня обычный моцарт с самой стандартной прошивкой :)
Приложения без подписи ставятся и работают? Андроид, например, требует подпись. Но, удалив оригинальное приложение, подписав его своей, можно поставить и оно будет успешно работать (если оно или другое не будет проверять ключ).
На разлоченом девайсе, редактированое приложение удаляет старое ставит себя. Тут нет подписки как в Android. Как я понял — вся подпись маркета — это файл WMAppPRHeader.xml содержимое которого выглядит следующим образом:

<WRMHEADER xmlns="http://schemas.microsoft.com/DRM/2007/03/PlayReadyHeader" version="4.0.0.0">
<DATA>
  <PROTECTINFO>
    <KEYLEN>16</KEYLEN>
    <ALGID>AESCTR</ALGID>
  </PROTECTINFO>
  <KID>lds1jRP2aDeWpl8X+H+MsA==</KID>
  <LA_URL>http://microsoft.com/</LA_URL>
  <CUSTOMATTRIBUTES xmlns="">
    <S>dfGxu4ileP4+LWZdE6ds4wQ==</S>
    <KGV>0</KGV>
  </CUSTOMATTRIBUTES>
  <CHECKSUM>tXG3tIfoarY=</CHECKSUM>
</DATA>
</WRMHEADER>
UFO just landed and posted this here
Цифровая подпись чего?
Сборки со Strong Name?

Просто весь .xap никто кроме майкрософта не подписывает. Я такого и не встречал даже :(
UFO just landed and posted this here
Только что стянул geoDefense, удалил подпись маркета — и не работает, гад.
Это скорее делается для платных приложений. Хотя на XDA много хакнутых платных игр :)
Реквестиру статью об общих методах защиты от такого воздействия.
Хранить зашифрованные сборки в СУБД, проверяя подписи везде и вся? :)
Нет, я имел ввиду практические приемы защиты, например, игр от накруток счета или т.п.
Only those users with full accounts are able to leave comments. Log in, please.