Pull to refresh

Comments 37

UFO just landed and posted this here
Думаю, что они хотят избавиться от неуправляемого и дырявого WinAPI в сторону защищенного и огораживающего WinRT
UFO just landed and posted this here
UFO just landed and posted this here
Простите, а вы с автором братья? :) Мне сперва почудилось, что автор пишет под одним ником, а комментит под другим :).
Я бы не сказал что WinAPI такой дырявый — это те кто использует часто забывают об элементарных правилах по качеству кода, а если учесть что в VS2012 есть плагин для анализа качества кода — так вообще шикарно.
Если учесть что большая часть приложений идущий в комплекте с Windows — являются нативными :)
Пустят ли в Store с этим хаком?
Встречный вопрос — а кто в код будет смотреть?
Вообще-то МС проводит анализ кода, по крайней мере в Windows Phone Store точно.
Таблицу импорта посмотреть.
А если «вручную» пропарсить таблицу экспорта найденного модуля?
Собственно вот и оно: pastebin.com/58XL0vpq (не обратил внимание, что так уже и делается, спасибо elmm).
В импорте остается только GetTickCount64.
Все сборки проверяются на наличие вызовов WinAPI — если нашли — не пропускают.
Можно и самому с помощью Windows App Cert Kit проверить (ставится вместе с VS 2012)
Вообще то в WinRT приложениях можно вызвать WinAPI. Разрешена только малая часть, но её хватит чтобы реализовать данный хак.
Единственный момент — LoadLibrary использовать нельзя, вместо нее LoadLibraryPackage. А с GetProcAdress проблем нет.

Список разрешенных методов из WinAPI и COM
На сколько я понял, из WinAPI пример импортирует только одну функцию — GetTickCount64
Остальное он сам находит сам в памяти, в том числе и LoadLibrary.
Так что, если GetTickCount64 импортировать и использовать можно, то такое приложение не должно вызвать подозрений.
Кто и что находит?
Если про функцию — то проблем нету, ищется заголовок MZ (привет MS-DOS для ARM) + PE — а там по смещению адрес функции.
Я про библиотечные функции. PeGetProcAddress.
С ней уже разобрался, выше написали.
Думаю тут можно было-бы и обойтись — т.к. ЛЮБОЕ .NET приложение экспортирует mscorlib.dll (там правда нету импорта) и mscoree.dll (а вот там он уже есть) а там уже в его таблице импорта можно найти ссылку на KERNEL32.DLL (тьфу KRNLBASE.DLL по сути) и найти нужную точку входа и ссылку на WinAPI.
Кстати тогда в PE Import Section не будет подозрительного экспорта т.к. компилятор при упаковке импорта сольет все в одну запись. А как известно — использование mscoree.dll разрешено например для рефлекции и интроспеции.
За любые импорты из винапи рубят, даже за GetTickCount64?
и на этих девайсах приживется мода с альтернативными маркетами.
Фраза по оригинальной ссылке намекает, что не пустят:

Obviously there are lots of ways to overcome this limit and to call any API you like, if you are not going to publish your app on Windows Store.
технически Да, т.к. приложение может загружать обновления через сеть (точнее плагины) — и в одном из плагинов будет такой «подарочек», однако если этот факт вскроют — то есть риск получить бан на Маркете.
Не пустят, пробовал использовать в приложении, «пришлось» отказаться.

FAILED
Supported APIs
Error Found: The supported APIs test detected the following errors:
API CredWriteW in advapi32.dll is not supported for this application type.

Impact if not fixed: Using an API that is not part of the Windows SDK for Windows Store apps violates the Windows Store certification requirements.
А на скрине — Юнити из новой Убунты? Выглядит словно Юнити создали в 98-м году.
на скрине WinRT ))

Это мое личное отношение, но мне дизайн Desktop-режима в Win8 и WinRT не радует прям совсем. У нас еще на терминальном сервере Win2012 стоит — я эти приплюснутые окошки насмотрелся, но сама система вроде не плохо работает.
Что сказать — отлично, таким темпами с минимальными правками уже можно ждать VLC, Mozilla Firefox и другие хорошие программы.
P.S. наверное таки придется прикупить себе такой планшет для тестов.
Надо ещё до Native API (ntdll.dll) там добраться.
а в чем собственно проблема? как только будет декомпилятор ARM кода — то и до zw* (wrapped) функции недалеко.
Только с .netusergoup — если верить Байдачному — такой код не пропустят. Приложения в среднем проходят аттестацию около недели, начиная с программного анализа, и заканчивая проверкой человеком, если дословно «индус какой-нить».
Такой код ещё попробуй найди.
В импортах же ни чего военного не будет светится.
Вряд ли они как-то ещё проверяют, кроме как по импортам.
А насчёт индуса — отключить вот такой скрытый функционал на момент тестирования (а время можно на своём сервере проверять, чтоб простым переводом часов не вскрылось).
Вобщем при желании что-то намутить можно.
Не думаю, что кафтанчик по размеру Майкрософту. Я про то, что вряд ли запреты всего и вся как это сделано в яблочных мобильных ОС пойдут на пользу. Определенная свобода была основной «фишкой», позволявшей майкрософту держать долю рынка, будут запреты — многие уйдут с платформы, благо есть куда…
Время покажет, но я особого оптимизма не испытываю.
Интересный способ. Но, видимо, вызов api разработчики не особо то и прятали, потому как для пк это обыденные алгоритмы.
Sign up to leave a comment.

Articles