我在应用程序二进制文件上尝试了字符串..但它显示以下错误:字符串:对象:格式错误的对象(未知加载命令 19)
从 iOS 应用程序的二进制文件中读取硬编码信息的任何其他方式
IPA 文件不是二进制文件。这是一个 ZIP 存档,您必须将其解压缩才能获得应用程序包目录,其中包含实际的可执行文件。
即使那个可执行文件格式也不正确。它使用下载它的用户的 AppleID 进行加密。您需要先对其进行解密,然后才能在其上运行strings
(您可以为此使用一些流行的 iOS 应用程序破解工具)。
要从 ipa 获取硬编码字符串,请执行以下步骤:
从这里获取离合器。
Clutch <ipaToDecrypt>
使用 Clutch ( )解密应用程序
解压解密后的ipa,得到app bundle目录。
在其中找到可执行文件,然后对二进制文件运行 strings 命令。( strings <app-binary>
)
这已经很老了,但是我遇到了一个特殊的问题,我试图在启用了 Bitcode 的应用程序中找到硬编码的字符串,并且我已经建立了一个存档以导出到 AppStore。最终的 .ipa 文件像往常一样解压缩,其中包含 Payload/appname.app/appname 处的二进制文件,但strings
类似的工具无法处理它。相反,我使用了以下命令:
segedit Payload/appname.app/appname -extract __LLVM __bundle llvm.xar
xar -xf llvm.xar
llvm-dis 1
您需要安装 llvm 工具(例如 brew install llvm)来获得 llvm-dis。这会生成一个名为 1.ll 的文件,其中清楚地包含我正在寻找的硬编码字符串(以及非常易读的伪源)。如果 1.ll 中没有任何内容,请查看是否有名为 2、3、4 等的文件并llvm-dis
在它们上运行。
但是,对于实际从 AppStore 下载的 ipa,您将需要使用越狱设备,您可以在其中运行离合器等。