Многие знают о том, что без применения дополнительных средств защиты (обфускаторов) код скриптов проекта беззащитен. В этом легко убедиться, скачав reflector и открыв в нем файл Assembly – UnityScript.dll из папки Data Standalone сборки проекта. На первый взгляд, код сборки для web плеера защищен лучше: все файлы упакованы в один, формат файла неизвестен. Казалось бы, можно без опаски выкладывать web версии проектов, но в этом есть сомнения. Давайте проверим, можно ли получить код скриптов из web сборки проекта.

Создадим пустой проект с пустой сценой. Добавим в сцену GameObject со скриптом, в котором только function Update () {}.  Сделаем web build и откроем его в Opera. План действий такой: нужно найти в памяти браузера распакованные скрипты, сохранить эту область памяти на диск, обработать полученный файл так, чтобы он стал похож на .net dll, открыть ее в рефлекторе.

Для начала нам понадобится инструмент, которым можно покопаться в памяти браузера. Пусть это будет OllyDbg. Запускаем отладчик, подключаемся к процессу opera.exe:

File -> Attach

Select -> opera

Открываем память процесса:

View -> Memory

Ищем:

правой кнопкой -> Search

Искать будем строчку .UnityEngine.MonoBehaviour.

Внимание, в случае Streamed билда строчка встретится несколько раз. Сохраняйте все куски, позже разберетесь.

search - .UnityEngine.MonoBehaviour.

Нашли

found!

Сохраняем найденный фрагмент(ы) в файл(ы)

backup -> save data to file

На этом мы прощаемся с OllyDbg. Для последующих операций нам понадобится WinHex.

Откроем сохраненный файл и найдем нужный нам фрагмент

search -> find text... -> UnityEngine

found!

Теперь нам нужно найти начало dll файла, частью которого является найденный фрагмент.

Для этого будем искать строку This program cannot be run in DOS mode по направлению к началу файла.

find -> this program cannot be run...

Чуть выше этой строчки будет MZ начало файла. Нужно пометить M как начало блока.

правой кнопкой на MZ -> begin of block

Теперь  будем искать строку This program cannot be run in DOS mode по направлению к концу файла.

search - This program cannot...

Если конец файла достигнут и строка не найдена то нужно пометить его как конец блока. Если искомый фрагмент найден, то первый байт перед предстоящим ему MZ.

end of block

Теперь нужно сохранить получившийся блок в файл

copy block -> into new file

Закрываем WinHex, открываем reflector, подключаем к нему необходимые библиотеки

reflector

Открываем полученный файл в рефлекторе

reflector -> file -> open

И видим…

profit

.. свой код. Таким образом мы показали, что ни стандартную, ни web сборку нельзя считать защищенной от просмотра кода без применения дополнительных методов защиты.

VN:F [1.9.3_1094]
Rating: 8.8/10 (9 votes cast)
VN:F [1.9.3_1094]
Rating: +3 (from 3 votes)
Рефлексирование кода из web сборки, 8.8 out of 10 based on 9 ratings

7 комментариев на «Рефлексирование кода из web сборки»

  1. Sef

    А теперь в таком же духе – о применении дополнительных методов защиты! :)

    VN:F [1.9.3_1094]
    Rating: 5.0/5 (1 vote cast)
    VN:F [1.9.3_1094]
    Rating: 0 (from 0 votes)
  2. focus
    focus пишет:

    С защитой-то все ясно – обфускация как минимум.

    Интересно, как распаковать файл sharedassets*.assets, который собирается при паблише проекта, а затем (если паблишится web-сборка) склеивается с mainData, Assembly – UnityScript.dll и т.д. (в заголовке склеенного файла лежат названия файлов. которые в нем есть и их смещения), пакуется в lzma и потом кладется в .unity3d файл по смещению 38h =)

    VN:F [1.9.3_1094]
    Rating: 0.0/5 (0 votes cast)
    VN:F [1.9.3_1094]
    Rating: 0 (from 0 votes)
  3. DbIMok
    DbIMok пишет:

    теперь есть Unity 3D Obfuscator http://unity3d.netobf.com. он легко может распаковать .unity3d файлик или, если нужно, защитить код *.dll

    VN:F [1.9.3_1094]
    Rating: 0.0/5 (0 votes cast)
    VN:F [1.9.3_1094]
    Rating: 0 (from 0 votes)
  4. DbIMok
    DbIMok пишет:

    все оказалось гораздо хуже :)

    VN:F [1.9.3_1094]
    Rating: 0.0/5 (0 votes cast)
    VN:F [1.9.3_1094]
    Rating: 0 (from 0 votes)
  5. rdtnoob
    rdtnoob пишет:

    Кто можем помоч подобный файл открыть? Дохожу до конца, а там уже проблемы начинаются… буду ОЧЕНЬ благодраен

    VN:F [1.9.3_1094]
    Rating: 5.0/5 (1 vote cast)
    VN:F [1.9.3_1094]
    Rating: 0 (from 0 votes)
  6. Armando

    lewisohn@dora.progandist” rel=”nofollow”>.…

    спс….

    VA:F [1.9.3_1094]
    Rating: 0.0/5 (0 votes cast)
    VA:F [1.9.3_1094]
    Rating: 0 (from 0 votes)
  7. Martin

    helmet@chow.sinless” rel=”nofollow”>.…

    спасибо за инфу….

    VA:F [1.9.3_1094]
    Rating: 0.0/5 (0 votes cast)
    VA:F [1.9.3_1094]
    Rating: 0 (from 0 votes)

Ваш отзыв

Вы должны войти, чтобы оставлять комментарии.



Страница 1 of 0