eXeL@B —› Вопросы новичков —› Reverse Engineering ЛИБО простейшая правка через OLLY-IDA-HEX |
Посл.ответ | Сообщение |
|
Создано: 02 февраля 2020 20:05 · Поправил: Navlibushka · Личное сообщение · #1 Ребят, у меня вопрос состоит из двух частей Часть-I: Есть старый шутер 1999 года. Есть я. Есть файл .lib (библиотека статическая, насколько я понял), который находится в SDK это самой игрушки. Нужно декомпилировать файл .lib, минуя\исправляя все декомпиляционные баги, чтобы была возможность править исходный код и компилировать обратно в .lib. Если имеет значение - игра написана на С. Реально ли это и как это сделать? В идеале, конечно, если найдётся Нэо, который это сваяет, ибо, похоже, вникать во всё это нужно самому лет 10. P.S. Ощущаю себя Морфеусом, который ищет избранного программиста, ибо, как я понял, то, что мне нужно - возможно только в матрице, а не в реальной жизни... Часть-II Когда я спрашивал это, нашёлся один мудрец, который предложил гораздо более простой способ. Хочу сначала попробовать его, если не выйдет - тогда откатываемся к части-I. Сама инструкция: Загружаешь exe в Olly. В IDA ищешь сей код и переключаешься в HEX. Выделяешь кусок и в самом Olly ищешь где он находится. Там просто заменяешь 694 на все что угодно (ну только что желательно размер не превышать ). И вполне возможно что все ок. https://dropmefiles.com/t9Xt8 - здесь сам пациент, в котором нужно изменить то число "694" на "1000", например, и скрины той инстркции, которую мне скинул человек. Я изначально сюда просто прикреплял картинку, но она в каком-то формате неадекватном прикрепляется, что потом нормально не скачивается, пришлось запихнуть в архив с самим редактируемым файлом Может кто-нибудь провернуть для начала Часть-II? Потому что я сам с этим буду разбираться полтора месяца, так как я с этим со всем как попугай с баяном. Я бы проверил новый файл на игрушке сразу и может даже к декомпиляциям тем переходить не нужно будет. Есть здесь волшебники? |
|
Создано: 02 февраля 2020 20:33 · Личное сообщение · #2 |
|
Создано: 02 февраля 2020 20:37 · Личное сообщение · #3 |
|
Создано: 02 февраля 2020 21:03 · Личное сообщение · #4 |
|
Создано: 02 февраля 2020 21:45 · Поправил: Navlibushka · Личное сообщение · #5 morgot пишет: А какой результат должен быть? В плане, зачем это все? Может, может обойтись инструментами попроще, типа ArtMoney, CheatEngine? Тогда развернём карты побольше: Я играю в одну игрушку. 1999 год, Фаргус, если это о чём-то говорит... Делаю для неё карты, моддинг, в общем. Делаю и для одиночной игры, и для мультиплеера. Все NPC, которые есть в одиночной игре перемещаются по карте по определённым навигационным меткам. Такая метка называется "node". Если ты их по карте не расставишь, боты не смогут ориентироваться в пространстве и будут жёстко тупить. Поэтому лучше покрыть ими всю поверхность, по которой можешь ходить сам. Делается это через консольные команды. Просто вводишь и бегаешь, а игра делит пространство на определённые клетки, где 4 клетки = 1 node, типо один из них занимает 4 клетки. Ты бегаешь, создаётся .nav file в корне игры и всё - после этого NPC тебя достанут, где хочешь. Проблема в том, что разработчики сделали для nodes лимит - 695, не больше. Мне нужно расширить это число, ибо карта у меня большая, а резать не хочу. Что имеем: SDK в виде .c и .h файлов, где эти 695 есть, но их и изменение ни на что не влияет. Там, кстати, строка "#define max_nodes 700", а не 695 почему-то, но да ладно. Navlib.lib - статическая(как я понимаю) библиотека в самом SDK, которая используется при его компиляции. Эти 695 прописаны в .lib. Нужно декомпилировать .lib, изменить те 695 на что-нибудь типа 10000 и компилировать обратно в .lib. Я уже пробовал открывать его через Hex Editor и там искать значения "694" и т.д. Результат таков, что если исправить единственное находимое там "700" и второе из двух находимых "695" (но не "694"), то число меток можно увеличить до 730, но игра постоянно вылетает тогда. Если открывать через IDA, то там в коде есть конкретная строчка типа с "> 694" и ниже printf с сообщением о "max_nodes reached", если достигаются те 695. Был вариант всё декомпилировать, исправить 695 на нечто большее не через Hex, где непонятно, то ли это вообще место в коде правится, а через сам код и компилировать обратно, проверив, получится ли расширить число nodes без каких-либо проблем. Я могу на почту переслать большое объяснение с кучей скриншотов того, что было в IDA, в Hex, что я делал, что да как, чтобы нагляднее было, может и реверс не нужен, может есть какой-то обходной путь для моей задачи. Просто мне на это же самое человек один порекомендовал вместо декомпиляции сделать ту правку через 3 проги. Воу попробовать, ибо с его слов это 2 минуты, если знать, как делать. |
|
Создано: 02 февраля 2020 22:51 · Личное сообщение · #6 вылетает, видимо, из-за того, что изменение одной лишь константы не решет вопрос размера выделенной памяти в классе под хранение этих самых ваших "node". волшебники декомпиляции найдутся, если вы озвучите приемлемый бюджет. (сумма с тремя нулями за каждые 100KB в y.e. как минимум). есть тема на форуме "поиск специалистов", вам туда. |
|
Создано: 03 февраля 2020 06:50 · Личное сообщение · #7 |
|
Создано: 03 февраля 2020 07:25 · Личное сообщение · #8 |
eXeL@B —› Вопросы новичков —› Reverse Engineering ЛИБО простейшая правка через OLLY-IDA-HEX |
Эта тема закрыта. Ответы больше не принимаются. |