我正在尝试在IDA Pro中反编译二进制文件。目前,我正在查看表示游戏数据的字符串指针列表(“左转”,“右转”等)。令人沮丧的是,似乎没有人引用存储此数据的地址,尽管我知道它们已在游戏中使用。

所以我猜测程序正在使用一些代码通过指针算术引用“左转” ,例如print(BASE_STRING_PTR + offset)

这很难被发现;我是IDA的新手,并且一直在使用按钮,但是除了尝试为我想要的地址上方的每个地址尝试“查找引用”之外,没有发现任何东西。我希望更多有经验的逆向工程师会提供一些建议吗?

,如果还有其他工具对此有帮助,那就太棒了,尽管我在Mac上使用它会有所限制。

评论

字符串是否显示在.rsrc中?

我不确定那是什么。

.rsrc是存储资源的段。如果字符串的地址看起来像.rsrc:ADDR,则它位于.rsrc中。无法正常访问资源,它们是通过WINAPI函数(如LockResource)访问的。但是,如果您不使用Windows,或者您要分析的程序不是Windows程序,那么这完全不相关。

嗯,我认为我要查看的程序部分在.data节中。

好问题。除了搜索字节序列之外,我还没有找到找到指针+偏移量的好方法。您当然可以编写脚本来这样做,在一定范围内搜索字节将相当容易。

#1 楼

在这种情况下,最好的方法是使用调试器(IDA Pro的调试器或您选择的其他调试器)。

在调试器中运行程序,并在第一个字节上设置硬件读取的断点其中之一。然后以一种使程序可以访问给定字符串的方式与程序进行交互(例如,使字符串显示在屏幕上的某种操作)。硬件断点将触发,使您可以查看调试器中的调用堆栈,以查看程序中的哪些代码导致了给定字符串的访问。