У меня есть бинарный файл ELF32, игра, которая создает стек размером 32, который заполняется входами геймпада при запуске игры.Геймпад, который я хочу использовать, имеет 48 входов, что вызывает переполнение стека и сбой игры.Я спросил разработчиков, можно ли им увеличить размер стека до 64, но они сказали, что не планируют больше обновлять игру.В старом сообщении на форуме была ссылка на файл bspatch
, в который был добавлен старый бинарный файл для обновления размера стека, но этот файл больше недоступен, оставив единственную оставшуюся опцию: мне нужно исправить игру самостоятельно.
Я не знаю, с чего начать.У меня есть gdb
и readelf
дампы, но я не знаю, будут ли они полезны кому-то, кто сможет направить меня в правильном направлении, хотя я все равно опубликую их ниже.
Я предполагаю, что если коротко, то мне нужно знать, как найти нужный объект и изменить его размер.Если есть еще какая-то информация, которую я могу предоставить, которая поможет сузить область, в которой я должен установить патч, я был бы рад предоставить ее.
https://gist.github.com/karai17/da3b84949443761e2409f4ddba3eb17e (дамп gdb)
https://gist.github.com/karai17/785d21bf863e9d24b25a744d2f25cfcf (readelf dump)
Редактировать: После некоторого обсуждения я указал на соответствующий код и разобрал его через gdb.На данный момент мне нужно выяснить, какие части сборки нужно отрегулировать, но я никогда не углублялся в сборку раньше, так что это очень медленный процесс. Любая помощь будет оценена.:)
https://github.com/chrismingay/CM-XMAS-2012/blob/master/xmas.build/glfw/main.cpp#L2895-L2935 (C ++)
https://hastebin.com/uwejuvowat.asm (asm)