Перейти к контенту

Редактирование движка X-Ray


Rolan

Рекомендуемые сообщения

Ооо, почитал я тему, да.

Так вот, народ, вы смешны.

Вам аж двое спецов обьясняют разные вещи, и какова реакция?

Половина - незнающие, выдает совершенно бредовые фразы, другие спорят.

 

Не выйдет с этим ничего. Для работы с бинарными файлами и IDA нужны не только соответствующие знания (которые весьма и весьма обьемны) но и огромный опыт, время и черт знает еще что.

Даже я, имеющи неплохой опыт в низкоуровневом программировании, знаю современный x86 ассемблер, я пытался разобрать с помощью IDA _свою собственную_ dll, написанную на чистом си - а это значит, что в принципе она оттранслировалась почти дословно, даже в таких условиях я смог найти, разобрать, понять только несколько простейших функций. А уж изменять я и лезть не стал... Потому уж я точно знаю, чтобы реально что-то сделать с дизассемблером - нужен очень большой опыт. И терпение, кстати, тоже, неслабое.

А тут многомегабайтный файл на С++, что означает шаблоны, виртуальные функции, бог знает что еще.

Добавлю еще, что разные компиляторы генерируют разный бинарный код.

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

В общем, гиблое дело, оставьте это профессионалам.

 

Добавлено через 23 мин.:

Я даже больше скажу: проще свой движок написать, чем что-то действительно кардинально поменять в уже существующем.

Изменено пользователем Monnoroch

Поделиться этим сообщением


Ссылка на сообщение

SkyLoader, Можешь повторить вопрос несколько более развернуто? Честно говоря, не понял в чем он состоит.

 

DIMA-RED, Повесить скрипт, отлавливающий прицеливание и наносящий хит перед актором. Анимацию приделать врятле можно.

 

SkyLoader, с какими методами? кто сделал? какие схемы? что такое циклы я понимаю, но при чем тут они?

вызов функции идет там, где call (=

 

при чем тут акшн мэнэджер?

Ну и вообще, поподробней, что тебе надо извлечь из этого кода?

Ах, да, и больше всего меня озадачило при чем тут функции, которые находятся рядом.

 

ага, я нашел "motivation_action_manager".

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

 

я не знаю luabund, поэтому ничего утверждать не могу, но по-моему в класс добавляется некий метод (это все судя по названиям функций luabind, с которым сам я поработать не могу по техническим причинам)

 

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

 

Вопрос к администрации, почему через некоторое время пропадает кнопка "изменить?"

А если мне мысль умная пришла в голову, или я ошибку нашел, или опечатку хочу исправить?

Раньше не пропадала. Не понимаю мотивации таково нововведения.

 

Пост можно редактировать в течение 15 минут. А вообще, для таких вопросов есть Административный раздел.

 

Добавлено через 219 мин.:

Cyclone, да, это я уже посчитал, но мотивация ограничения так и не ясна.

 

Вот и баг: я снова могу редактировать пост (=

Изменено пользователем Monnoroch

Поделиться этим сообщением


Ссылка на сообщение

SkyLoader, Я все еще ничего не понимаю. Теперь ты говоришь, что тебя интересует другая проблема, нежели ты описал выше.

Напиши подробно что тебе надо от движка?

 

И функция никуда не идет. Функции ходить не умеют, инфа 100%.

Изменено пользователем Monnoroch

Поделиться этим сообщением


Ссылка на сообщение

SkyLoader, а мне откуда знать по какому она адресу? О_о

с чего, опять же ты взял, что существует некое действие "bind_object"?

и в чем, по твоему оно выражается?

Изменено пользователем Monnoroch

Поделиться этим сообщением


Ссылка на сообщение

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

просто из приведенного кода явно видно, что вызывается метод

luabind::detail::class_base::add_method(char const *,luabind::detail::overload_rep const &) с первым аргументом "motivation_action_manager"

push    offset amоtivation_act;
"motivation_action_manager"
call    ds:?add_method@class_base@detail@luabind@@QAEXPBDABUoverload_rep@23@@Z;
luabind::detail::class_base::add_method(char const *,luabind::detail::overload_rep const &)

 

вот, собственно и все, что на первый взгляд видно.

возникает ощущение, что в класс "motivation_action_manager" добавляется некоторый метод.

Тут важно, что имеется ввиду класс LUA. То есть конечно в с++ класс что-то добавить это нонсенс.

какой - а черт его знает. я даже не знаю что такое luabind::detail::overload_rep.

 

далее, чуть выше есть код:

lea     edx, [esp+58h+var_38]
push    edx

что наводит на мысль о связи var_38 и той самой добавляемой функцией типа luabind::detail::overload_rep (это вообще функция ли?), которая походу в коде представляла собой указатель, поскольку по-видимому выделена на стеке, ибо [esp+58h+var_38].

И собственно постоение которой, походу и есть в коде выше.

 

собственно, вот и все, что можно сказать (=

Ну, вернее, я больше ничего там разобрать не могу.

Изменено пользователем Monnoroch

Поделиться этим сообщением


Ссылка на сообщение
SkyLoader, Ага, нашел-то нашел, только обьяснить никому не смог :D

Поделиться этим сообщением


Ссылка на сообщение
Если 0 заменить на 1, то в сп биндер отключается, однако если следующую строчку с jnz убрать вообще, то ничего не изменится.

 

логично. у тебя зеро флаг был 1, выполняется cmp - становится 0.jnz не выполняется.

убираешь cmp - остается 1 - jnz выполняется всегда.

 

а тебе походу надо отключить jnz. так ты замени его на nop.

Изменено пользователем Monnoroch

Поделиться этим сообщением


Ссылка на сообщение

KD87, Ну в c++ что прототипы, что имена... Вернее, прототипы восстанавливаются по именам. (за исключением возвращаемого типа).

 

SkyLoader, да хватит уже, давай еще найдешь все функции движка с похожим на то, что тебе нужно названием и будешь спрашивать всех, а не оно ли это. В сталкере очень неплохой скриптовый API к движку, вон сколько всего на нем сделали, зачем лезть куда не надо...

В конце концов, если не можешь реализовать задумку на LUA, до уж реализовать ее в движке, притом без его исходников - это ввобще нонсенс.

Изменено пользователем Monnoroch

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...