我在应用程序二进制文件上尝试了字符串..但它显示以下错误: strings:object:格式错误的对象(未知加载命令19)
从iOS应用程序的二进制文件中读取硬编码信息的任何其他方式
答案 0 :(得分:4)
IPA文件不是二进制文件。它是一个ZIP存档,您必须提取该档案以获取应用程序包目录,其中包含实际的可执行文件。
即使是可执行文件也不是很好。它已使用下载它的用户的AppleID加密。您需要先解密它才能在其上运行strings
(您可以使用一些流行的iOS应用程序破解工具来实现此目的)。
答案 1 :(得分:2)
要从ipa获取硬编码字符串,请按照以下步骤操作:
从here获取离合器。
使用Clutch(Clutch <ipaToDecrypt>
)
解压缩解密的ipa,并获取应用包目录。
在其中找到可执行文件,并对二进制文件运行strings命令。
(strings <app-binary>
)
答案 2 :(得分:0)
这已经很老了,但是我遇到了一个特殊的问题:我试图在启用了位码的应用程序中查找硬编码的字符串,并建立了一个存档以导出到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,很不幸,您将需要使用一个越狱设备,在该设备上可以运行离合器等。