March 28, 2024, 12:33
bigger smaller reset     1020px Wide width Full width Reset   * *

Gildor's Forums

  Homepage Facebook Read news on Twitter Youtube channel Github page
Welcome, Guest. Please login or register.
Did you miss your activation email?

« previous next »
Print
Author Topic: ukx модели в л2  (Read 38776 times)
Gildor
Administrator
Hero Member
*****
Posts: 7978



View Profile WWW
« Reply #30 on: March 02, 2009, 18:49 »

Quote
Патчили в Hex-е, или DLL перекомпиллировали?
В Hex-редакторе.

Quote
Реально ли вообще заново перекомпиллировать dll?
Если есть исходники - вполне реально. Без исходников, естественно, ничего не сделать.
Logged
Alleras
Newbie
*
Posts: 31


View Profile
« Reply #31 on: March 02, 2009, 19:34 »

Уже не естественно :-)
у меня знакомый смог "пересобрать" DLL, с помощью программы HexRays.
Впрочем к UnrealEngine это пока не относится.
Не то, чтобы этот вопрос меня очень сильно интересовал (реальных задач пока нету),
но я всё жду - либо декомпилляторы появятся более мощные, либо ворованные исходники кто-нибудь выложит.
Logged
Gildor
Administrator
Hero Member
*****
Posts: 7978



View Profile WWW
« Reply #32 on: March 02, 2009, 19:40 »

Quote
у меня знакомый смог "пересобрать" DLL, с помощью программы HexRays.
HexRays - это плагин к IDA, который пытается из ассемблера сделать код на Си. Дизассемблировать достаточно маленькую программу и написать её аналог (это не то же самое, что "пересобрать") обычно не составляет большого труда.
В Unreal Engine 2 dll-ки довольно-таки крупные, дизассемблировать их полностью - не один год работы. Так что здесь без исходников новые dll-ки не получить.
Плюс, дополнительные трудности представляет дизассемблирование C++ классов с виртуальными методами. HexRays, я думаю, их автоматом не подхватит - куча ручной работы.
Logged
Alleras
Newbie
*
Posts: 31


View Profile
« Reply #33 on: March 02, 2009, 22:49 »

дизассемблировать их полностью - не один год работы.
Увы, "полностью дезассемблировать" их можно за 5 минут.
А вот декомпилировать полностью - действительно не один год работы :-)

Однако, насколько я понимаю ситуацию, DLL содержит кучу "экспортных функций", вызываемых независимо друг от друга.

А можно собрать DLL из частично из дезассемблированого, частично декомпилированного кода?
(насколько я понимаю, IDA может соберать из дизассемблированного кода экзешники, но DLL не умеет... по каким-то причинам).
Или переименовать DLL, и подменить другой, пересылающей часть функций в оригинал, и возвращающей их оттуда U-файлу?
Или заменить секцию в DLL, переправив выполнение экспортной функции в другой файл, и затем вернув обратно?

Пока что этот вопрос интересует меня лишь теоретически.
Я довольно плотно работал с Unrealscript, и знаю, что есть некоторые твики, для "обхода" нативных функций и классов. Можно "отключить" нативную функцию, можно её выполнить, но затем полностью изменть результаты её работы, можно, если извратиться, выполнить вместо нативной левую DLL.
Однако сами DLL изменить я не могу, и наличие неразрешимых задач меня раздражает.
Logged
Gildor
Administrator
Hero Member
*****
Posts: 7978



View Profile WWW
« Reply #34 on: March 03, 2009, 13:08 »

Quote
Увы, "полностью дезассемблировать" их можно за 5 минут.
А вот декомпилировать полностью - действительно не один год работы :-)
Ну, это вопрос терминологии Smiley Хотя ut3.exe, к примеру, обрабатывается на довольно-таки современной машине IDA в первый раз 1-2 часа, а не 5 минут Smiley

Конечно, можно экспортировать asm из IDA (даже не представляю, какие это будут объёмы ...) и ассемблировать его, получить практически оригинальный файл. Но - это до первых изменений. Как только начнут меняться размеры кода (вставили где-нибудь блочок) - начнутся падения. Из-за того, что где-то вместо "push offset variable" получился како-нибудь "push 802763h". И вото чтобы все эти места выловить и понадобится куча времени. Причём, придётся разобраться, как это всё работает.
В принципе, может я и ошибаюсь. И никогда не дизассемблировал для последующего переассемблирования. Я это делал (очень много раз, уже больше 10 лет практики Wink) только для того, чтобы чему-то научиться, посмотреть как что-то работает. Увы, в open-source программах можно увидеть мало чего полезного - вот и приходится лезть в бинарники. Хотя есть и исключения - например, VirtualDub - очень качественный продукт, написанный действительно профессионалом, красивый код ...
Logged
Cheiser
Jr. Member
**
Posts: 49



View Profile
« Reply #35 on: March 04, 2009, 16:12 »

Извините, я не сильно мешаю ?Smiley , я по своей проблемме, как загрузить в редактор карту раньше своей, тоесть получается я хочу открыть редактором ут 2004 карту от ут 2003, но у ут 2003 другой формат карт, как сделать чтобы загрузило именно этот, там вроде есть функция как это сделать !?
Logged
Gildor
Administrator
Hero Member
*****
Posts: 7978



View Profile WWW
« Reply #36 on: March 04, 2009, 16:20 »

Никакой подобной функции вроде нет. Но я почему-то думал, что должно загрузиться (2004й UT - это развитие 2003го). Может, просто каких-то ресурсов не хватает? Что выдаёт редактор при загрузке "старой" карты?
Кстати, как и наш "трёп" с Alleras, тема не-L2 Wink
Logged
Cheiser
Jr. Member
**
Posts: 49



View Profile
« Reply #37 on: March 04, 2009, 16:43 »

Ну это я просто привел пример на ут, на самом деле хочу это приравнить к л2, ко мне попал редактор XIII , там можно загрузить унр карты, версия 100, реедактор карту нее хочет загружть, я попробавал просто  лаунчере открыть, лаунчер сначала просил меня попереносить некоторые текстуры, а потом просто выписал ошибку типа - ран оф виртуал мемори ерор ...... незнаю .... может есть лаунчеры которые подойдут,  общем мне хотябы нужно как то просмотреть карту, может это как то решается в хексе функцией сравнения ?
Logged
Gildor
Administrator
Hero Member
*****
Posts: 7978



View Profile WWW
« Reply #38 on: March 04, 2009, 17:13 »

Это было всё-таки неправильное сравнение. Сравнивать UT2003 + UT2004 (они на одной версии движка, просто 2004й новее) и 2 совершенно разные игры.
Quote
может это как то решается в хексе функцией сравнения
Поверьте мне (а я всё-таки немного знаю этот движок  Wink) - hex-редактором в анриловских пакетах делать нечего.
Logged
Cheiser
Jr. Member
**
Posts: 49



View Profile
« Reply #39 on: March 04, 2009, 17:20 »

да ну, я человеку говорю, я могу укх делать постал 2 редактором, а ты чем ? А он говорит что Хексом, его научили ! Я сам незнаю что с этим делать и с чем его есть ! Но говорить отказывается, мол этим макаром можно сделать с пакетом любым из анреала все что угодно !
Logged
Gildor
Administrator
Hero Member
*****
Posts: 7978



View Profile WWW
« Reply #40 on: March 04, 2009, 17:28 »

Quote
да ну, я человеку говорю
Это что за человек? (я его знаю?)
Quote
можно сделать с пакетом любым из анреала все что угодно
Это как в анекдоте "я печатаю 1000 знаков в минуту, правда фигня получается" Wink
Logged
Alleras
Newbie
*
Posts: 31


View Profile
« Reply #41 on: March 06, 2009, 18:27 »

(а я всё-таки немного знаю этот движок  Wink) - hex-редактором в анриловских пакетах делать нечего.
Как раз есть чего: движок Unreal открывает пакет, считывая находящуюся в начале него таблицу имен. Именно на таблице имен редактор/игра и падают: когда находят в таблице ссылку на несуществующий пакет, или на свойства, которых нет в данном классе.

Hex-редактором можно подменять названия пакетов, названия переменных и свойства классов. (тем более что символ 00 при чтении игнорируется).

В определенных условиях, пакет одной версии можно открыть "чужим" редактором (или в "чужой" игре), нахимичив с таблицей имен, но геморроя столько, что лучше и не пытаться.
« Last Edit: March 06, 2009, 18:31 by Alleras » Logged
Gildor
Administrator
Hero Member
*****
Posts: 7978



View Profile WWW
« Reply #42 on: March 06, 2009, 18:38 »

Таблиц немного больше: есть ещё таблица импорта и таблица экспорта. И все друг на друга завязаны индексами. Плюс, формат самого объекта - таблица свойств + бинарные данные. Лезть туда бинарным редактором - очень повезёт, если ничего не поломается.
Так что, не так всё просто ...
Logged
Alleras
Newbie
*
Posts: 31


View Profile
« Reply #43 on: March 06, 2009, 18:51 »

Разумеется. поэтому я и не советовал этого делать.

Приведу простейший пример: открывать текстуры Unreal1 в UT2004 можно, но при этом они теряют детализацию, поскольку соответствующее свойство в U1 называлось DetailTexture, а в UT2004 - просто Detail.
Заменяем HEX-редактором DetailTexture на Detail0000000 - и вау - детализация появляется.

Точно так же может быть с какими нибудь сокетами в линейке - в постале название было одно, а в Lineage как нибудь по другому. Только искать эту разницу - геморрой несусветный. И без гарантии что получится.
Logged
Gildor
Administrator
Hero Member
*****
Posts: 7978



View Profile WWW
« Reply #44 on: March 06, 2009, 18:58 »

В Lineage сокеты есть, и достались они ему от UT2003 - то есть они абсолютно стандартные. И сделаны они не свойствами (как в вашем примере DetailTexture - это просто ссылка на другую текстуру), а бинарными данными.
Просто человек с сокетами не разобрался (а может уже и разобрался, просто молчит Wink)
Logged
Print 
« previous next »
Jump to:  

Powered by SMF | SMF © 2006-2009, Simple Machines LLC
Leviathan design by Bloc | XHTML | CSS