Iphone 我想知道IPA文件的执行流程

Iphone 我想知道IPA文件的执行流程,iphone,executable,dylib,ipa,Iphone,Executable,Dylib,Ipa,我有一个IPA文件,其中包含info.plist、executable file、package.info、provision certificate、动态库、代码资源等。我想知道首先执行哪个文件以及执行顺序。我想向IPA添加一些内容,为此我需要了解现有IPA的工作原理 提前感谢。IPA文件只是应用程序的zip文件。它包含二进制文件本身、Info.plist、代码签名文件、图标和其他资源 从AppStore下载应用程序时,IPA文件将与元文件一起下载到/var/mobile/Media/Down

我有一个IPA文件,其中包含info.plist、executable file、package.info、provision certificate、动态库、代码资源等。我想知道首先执行哪个文件以及执行顺序。我想向IPA添加一些内容,为此我需要了解现有IPA的工作原理


提前感谢。

IPA文件只是应用程序的zip文件。它包含二进制文件本身、Info.plist、代码签名文件、图标和其他资源

从AppStore下载应用程序时,IPA文件将与元文件一起下载到/var/mobile/Media/Downloads。完全下载后,将运行一个安装守护进程(installd),将IPA提取到/var/mobile/Applications/。在这个目录中:

  • .app文件夹,其中包含应用程序的所有资源和可执行文件
  • 用于存储任何类型文件(读/写权限)的文档文件夹
  • 一个库文件夹,用于缓存数据并使用NSUserDefaults(Library/Preferences/.plist)以plist格式存储键/值数据
  • 用于存储临时数据的tmp文件夹。应用程序未运行时,此文件夹的内容将被删除
然后删除IPA文件,从而通过删除应用程序存档释放空间

加载SpringBoard(主屏幕应用程序)时,它会读取每个应用程序的Info.plist并将其缓存。从中,它获得显示名称(图标下的名称)、图标本身以及可执行文件的名称等

当您单击应用程序图标时,SpringBoard会在可执行文件加载到内存中时,将应用程序的Default.png显示为初始屏幕。在这个过程中,它被解密,因为每个AppStore应用程序在苹果公司签名时都被加密。一旦可执行文件加载到内存中,dyld(动态链接器)就会加载它所链接的任何框架或库(如UIKit、libobjc、libSystem等)。应用程序不能包含自己的任何库;可执行文件必须是独立的。然后,调用应用程序的main()函数,并运行应用程序的代码

有几件事你应该知道:

  • 修改应用程序可执行文件中的单个字节将使代码签名无效,内核将拒绝运行应用程序

  • 除非您在越狱设备上运行,否则即使在运行时也无法编辑或修改可执行文件。如果不以某种方式(二进制建模或运行时动态库注入)运行无符号代码,则无法更改应用程序的运行方式

  • IPA只能由您的帐户安装。您不能下载IPA并期望它运行。代码签名将无效

  • 修改应用程序的运行方式并非易事。一些应用程序将其所有配置设置存储在一个plist中,其身份未经验证,但这些应用程序很少。大多数应用程序将使用哈希算法(如md5或sha1)验证配置或保存文件,这使得编辑这些文件而不让应用程序拒绝它们变得更加困难。许多其他应用程序根本不使用plist或其他易于编辑的文件类型。他们要么使用鲜为人知的或专有的格式,要么不使用配置文件


  • 在参加任何活动之前,要先了解自己的处境。我不是在阻止你尝试;我只是想帮助你理解要实现这一目标必须克服的障碍。

    我钻研iOS已经三年了,所以我把这一点牢记在心。iOS是一个有趣的平台。经过编辑可添加应用程序安装的详细信息。感谢您的解释:)你知道coderesource目录的重要性吗?堆栈溢出应该有以下特性+1这是一个有趣的想法。也许在meta上发布?在此之前,还有一个rss提要(顺便说一句,你的是rss提要)。