eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 10 декабря!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме:
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Программирование —› [Unity WebPlayer] Загрузить dll с диска.
Посл.ответ Сообщение

Ранг: 92.3 (постоянный)
Статус: Участник

Создано: 21 ноября 2014 00:02 New!
Цитата · Личное сообщение · #1

Здравия. У меня мозги закипают.

Задачка такова, перенаправить загружаемую с инета дллку на локальную.

Конечный код такой -> http://privatepaste.com/d298b23780 (берегите глаза)

Не работает. В отладчике всё окей, всё загружается, всё return MONO_IMAGE_OK. Потом где то в недрах возникает ошибка чтения. Отследить как ошибка вылетает я не смог.

Может кто то встречался с такой задачей, можете подсказать в чём проблема?


Ранг: 110.0 (ветеран)
Статус: Участник

Создано: 21 ноября 2014 00:55 New!
Цитата · Личное сообщение · #2

что значит "перенаправить загружаемую с инета дллку на локальную" ??

vovanre пишет:
Конечный код такой -> http://privatepaste.com/d298b23780 (берегите глаза)


Рипнутый код не говорит ниочем.

Ранг: 92.3 (постоянный)
Статус: Участник

Создано: 21 ноября 2014 09:33 New!
Цитата · Личное сообщение · #3

Rainbow пишет:
что значит "перенаправить загружаемую с инета дллку на локальную" ??

Юнити грузит с сервера дллку (Assembly-CSharp.dll), далее грузит её в Mono через mono_image_open_from_data_with_name, ну а потом уже игра запускается.

Моя задача, что бы Юнити загрузило мою Assembly-CSharp.dll вместо того, что бы её грузить её с сервера.


Полный код -> http://privatepaste.com/ec38f0dc93


Ранг: 316.4 (мудрец)
Статус: Участник
born to be evil

Создано: 21 ноября 2014 10:06 · Поправил: ajax New!
Цитата · Личное сообщение · #4

vovanre
это принципиально не дать ей грузить что-то с сервера? просто хукнуть LoadLibrary какой-нибудь, через что она работает, и подменить имя либы. сомнительно, что в юнити организована загрузка либ собственным методом, типа из памяти

добавлено: тады ждать, пока кто-то из .net-гуру глянет топик

Ранг: 92.3 (постоянный)
Статус: Участник

Создано: 21 ноября 2014 10:44 · Поправил: vovanre New!
Цитата · Личное сообщение · #5

ajax пишет:
просто хукнуть LoadLibrary какой-нибудь, через что она работает, и подменить имя либы. сомнительно, что в юнити организована загрузка либ собственным методом, типа из памяти

Поверьте, они грузят с памяти, я это уже хорошо изучил. Тут пару моментов:


1) Это .Net либа.
1.1) Так как это .net, алго загрузки совершённо другой.
2) Я и хукнул, но моно не кушает по неизвестной мне причине.

(я уже подумываю найти сурсы этой версии моно и перекомпилить, но так и не нашёл какую версию юзает юнити.)


Ранг: 747.9 (! !)
Статус: Участник
bytecode!

Создано: 21 ноября 2014 13:00 · Поправил: 4kusNick New!
Цитата · Личное сообщение · #6

vovanre
Unity использует свою, модифицированную версию Mono. Причём база у неё довольно старая.

Assembly-CSharp.dll содержится в webplayer сборке (.unity3d файл). Эти сборки можно редактировать, в том числе, можно заменить там этот файл и подсунуть браузеру уже пропатченную сборку.
Если такой workflow не подходит, то можно попробовать патчить или полностью подменять dll в памяти, но это уже посложнее.

Ранг: 92.3 (постоянный)
Статус: Участник

Создано: 21 ноября 2014 15:08 New!
Цитата · Личное сообщение · #7

4kusNick пишет:
Если такой workflow не подходит, то можно попробовать патчить или полностью подменять dll в памяти, но это уже посложнее.

Стоп. Вот это решит массу моих проблем.
Можно редактировать отдельные участки кода (это я умею через сигны) или полностью перезагружать dll ?


Ранг: 110.0 (ветеран)
Статус: Участник

Создано: 21 ноября 2014 15:12 · Поправил: Rainbow New!
Цитата · Личное сообщение · #8

vovanre пишет:
Поверьте, они грузят с памяти, я это уже хорошо изучил.


По логике вещей, если софт грузит либу из памяти - его код должен содержать функцию VirtualLoadLibrary. Собсно, если ты уже изучил этот код, то по идее знать должен где она находится. Можно попробовать ее направить на обычный LoadLibrary, как посоветовал AJAX. .NET сборки просто используют свой формат, который в свою очередь содержит точку входа в MSIL, если я правильно понимаю. Какая по сути разница, будет у нее 2 OEP (PE OEP + MSIL OEP) или одно (PE)? Думаю должно сработать.

Ранг: 105.6 (ветеран)
Статус: Участник

Создано: 21 ноября 2014 15:25 New!
Цитата · Личное сообщение · #9

vovanre Что-то я никак понять не могу чего ты хочешь добиться. В Assembly-CSharp.dll находится основной код веб-приложения. Эта dll находится внутри unity3d-файла. Нафига нужно городить огород, если можно просто заменить эту либу внутри unity3d-файла. После чего именно она будет грузиться.


Ранг: 747.9 (! !)
Статус: Участник
bytecode!

Создано: 21 ноября 2014 21:12 New!
Цитата · Личное сообщение · #10

vovanre пишет:
Можно редактировать отдельные участки кода (это я умею через сигны) или полностью перезагружать dll ?

Отдельные участки точно можно - в сети видел примеры инжекта своего кода в mono сборку, уже подгруженную в память ну и всякие AoB патчи для Cheat Engine по тому же принципу работают.

На счёт полной подмены Assembly-CSharp.dll - такого я не видел, и не уверен что это вообще реально, наверное тут я загнул =) Всё-таки это основная либа, а не второстепенная, потому эффективно подменять её надо в момент подгрузки, что вы собственно и пытаетесь сделать.

Но я до сих пор не понимаю ваших целей, возможно такой огород там не к чему и как мы с JohnyDoe уже писали, вероятно будет проще просто подменить dll в самой сборке, автоматизировав этот процесс для массового потребителя при необходимости.

Ранг: 92.3 (постоянный)
Статус: Участник

Создано: 21 ноября 2014 21:20 New!
Цитата · Личное сообщение · #11

4kusNick пишет:
вероятно будет проще просто подменить dll

Я наверно очень туплю. Но как подменить либу в сборке, если эта сборка каждый раз с нета грузитья?

Добавлено спустя -59 минут
4kusNick пишет:
в сети видел примеры инжекта своего кода в mono сборку

Увы это не прокатит.


Ранг: 747.9 (! !)
Статус: Участник
bytecode!

Создано: 21 ноября 2014 23:11 New!
Цитата · Личное сообщение · #12

vovanre пишет:
Я наверно очень туплю. Но как подменить либу в сборке, если эта сборка каждый раз с нета грузитья?

Так пропатченную сборку можно легко подсовывать вместо оригинальной. Либо руками в кэше заменять, либо через какой-нибудь Charles (там есть такая фича - map local - может подсовывать локальный файл вместо оригинального).

Ранг: 92.3 (постоянный)
Статус: Участник

Создано: 22 ноября 2014 00:23 New!
Цитата · Личное сообщение · #13

4kusNick пишет:
Либо руками в кэше заменять

Если ты говоришь об этом кеше \Unity\WebPlayer\mono то там чисто.
4kusNick пишет:
Charles

В первую очередь побывал, Charles не видит передачи файла.


Ранг: 747.9 (! !)
Статус: Участник
bytecode!

Создано: 22 ноября 2014 05:10 New!
Цитата · Личное сообщение · #14

vovanre пишет:
Если ты говоришь об этом кеше \Unity\WebPlayer\mono то там чисто.

Не, я про кэш браузера.

vovanre пишет:
В первую очередь побывал, Charles не видит передачи файла.

Попробуйте обновить его до последней версии и использовать в связке с последней версией Firefox.
Я только что проверил - все вроде работает, как и раньше. Проверял на этой демке: http://unitysunshine.com/demo

Вот сборка отловилась: http://i.imgur.com/7jy45aS.png

Ранг: 92.3 (постоянный)
Статус: Участник

Создано: 22 ноября 2014 13:49 New!
Цитата · Личное сообщение · #15

4kusNick пишет:
Я только что проверил - все вроде работает,

Странно, на хроме не ловило, а лисе ловит.

Случаем альтернатив нет ибо автоматизировать будет муторно?


Ранг: 747.9 (! !)
Статус: Участник
bytecode!

Создано: 22 ноября 2014 14:24 New!
Цитата · Личное сообщение · #16

Мне пока таких средств хватало, не было необходимости весь процесс автоматизировать
Но, как вариант, если есть хорошие познания в нативе, то наверное можно сам WebPlayer хукать, чтобы он палёную .unity3d сборку грузил вместо оригинала. Я точно не знаю как он сборку подгружает, так что возможно это не сработает, просто идея.

Ранг: 92.3 (постоянный)
Статус: Участник

Создано: 25 ноября 2014 23:07 New!
Цитата · Личное сообщение · #17

Наконец появилось время нормально заняться этим.

Нашёл функцию в webplayer_win которая за загрузку отвечает и восстановил прототип (кому надо скину в лс).

Но я не могу нормально продебажить свой код, что то паранормальное.
Смотрим -> Вот прыжок на мой хук ->


Адрес прыжка -> 74494920 -> Нажимаем F8 ->


Может я чего то не понимаю?


Ранг: 1967.0 (!!!!)
Статус: Модератор
retired

Создано: 26 ноября 2014 10:37 New!
Цитата · Личное сообщение · #18

Бряк у тебя стоит посреди инструкции, а олька в дизасме их в байтах не показывает, убери.

| Сообщение посчитали полезным: vovanre



Ранг: 646.0 (!)
Статус: Участник
ALIEN Hack Team

Создано: 26 ноября 2014 12:48 New!
Цитата · Личное сообщение · #19

А какой charles есть последний покряканый?


Ранг: 747.9 (! !)
Статус: Участник
bytecode!

Создано: 26 ноября 2014 14:19 New!
Цитата · Личное сообщение · #20

ARCHANGEL
На руборде в последнем сообщении рабочая пара лежит, её пока вроде не забанили в последних версиях.

Ранг: 33.3 (посетитель)
Статус: Участник

Создано: 26 ноября 2014 14:31 New!
Цитата · Личное сообщение · #21

4kusNick
4kusNick пишет:
не забанили в последних версиях


банан не сложно патчится
 eXeL@B —› Программирование —› [Unity WebPlayer] Загрузить dll с диска.

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS