修改ELF二进制文件以扩展数组大小

时间:2018-10-24 06:47:01

标签: c++ linux assembly diff binaryfiles

我有一个ELF32二进制文件,一个游戏,它会创建一个大小为32的堆栈,并在游戏启动时填充了游戏手柄的输入。我要使用的游戏手柄有48个输入,这会导致堆栈溢出并导致游戏崩溃。我已经问过开发人员,是否有可能将堆栈大小增加到64,但是他们说他们不再打算更新游戏了。一个旧的论坛帖子中有一个指向bspatch文件的链接,该文件修补了一个较旧的二进制文件以更新堆栈大小,但是该文件不再可用,剩下的唯一选择是:我需要自己对游戏进行修补。

我真的不知道从哪里开始。我有一些gdbreadelf转储,但是我不知道这些转储是否对可能引导我正确方向的人有用,尽管我仍然会将它们张贴在下面。 >

我想它的长短是,我需要知道如何找到正确的对象并修改其大小。如果有更多我可以提供的信息可以帮助您缩小需要修补的地方,我很乐意提供。

https://gist.github.com/karai17/da3b84949443761e2409f4ddba3eb17e(gdb转储)

https://gist.github.com/karai17/785d21bf863e9d24b25a744d2f25cfcf(readelf转储)

编辑:经过一番讨论,我被指出有问题的代码,并通过gdb对其进行了反汇编。在这一点上,我需要弄清楚需要调整组装的哪些位,但是我之前从未真正研究过组装,因此这是一个非常缓慢的过程。任何帮助将不胜感激。 :)

https://github.com/chrismingay/CM-XMAS-2012/blob/master/xmas.build/glfw/main.cpp#L2895-L2935(C ++)

https://hastebin.com/uwejuvowat.asm(asm)

0 个答案:

没有答案