Дело в том, что когда я открываю этот g_nav.obj, у меня нет там нормального кода в С, там всё на Эльфийском
А ну да... Гггг... Кхм. Слева поищи NAV_CreateNode и выложи текст этой функции. Внутри тега CODE желательно. На плюсик нажимай (четвертый справа от смайлика) и выбирай "code". Господе мне хоть щас в техподдержку
Щас эльфы гномам холивар за такие слова устроят. В ольге ПКМ - search for - constants - 0x2BC. В чем твоя проблема по константе или по референсу на строку найти эту функцию?
О. Ну так ты сразу и нашел что надо. .text:000002B3 - видишь справа чо ? 2BCh (а у меня по Ctrl+V чото не вставляет зараза). Вот это оно и есть. Теперь нажмакай на кнопу HexView-A и там ищи такую же цифру.
Добрый день! Мы тут Пентагон пытаемся взломать. А про Эльфов я не при делах, первый раз в приходится в эти файлы, которые больше напоминают бинарный мордор, заглядывать Дак там нет 2BCh, там же 000002A8 и два таинственных "push" и "ebp". Откуда там 2BCh? А HexView тоже показывает те же 2A8 только (Дак я то через ВК изворачиваюсь, чтобы ссылку получить, у меня тоже через CTRL-V наверно не вставится).
В конце строчки BC 02, писи же литтл эндиан, в нем числа задом через перед кодируются. Вероятней всего тупая правка этой константы не поможет потому что: Code: .text:000002CB loc_2CB: ; CODE XREF: _NAV_CreateNode+10↑j .text:000002CB 53 push ebx .text:000002CC 56 push esi .text:000002CD 57 push edi .text:000002CE 68 FD 02 00 00 push 2FDh .text:000002D3 68 50 0B 00 00 push 0B50h .text:000002D8 FF 15 40 26 00 00 call dword ptr _gi+88h .text:000002DE 8B F0 mov esi, eax .text:000002E0 B9 D4 02 00 00 mov ecx, 2D4h .text:000002E5 33 C0 xor eax, eax .text:000002E7 8B FE mov edi, esi .text:000002E9 F3 AB rep stosd Дальше по сценарию вызов какого-то метода, возвращающего указатель, по которому что-то забивается нулями. Если память там реально не выделяется, а используется готовый буфер, он будет рассчитан на 700 нодов.
А в самом конце видишь BC 02 ? Прямо на твоем же скриншоте, выделен рамочкой даже. Обратный порядок байт. Это и есть твой 2BC. Его тебе и надо найти в твоем EXE - файле. Если ты просто изменишь его здесь - ничего не поменяется. Надо будет перекомпилить этот exe чтобы поменялось. Так что теперь берешь и вот это все типо 66 81 38 BC 02 7C 11 68 ищешь внутри OllyDbg. Там изменяешь, сохраняешь на диск и все. Но весьма вероятно что работать не будет. Хотя хрен его знает. Всякое случается ============ Уточним на всякий случай. BC 02 можно поменять на FF 0A (например для перестраховки).
А. В принципе... в принципе... ты это же можешь сделать не в Olly а в любом редакторе который тебе больше нравится. Тебе Olly все-равно ничем не поможет, только сложнее будет.
Кратко если - видимо это таки вопрос либо добрейшей души нуба с отладчиком - либо коммерц. Миллионов баксов там потратить не на что. Надо просто объяснить что там того кода с гулькин нос. Что - то в радиусе стоимости пивка, возможно с суши
Кстати 2D4*4=B50, аргумент метода. Или не кстати. Если этот метод и есть выделение памяти, то надежда есть.
Да ну в баню сидеть разбирать... в ольке запустил - посмотрел где падает. Нашел где выделяется память - выделил побольше. Скорей всего игрушка заточена под слабенькие машины - так и экономили.
Дак мы же всё это время искали 694, а 2BC - 700. Как у нас из получилось 66 81 38 BC 02 7C 11 68? Откуда дополнительные 7C 11 68, если строка закончилась на BC 02? Надежда всегда есть, Надежда Павловна с нами
Ну можешь 2B7 конечно поискать примерно так же, но вообще есть сильное мнение что ты уже нашел все что надо. UPD: остальные цифры - те что строкой ниже. Это нужно просто для того чтобы найти в точности ту строку которую тебе нужно.
Вот сие творение. Вы должны вспомнить этот шедевр https://www.old-games.ru/game/download/get.php?fileid=183&modal=1 Вроде то, что нужно ,если кто-то хочет сам попробовать поковыряться
Это хорошо. Но таки да. Это было твое первое условие где 700. Где-то ниже найдешь точно так же и 2B7. И точно так же тебе надо будет его поменять. Но не сразу. Поменяй сначала первое. Если вывалится сообщение что типо вышел ты за пределы диапазона - меняй и второе. Если получишь вследствие этого AccessViolation - тогда все. Сушите тапки.