【发布时间】:2019-10-08 23:58:47
【问题描述】:
正如标题所示,我想看看特定地址的值是从哪里来的。我正在用lldb调试一个ios游戏。该游戏的乘数值为 0.4(组合减少的速度)。我可以使用作弊引擎更改此值,但我想知道汇编中的哪个指令将此值设置为该地址,以便我可以使用十六进制编辑器更改此指令。我曾经对变量值使用观察点断点等,但在这种情况下,该值是恒定的,并且在应用程序立即启动时设置。
【问题讨论】:
-
如果它是一个常数,那么可能没有指令设置它。它只是在二进制文件中并被加载到内存中。找到它所在的部分,然后在文件中找到它。
-
如何找到它在哪个部分?
-
我认为作弊引擎有相应的工具。我从未使用过它,所以很遗憾无法为您提供帮助。 lldb 也是如此。但是,使用 gdb,您可以执行
info symbol,这将为您提供该部分,然后使用info files获取该部分的基地址。然后,您可以从符号的地址中减去它以获得偏移量。最后,在二进制文件中找到该部分的开头(例如,使用objdump或readelf)并添加您在上一步中计算的偏移量。然后你应该在文件中的那个位置找到你的变量。
标签: ios debugging assembly arm lldb