Monnoroch 6 Опубликовано 26 Июля 2011 (изменено) Ооо, почитал я тему, да. Так вот, народ, вы смешны. Вам аж двое спецов обьясняют разные вещи, и какова реакция? Половина - незнающие, выдает совершенно бредовые фразы, другие спорят. Не выйдет с этим ничего. Для работы с бинарными файлами и IDA нужны не только соответствующие знания (которые весьма и весьма обьемны) но и огромный опыт, время и черт знает еще что. Даже я, имеющи неплохой опыт в низкоуровневом программировании, знаю современный x86 ассемблер, я пытался разобрать с помощью IDA _свою собственную_ dll, написанную на чистом си - а это значит, что в принципе она оттранслировалась почти дословно, даже в таких условиях я смог найти, разобрать, понять только несколько простейших функций. А уж изменять я и лезть не стал... Потому уж я точно знаю, чтобы реально что-то сделать с дизассемблером - нужен очень большой опыт. И терпение, кстати, тоже, неслабое. А тут многомегабайтный файл на С++, что означает шаблоны, виртуальные функции, бог знает что еще. Добавлю еще, что разные компиляторы генерируют разный бинарный код. Не выйдет ничего, ну максимум - что уже было, изменить константы в хекс редакторе, добавить условие. Но даже и чтобы просто добавить переход на адрес куда-то, что несложно, надо сначала найти то место, в которое вы хотите его добавить, разобрать окружающий код, найти адрес, куда надо переходить - а "найти" - это не просто найти, а в приведенном в теме сгенерированном сишном коде с безумными именами, и предположениями дизассемблера, которые совершенно не обязательно верны. Миллионы переменных, значение каждой из которых надо понять, обозначить. В общем, гиблое дело, оставьте это профессионалам. Добавлено через 23 мин.: Я даже больше скажу: проще свой движок написать, чем что-то действительно кардинально поменять в уже существующем. Изменено 26 Июля 2011 пользователем Monnoroch Поделиться этим сообщением Ссылка на сообщение
Monnoroch 6 Опубликовано 26 Июля 2011 (изменено) SkyLoader, Можешь повторить вопрос несколько более развернуто? Честно говоря, не понял в чем он состоит. DIMA-RED, Повесить скрипт, отлавливающий прицеливание и наносящий хит перед актором. Анимацию приделать врятле можно. SkyLoader, с какими методами? кто сделал? какие схемы? что такое циклы я понимаю, но при чем тут они? вызов функции идет там, где call (= при чем тут акшн мэнэджер? Ну и вообще, поподробней, что тебе надо извлечь из этого кода? Ах, да, и больше всего меня озадачило при чем тут функции, которые находятся рядом. ага, я нашел "motivation_action_manager". только он не вызывается. походу проводится некое действие над этим классом. я не знаю luabund, поэтому ничего утверждать не могу, но по-моему в класс добавляется некий метод (это все судя по названиям функций luabind, с которым сам я поработать не могу по техническим причинам) я тут поразмыслил, и похоже добавляется метод регистрации схемы поведения, или что-то навроде того. но никаких гарантий. Вопрос к администрации, почему через некоторое время пропадает кнопка "изменить?" А если мне мысль умная пришла в голову, или я ошибку нашел, или опечатку хочу исправить? Раньше не пропадала. Не понимаю мотивации таково нововведения. Пост можно редактировать в течение 15 минут. А вообще, для таких вопросов есть Административный раздел. Добавлено через 219 мин.: Cyclone, да, это я уже посчитал, но мотивация ограничения так и не ясна. Вот и баг: я снова могу редактировать пост (= Изменено 26 Июля 2011 пользователем Monnoroch Поделиться этим сообщением Ссылка на сообщение
Monnoroch 6 Опубликовано 27 Июля 2011 (изменено) SkyLoader, Я все еще ничего не понимаю. Теперь ты говоришь, что тебя интересует другая проблема, нежели ты описал выше. Напиши подробно что тебе надо от движка? И функция никуда не идет. Функции ходить не умеют, инфа 100%. Изменено 27 Июля 2011 пользователем Monnoroch Поделиться этим сообщением Ссылка на сообщение
Monnoroch 6 Опубликовано 27 Июля 2011 (изменено) SkyLoader, а мне откуда знать по какому она адресу? О_о с чего, опять же ты взял, что существует некое действие "bind_object"? и в чем, по твоему оно выражается? Изменено 27 Июля 2011 пользователем Monnoroch Поделиться этим сообщением Ссылка на сообщение
Monnoroch 6 Опубликовано 27 Июля 2011 (изменено) 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]. И собственно постоение которой, походу и есть в коде выше. собственно, вот и все, что можно сказать (= Ну, вернее, я больше ничего там разобрать не могу. Изменено 27 Июля 2011 пользователем Monnoroch Поделиться этим сообщением Ссылка на сообщение
Monnoroch 6 Опубликовано 28 Июля 2011 SkyLoader, Ага, нашел-то нашел, только обьяснить никому не смог Поделиться этим сообщением Ссылка на сообщение
Monnoroch 6 Опубликовано 29 Июля 2011 (изменено) Если 0 заменить на 1, то в сп биндер отключается, однако если следующую строчку с jnz убрать вообще, то ничего не изменится. логично. у тебя зеро флаг был 1, выполняется cmp - становится 0.jnz не выполняется. убираешь cmp - остается 1 - jnz выполняется всегда. а тебе походу надо отключить jnz. так ты замени его на nop. Изменено 29 Июля 2011 пользователем Monnoroch Поделиться этим сообщением Ссылка на сообщение
Monnoroch 6 Опубликовано 1 Августа 2011 (изменено) KD87, Ну в c++ что прототипы, что имена... Вернее, прототипы восстанавливаются по именам. (за исключением возвращаемого типа). SkyLoader, да хватит уже, давай еще найдешь все функции движка с похожим на то, что тебе нужно названием и будешь спрашивать всех, а не оно ли это. В сталкере очень неплохой скриптовый API к движку, вон сколько всего на нем сделали, зачем лезть куда не надо... В конце концов, если не можешь реализовать задумку на LUA, до уж реализовать ее в движке, притом без его исходников - это ввобще нонсенс. Изменено 1 Августа 2011 пользователем Monnoroch Поделиться этим сообщением Ссылка на сообщение