1. Гость, мы просим Вас ознакомиться с Правилами Форума и Отказом от ответственности!

1.5.5 (156) Вопрос по работе с исходниками

Тема в разделе 'PW Вопросник', создана пользователем alpha222, 26 сен 2021.

  1. TopicStarter Overlay

    alpha222 Пользователи

    Сообщения:
    36
    Лайки:
    0
    Репутация:
    0
    Здравствуйте, хотел бы спросить знающих людей, так как начал разбираться в этой теме не так давно, возможно ли имея исходники и работая с ними, внедрить скомпилированный код в в файлы другой версии? К примеру исходники 1.5.2~, но добавить изменения в файлы 1.5.5 не имеющие исходников. Тапками не кидаться, я примерно понимаю как работает реверсинг, но не совсем понимаю как готовый код добавлять в файлы без исходников (если это конечно возможно). Хотел бы получить совет или какие-нибудь ответы от опытных людей, спасибо!
  2. Tritri Пользователи

    Сообщения:
    6
    Лайки:
    1
    Пол:
    Мужской
    Репутация:
    0
    Я не опытный человек, но правильно ли я понимаю, что нужно дописать исходники 1.5.2 до 1.5.5, имея на руках скомпилированные 1.5.5? Как я смотрел, исходники сильно отличаются от декомпилированного Идой кода, так что "простым смертным" вроде меня не удастся сделать по аналогии.
  3. TopicStarter Overlay

    alpha222 Пользователи

    Сообщения:
    36
    Лайки:
    0
    Репутация:
    0
    Нет, вопрос в том, можно ли наработку на исходниках 1.5.2 перенести на 1.5.5, которая не имеет исходников.
  4. int 3 Программист Пользователи Open Source Contributor

    Сообщения:
    342
    Лайки:
    531
    Пол:
    Мужской
    Репутация:
    10
    Страна:
    Russian Federation Russian Federation
    Всё нижесказанное относится к серверу, т.к. он имеет отладочную информацию и скомпилирован практически без оптимизаций. С клиентом чуть сложнее, но идея та же.

    Исходники помогают понять существующий скомпилированный код и писать новый. Даже без исходников при желании можно взять любую функцию из ядра, допустим, и переписать на C++. Так что задача
    решается одинаково просто (или сложно) как при наличии исходников, так и без них. Короче, исходники не помогут.

    А вот на вопрос, как именно внедрять код в существующие бинари, я в двух словах ответить не смогу.
    alpha222 нравится это.
  5. TopicStarter Overlay

    alpha222 Пользователи

    Сообщения:
    36
    Лайки:
    0
    Репутация:
    0
    [А вот на вопрос, как именно внедрять код в существующие бинари, я в двух словах ответить не смогу.[/quote]
    Именно это и интересует, возможно Вы можете подсказать что следует изучать чтобы разобраться в этой теме? Меня интересует даже не столько результат сейчас, чтобы это реализовать, сколько разобраться и обучаться этому. Но за данный ответ спасибо!
  6. ser_VICE Пользователи

    Сообщения:
    49
    Лайки:
    16
    Пол:
    Мужской
    Репутация:
    0
    Страна:
    Russian Federation Russian Federation
    Готовый код можно добавлять, но нужно понимать работу этого кода в виде ассемблера, как машина. Для начинающих представляется возможным копипастить код небольшими кусочками в виде функций, методов в пустые или незадействованные области байтов exe. Это не значит, что вы сможете легко превнести кучу кода с новых версий, особенно отвечающих за граффон, таких как поддержка DirectX9 (например новый вид отображения воды, травы из 1.5.7). Зачастую это будут фичи по интерфейсу и прочие текстовые фичи, например в 1.3.6 exe сделать отображение HP мобам в цифрах, отображение предположительных синих бонусов при крафте в котлах, новый слот экипировки и т. п..
    Главное, чтобы операнды совпадали, стек не сыпался и все данные не крошились. Все таки в готовом exe уже машинный код и его просто добавлять и менять, как код исходников высокоуровневого языка в блокноте/студии не получится.
    Начинать этому учится лучше всего, это когда самостоятельно по гайдам делаешь инкасты, патчить gs на дебаг только для GM и т. п..Со временем опыт работы в серверной части в виде ассемблера даст понимание, как переходить к клиентской части. Если опыт такой уже имеется, это хорошо, ведь это больше чем просто понимание, как оно всë устроено. Даже при наличии исходников от 1.5.2, это не дает никаких обходных путей и манипуляций, чтобы код скомпилированный прям легко копипастом подходил в другую версию 1.5.5, хоть 1.3.6. Банальное, это адреса и смещения (offset) не будут совпадать и их уже надо переподсчитывать в ручную при переносе. В нашем случае шаровые исходники клиентской части не скомпилируются в полноценно работающих exe уровня Release. Их нужно дополнять недостающими файлами из SDK Angelika 2.0 и 2.2 и после этого еще "допиливать напильником". Поэтому их шаровое наличие подходит не больше, чем справочник " анатомичка" по устройству игры в exe.
    Mr.Fleks и int 3 нравится это.
Черновик сохранён Черновик удалён
Similar Threads
  1. zena353
    Ответов:
    4
    Просмотров:
    1.548
  2. ProName
    Ответов:
    1
    Просмотров:
    1.441
  3. Rody66
    Ответов:
    6
    Просмотров:
    6.648
  4. lokki
    Ответов:
    4
    Просмотров:
    1.030
  5. NetSpirit
    Ответов:
    6
    Просмотров:
    1.761
Загрузка...

Поделиться этой страницей