27.11.2014 Views

НЕСЛУЧАЙНО CUDA ИДЕМ? phpMyAdmin - Xakep Online

НЕСЛУЧАЙНО CUDA ИДЕМ? phpMyAdmin - Xakep Online

НЕСЛУЧАЙНО CUDA ИДЕМ? phpMyAdmin - Xakep Online

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

взлом<br />

№ 6<br />

ЗАДАЧА: СОЗДАТЬ ПОРТАТИВНУЮ<br />

ВЕРСИЮ .NET-ПРИЛОЖЕНИЯ С<br />

ИСПОЛЬЗОВАНИЕМ THINAPP<br />

РЕШЕНИЕ:<br />

Мне приходится пользоваться различными .NET-сборками, в том числе и совсем<br />

безобидными. Да и сам я, разрабатывая десктопные приложения, зачастую программирую<br />

на C#. Как удобно закинуть все это добро на флеху и пользоваться везде, где только<br />

можно! Проблема в том, что фреймворк по умолчанию в WinXP не включается и велика<br />

вероятность, что запуск проги будет связан с необходимостью установки самой среды.<br />

Тем не менее, создать портативное приложение можно, например, с использованием<br />

виртуального контейнера ThinAPP.<br />

1. Скачиваем .NET Framework 3.5 по адресу http://download.microsoft.com/<br />

download/2/0/e/20e90413-712f-438c-988e-fdaa79a8ac3d/dotnetfx35.exe. Я<br />

тебе советую скачать весь пакет — еще пригодится :)<br />

2. Скачиваем любую среду виртуализации, например VMWare Workstation.<br />

3. Устанавливаем виртуальную ось. Нужна максимально чистая Windows XP (всякие<br />

Zver DVD не рулят)!<br />

4. ОТКАЗЫВАЕМСЯ от установки VMWare Tools. Поверь мне, так надо, хотя в официальной<br />

документации про это ничего нет.<br />

5. Каким-то образом получаем и инсталлируем ThinAPP — тулза стоит от 6000 вечнозеленых<br />

рублей, так что разбирайся сам :)<br />

6. Делаем снапшот системы под названием ThinAPP Ready.<br />

7. Запускаем ThinAPP Setup Capture, следуем инструкциям мастера.<br />

8. Устанавливаем .NET framework.<br />

9. Настраиваем опции сборки контейнера ThinAPP. Обязательно включи в состав точек<br />

входа cmd.exe. В качестве Sandbox Location выбирай USB Flash.<br />

10. Собираем контейнер. Сохраняем его в укромном месте. И я бы посоветовал еще раз<br />

снять снапшот.<br />

11. Запускаем ThinAPP Setup Capture и устанавливаем/копируем нужное нам приложение.<br />

Если копируешь, лучше это делать в папку %programfiles%, она будет видна из<br />

контейнера по переменной окружения и, соответственно, через консоль ты получишь<br />

доступ к файлам в обход интерфейса приложения.<br />

12. Настраиваем параметры сборки контейнера и, не запуская build, нажимаем на<br />

кнопку Browse Project.<br />

13. Выбираем для редактирования файл package.ini. Устанавливаем в нем параметр<br />

RequiredAppLinks=..\dotnetfx35\dotnetfx35, где ..\dotnetfx35 — путь до контейнера, содержащего<br />

.NET, а dotnetfx35 — собственно, имя самого файла контейнера.<br />

14. Строим контейнер.<br />

15. Перед запуском приложения удостоверься, что контейнер с .NET-средой доступен<br />

по указанному в настройках пути.<br />

Если тебе неохота засовывать само приложение в отдельный контейнер, можно этого и<br />

не делать. Надеюсь, ты включил в качестве точки входа в контейнер .NET cmd.exe (если<br />

нет — кури пункт 9). Запусти cmd.exe из папки с контейнером и уже из консоли вызови<br />

.NET-приложение. Могу тебя уверить — среду оно увидит и запустится нормально!<br />

Добавляем ссылку на контейнер .NET.bmp<br />

№ 7<br />

ЗАДАЧА: СОЗДАТЬ ПОРТАТИВНУЮ<br />

ВЕРСИЮ .NET-ПРИЛОЖЕНИЯ С ИС-<br />

ПОЛЬЗОВАНИЕМ XENOCODE<br />

РЕШЕНИЕ:<br />

Конечно, можно сделать все с помощью ThinApp: создать контейнер со<br />

средой .NET и натравить на него каким-либо образом тулзу на дотнете.<br />

Но... контейнер это150 метров. А что, если тулза при этом весит каких-нибудь<br />

пару мегабайт? Что, тащить за ней весь контейнер со средой? Конечно,<br />

нет! И если вмварез не справляется с задачей, то на помощь приходит<br />

Xenocode Postbuild! Он проанализирует код (точнее, секцию using) и сам<br />

определит, какие длл’ки из среды .NET нужно класть в контейнер с твоей<br />

тулзой. Вдобавок он умеет обфусцировать код несколькими методами<br />

(есть даже специально против ILDASM). И все это управляется из интерфейса<br />

ribbon (а-ля office 2007). Моя тулза весом 2 метра превратилась в<br />

экзешник 25 мегабайт (я использую Xenocode Postbuild v7.0.162).<br />

1. Идем на вкладку application, добавляем в список свою тулзу.<br />

2. Идем на вкладку output, ставим галку compile application to native x86<br />

executable image.<br />

3. Выбираем single application executable и в комбобоксе выбираем экзешник,<br />

к которому xenocode добавит среду .NET. Тут же есть галка Generate<br />

diagnostic-mode executable. Если впоследствии тулза будет сыпаться с<br />

ошибками, можно попробовать скомпилить с этой галкой. Тогда в папку с<br />

приложением будет падать лог с подробным описанием того, что происходит.<br />

4. Идем на вкладку Virtualize. В Runtimes можно выбрать версию среды,<br />

добавляемую в экзешник. Имей в виду, что среду xenocode подгружает из<br />

интернета со своего сайта, даже если она уже установлена в системе.<br />

5. В Filesystem можно добавить все, что должно быть в виртуальной<br />

файловой системе приложения. Например, моя тулза не может жить без<br />

длл’лек пакета DevExpress, который разрабатывает сторонняя контора<br />

и которые не входят в состав среды .NET. Поэтому в папку Application<br />

Directory я добавил длл’ки из этого пакета.<br />

Если не требуется обфускация (это тема для отдельного разговора), то на<br />

этом все. Можно жать Xenocode Application, и через несколько десятков<br />

секунд в твоем распоряжении — портативная версия приложения, не<br />

требующая среды .NET!<br />

Теперь о неприятном, то есть о минусах. К сожалению, точка входа может<br />

быть только одна. Если твое приложение состоит из нескольких исполняемых<br />

файлов, то решений тут может быть три.<br />

• Ксенокодить каждый exe по очереди. Тогда к каждому исполняемому<br />

файлу будет добавляться среда .NET.<br />

• Сделать точкой входа cmd.exe. Туда добавится часть среды .NET, необходимая<br />

для работы твоих приложений (не забудь только их тоже добавить<br />

в список на шаге 1). Но тогда каждый раз придется открывать заксенокоденную<br />

cmd.exe и уже оттуда запускать приложения, чтобы они увидели<br />

среду .NET.<br />

• Использовать thinapp. Если у тебя много дотнетовского кода, который<br />

нужно сделать портативным, сделай один контейнер со средой<br />

.NET, который будут использовать все приложения.<br />

Что использовать в каждом<br />

конкретном случае, решать,<br />

конечно же, тебе. Но я бы<br />

советовал: если есть пара<br />

приложений, которые неплохо<br />

бы сделать портативными,<br />

используй ксенокод. Если же<br />

тебе нужна вся среда .NET<br />

на флешке, — ThinApp тебе в<br />

Собираем сборку в unmanaged коде помощь. z<br />

XÀÊÅÐ 07 /127/ 09 047

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!