3

我试图从 iOS 应用程序内部找到一个常量(类似于秘密令牌),以便使用未记录的 Web API 构建应用程序(顺便说一句,我不喜欢非法的东西)。到目前为止,我的 Mac 上有解密的应用程序可执行文件(越狱 + SSH + 将解密的可执行文件转储为文件)。我可以使用 strings 命令获取可读的字符串列表,并且可以使用 class-dump 工具( http://stevenygard.com/projects/class-dump/) 以获取类的接口定义(标题)列表。虽然这让我了解了应用程序的内部工作原理,但我仍然找不到我正在寻找的东西:我正在寻找的常量。在字符串命令转储中实际上有数千个字符串定义。有没有办法以一种我可以拥有 NSString 常量的名称及其值的方式转储字符串。我不需要方法的实现细节,我知道它是编译好的,我能得到的只是汇编代码。但是,如果我可以得到字符串常量的名称(在字符串转储和类转储中)以及字符串值(在字符串转储中),我认为可能有一种方法可以将它们关联在一起。

谢谢,

能。

4

1 回答 1

3

不幸的是,不,除非有一些我不知道的黑魔法工具,或者除非可执行文件是用调试符号构建的(可能不是这种情况)。如果有调试符号,您应该能够通过调试器运行它并获取变量名称。

在编译时,编译器会去掉常量的名称,并将代码中所有出现的常量替换为其在内存中的位置地址(通常与可执行文件内部的字节偏移相同)。正因为如此,常量的原始变量命名丢失了,只留下了值。因此,您无法在任何地方找到常量的原因。

我试图找到秘密令牌的方法是捕获应用程序创建的所有数据流量,然后在二进制文件中查找相同的模式。如果令牌确实在那里,并且没有以某种方式混淆,那么至少这大大缩小了你的范围。

祝你好运!RE 可能非常有回报,但有时它真的很糟糕。

于 2013-06-15T23:53:39.027 回答