IDA Pro:
我使用iFunBox从手机的IPA中提取了应用程序文件。我在这里可能做错了什么,因此,如果任何人都具有反编译应用程序或将汇编代码转换为人类可读代码的经验,那将非常好并且很有帮助。
谢谢。
#1 楼
iOS应用程序受Apple的DRM系统保护。该系统对应用程序的某些部分进行加密。据我所知,加密的密钥在每个设备或每个设备平台上都是唯一的。我没有花太多时间在FairPlay上,所以我不知道加密密钥是什么,但我怀疑它是GID密钥还是UID密钥。我怀疑是后者。为了解密应用程序,您需要一个越狱的设备才能在其上运行自己的未签名代码。请注意,越狱设备可能会使Apple保修无效。转储应用程序的纯文本通常有三种常用方法,它们都依赖于以下事实:在将应用程序加载到内存时,应用程序必须由加载器解密。其中两个要求您安装可通过Cydia获得的类似OpenSSH之类的东西。您可以使用任何可以提供外壳程序并且可以远程访问的东西,但是SSH很好,是标准的,并且还提供了一种拉取和推送二进制文件的好方法。
请注意以下事实:默认的root密码位于所有设备都是“高山”设备,因此请务必进行更改。我建议,除非您真的知道自己在做什么,否则请仅将研究设备保留在本地网络上,不要将其暴露在Internet上。使用专为破解应用程序制作的应用程序,例如Crackulous或Clutch,它们将为您转储该应用程序的解密版本。该方法很简单,但是不可靠且没有兴趣,因为它可能最少能教您。
第二种方法是使用调试器,并在加载后或加载前将其附加到应用程序。然后,您中断调试器,并将应用程序的代码部分转储到Flash中。然后,将此转储重新粘贴到加密的应用程序中,覆盖加密的部分。您可能还想更新所有加密标志。这种方法可以教您更多有关发生的情况的信息。
我认为,第三种方法是目前最好的方法。它包含由Stefan Esser编写的动态库,称为DumpDecrypted。该库是作为库添加的,加载器将其强制添加到所有创建的进程中。在加载时,库将转储二进制文件的解密版本以供您刷新。此方法要求您具有为iOS构建库的能力,这通常意味着您需要SDK。它仅解密由加载程序加载的FAT二进制文件的一部分,因此您可能会获得一个或多个仍保持加密状态的代码段,但它们都应针对不同的平台执行相同的功能。这种方法非常可靠,因为除非专门寻找它,否则应用程序很难发现额外的库。您可以通过重命名该库等来解决此问题。然后,您可以开始使用Hex-Rays ARM decompiler或Hopper之类的工具开始对其进行反编译。
这是一篇有关使用iOS应用程序的简短文章。我认为Pedram Amini在2009年的旧文章很好地介绍了正在发生的事情。
评论
由于苹果倾向于严厉打击那些越狱的设备及其所有者,因此我不建议自认为“全面入门”的人尝试一下。接下来,您知道该人的iPhone坏了,苹果将拒绝提供帮助。
–杂件
2014年4月18日在19:02
那是个很好的观点。
–彼得·安德森(Peter Andersson)
2014年4月18日在19:09
我的手机实际上已经越狱了,并且已经越狱了几年(虽然不是同一部iPhone,但多年来我已经对其进行了升级)。我大部分时间都在做我知道的事情,但是直到现在我还没有探索过这个领域,所以是的,在逆向工程和类似性质的事情上,您可以称我为初学者。 @PeterAndersson-感谢您的出色回答!
–user94584392
2014年4月23日19:31
评论
IDA为iPhone应用程序生产ARM拆卸程序。这些可能会帮助您:1 2 3 4提示:十六进制射线与十六进制视图不同
我意识到,我一发布此内容,但由于原因却忘记对其进行编辑。无论哪种方式,Hex-Rays插件都不会显示在插件菜单中。
如果您正在寻找一个简单的教程来解密iOS二进制文件并再次将其辞职,请查看:reverseengineeringapps.blogspot.de。
有点偏离主题,但我想知道是否有人可以向我指出正确的方向,以保护应用程序及其内容免于反编译?如果要对应用程序进行反编译,我有一些资源需要保护,因此想知道通过苹果进行的加密是否足够,或者我应该去做些什么?