iOS安装应用

Mobile Installation 是 iOS 中负责安装 IPA 的 Framework,,通过 IDA 分析 /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/System/Library/PrivateFrameworks/MobileInstallation.framework/MobileInstallation 可知它导出了以下 API:

Name                                        Address  Ordinal
----                                        -------  -------
_MobileInstallationArchive                  00000F80       
_MobileInstallationBrowse                   00000FE0       
_MobileInstallationCheckCapabilitiesMatch   00000BE0       
_MobileInstallationCopySafeHarbors          00000CA4       
_MobileInstallationInstall                  00001144       
_MobileInstallationLookup                   00001034       
_MobileInstallationLookupArchives           00000E70       
_MobileInstallationProcessRestoredContainer 00000E10       
_MobileInstallationRegisterSafeHarbor       00000D58       
_MobileInstallationRemoveArchive            00000EC0       
_MobileInstallationRemoveSafeHarbor         00000CF4       
_MobileInstallationRestore                  00000F20       
_MobileInstallationSetDeviceCapabilities    00000C40       
_MobileInstallationUninstall                00001084       
_MobileInstallationUpgrade                  000010E4       
__MobileInstallationRebuildMap              00000B90       


其中有两个 API 是非常有用的:

_MobileInstallationInstall:安装 IPA
_MobileInstallationLookup:列出已安装的 IPA

 

typedef int (*MobileInstallationInstall)(NSString *path, NSDictionary *dict, void *na, NSString *path2_equal_path_maybe_no_use);
IPAResult IPAInstall(NSString *path)
{
  void *lib = dlopen("/System/Library/PrivateFrameworks/MobileInstallation.framework/MobileInstallation", RTLD_LAZY);
  if (lib)
  {
    MobileInstallationInstall pMobileInstallationInstall = (MobileInstallationInstall)dlsym(lib, "MobileInstallationInstall");
    if (pMobileInstallationInstall)
    {
      NSString *name = [@"Install_" stringByAppendingString:path.lastPathComponent];
      NSString* temp = [NSTemporaryDirectory() stringByAppendingPathComponent:name];
      if (![[NSFileManager defaultManager] copyItemAtPath:path toPath:temp error:nil]) return IPAResultFileNotFound;
     
      int ret = (IPAResult)pMobileInstallationInstall(temp, [NSDictionary dictionaryWithObject:@"User" forKey:@"ApplicationType"], 0,皇冠足球网址, path);
      [[NSFileManager defaultManager] removeItemAtPath:temp error:nil];
      return ret;
    }
  }
  return IPAResultNoFunction;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值