Подрубаем эмулятор PocketPC к eVC и ActiveSync — Архив WASM.RU

Все статьи

Подрубаем эмулятор PocketPC к eVC и ActiveSync — Архив WASM.RU

«Любая девочка с персиками когда-то
превратится в бабушку с курагой»

Далее речь пойдет о том, как не имея на руках физического девайса можно благополучно отлаживать/запускать свою/чужую прогу, используя eVC и эмулятор из PPC SDK 2003. Я долго парился (насколько мне известно - не я один) с этой задачей и, наконец, совершенно случайно все заработало. Очень помогла статья CJCraft's Blog – фактически в ней все правильно изложено, однако опущены некоторые ключевые моменты, которые и удалось вычислить bruteforce-ом. Для чего вообще нужен эмулятор? Если есть реальный девайс – то он и не нужен. Не знаю как на COM-порте, но чисто визуально скорость отладки/запуска через USB на реальном устр-ве и на эмуляторе мало чем отличается (хотя по заверениям MS это не так). Поэтому, если вы только планируете заняться написательством прог под WinCE, а девайса по пресловутым причинам нету, то эмулятор конечно является единственным вашим спасением. Итак, приступим.

Для начала полный перечень прог, которые понадобятся для сопряжения среды разработки eVC с эмулятором. Всех их можно «спокойно» слить с микрософтского сайта (www.microsoft.com J). Здесь представлены те версии, с которыми у меня все 100% работает, поэтому желательно заиметь именно эти версии, т.к. были затыки (см. дальше) именно на этой почве. По умолчанию предполагается, что действо происходит в XP+SP1.

Must have:

1. MS eMbedded Visual C++ 4.0 vs SP3

2. PocketPC 2003 SDK (Nov. 2003)

Необязательными, но для связи с ActiveSync необходимыми являются следующие вещицы:

1. MS ActiveSync 3.7.1

2. Microsoft .NET Framework 1.1 SDK (Nov. 2003)

Все остальные необходимые проги (например, Platform Manager, необходимые для работы вышеперечисленных и идут с ними в комплекте, без них они попросту не станут, поэтому разберетесь). Итак, перво-наперво ставим eVC 4.0. Сразу предупреждаю: eVC со вторым сервиспаком глючит по черному – виснет при открытии любого проекта, страдает эпилептическими припадками и обмороками, до эмулятора дело с ним вообще никогда не дойдет, поэтому ОБЯЗАТЕЛЬНО ставьте третий сервиспак и не морочьте голову. Сразу вслед за eVC ставим PocketPC 2003 SDK. В моей версии SDK сразу были встроены три эмулятора – два телефонных и один КПК-шный. Если вам попадется какая-то обрезанная версия, то отдельно образ нужного эмулятора можно слить с пресловутого сайта.

Теперь переходим к настройкам. Существует множество (где-то в районе пяти) способов работы eVC с эмулятором, включая даже такие уникальные, как закороченные COM-порты, но мы не будем извращаться и выберем самый быстрый и единственный прямой путь – через тернии TCP/IP.

Настройка сети.

По идее работа с TCP/IP предполагает наличие физической Ethernet-среды (т.е. наличие сетевой карты), однако в MS придумали такой хитрый способ, как Loopback Adapter (или, как его окрестили наши умельцы – «Адаптер Microsoft замыкания на себя»). Этот самый адаптер эмулирует наличие сетевой карты. Итак, если у вас нет сетевой карты, то вы обязательно должны установить этот самый адаптер (Настройка – Установка оборудования – Сетевые платы – Microsoft – Адаптер Microsoft замыкания на себя). Далее лезем в Пуск – Настройка – Сетевые подключения – Мастер установки сети. Я не буду пошагово описывать весь процесс, но в конце всех манипуляций в сетевых подключениях у вас должно появится «Подключение по локальной сети». Нажимаем на нем правой кнопкой, выбираем свойства. Внимательно смотрим на список протоколов – отмечаем птичкой Virtual PC Emulated Ethernet Switch (остальные отмечены по умолчанию). Все, больше ничего не трогаем, закрываем окно. Теперь довольно опасный шаг – необходимо отключить всю файрвольную систему защиты на вашей машине (позже можете разрешить необходимый порт), т.е. убрать подальше все ZoneAlarm-ы и т.п. На всякий случай нужно также убрать все имеющиеся беспроводные соединения.

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

Сводим эмулятор с eVC

Здесь важно выполнить все по порядку не упуская ни одного шага:

1. Закрываем все что открыто (включая eVC). Запускаем eVC.

2. Заходим в Tools – Configure Platform Manager.

3. Выделяем Pocket PC 2003 -> Pocket PC 2003 Emulator и жмем Properties.

4. В качестве транспорта (Transport) выбираем «TCP/IP Transport for Windows CE».

5. Жмем Configure справа от транспорта и обязательно ставим птичку на Use Fixed Address (при использовании loopback адаптера оно должно выдать что-то типа 169.254.XX.XXX).

Больше ничего здесь не трогаем.

6. В качестве сервера (Startup Server) выбираем «Emulator Starup Server».

7. Жмем Configure справа от сервера, в Communication-Ethernet выбираем «Virtual Switch». В качестве Image выбираем Pocket PC 2003 для КПК или два других для смартфонов. Значения всех Serial и Parallel портов установите в none.

8. Закрываем окно и жмем Test. Видим красивый скин КПК. Ждем (долго). Если все ОК – вы должны услышать фанфары. (Несчастный писк при загрузке CE в эмуляторе – это еще не фанфары, он всегда будет).

Все. Теперь можно запускать/отлаживать проги из среды eVC. Если же фанфар не было то дальше можете не читать.

Сводим эмулятор с ActiveSync

Здесь все еще проще. Ставим ActiveSync (на всякий случай уточню - не ниже той версии, что указана выше) и запускаем его. Заходим в File -> Connection Settings. Ставим галочку на Allow Network (Ethernet)… Теперь как бы девятым шагом (см. 8 предыдущих выше, т.е. эмулятор уже запущен) проделываем следующее: нажимаем Пуск -> Программы -> Microsoft Pocket PC 2003 SDK -> Pocket PC 2003 SDK, вываливаемся в командное окно. Набираем: EmuASCfg.exe /PPC. Обламываемся J. Вот тут то нам и нужен Microsoft .NET Framework 1.1 SDK (Compact Framework не проканает). Ставим. Опять пробуем: EmuASCfg.exe /PPC. Ждем. После …complete можно закрывать окно. Теперь впервые переходим шарудить в эмулятор. Заходим в Start -> ActiveSync и жмем Sync. Дальше ActiveSync обнаружит новый КПК и все пойдет по стандартному сценарию – создаете Partnership и можете инсталлировать/копировать/удалять/синхронизировать файлы через ActiveSync, вообщем работаете с эмулятором как с обычным КПК.

Запускать и отлаживать проги на эмуляторе вы сами разберетесь как – там не будет никаких проблем, т.е. если были фанфары на восьмом шаге, то можете расслабиться.

Наконец-то все. Надеюсь, ничего не упущено (именно малейшее упущение может испортить всю картину). Если у кого не получится – прошу в комментарии, будем вместе искать и добивать.

P.S. Вообще-то эмулятор по идее был бы очень полезен в реверсе/взломе чужих прог (по уже изложенной выше причине тормознутости на реальных устройствах или за неимением оных). Но дело в том, что в PPС-шном эмуляторе из SDK 2003 стоит x86 проц Intel Pentium II (надеюсь, в следующих версиях они как-то очень напрягутся и сделают полную эмуляцию хотя бы ARM-а, представляю насколько это сложная задача, однако, вполне осуществимая). Т.е. даже если удастся найти версию нужной проги под x86 (что также весьма сомнительно) и подправить все необходимым образом – мы практически ничего не добьемся. Версия проги под ARM или MIPS будет выглядеть совершенно по- другому и нам придется проделывать всю работу заново.

Кстати, тут сам собой всплывает интересный вывод – эмулятор годится только для создания кейгенов J, и то слава Богу.

P.P.S. Особую благодарность хочется выразить человеку, без которого не было бы ни этой, ни предыдущей статьи из цикла о WinCE – А. Ж. (andzul@ukr.net). Именно он, не пожалевши своего драгоценного времени любезнейшим образом слил весь этот безобразный софт с мелкософта. Спасибо ему, все зачтется!

2002-2013 (c) wasm.ru