iOS程序破解——获取.ipa程序包
首先肯定不是获取自己的ipa包。
为什么要获取ipa包呢?比如,在仿写一些程序时,避免不了获取它的图片素材等等,那么最快也是最有效的方式就是获取原程序的ipa包。更或者,你想要逆向分析某一款APP时,那么只有获取了ipa后才能进行class-dump,ida等等后续工作。
一、通过越狱设备
如果有越狱手机,那么就变得很简单,只需要从AppStore下载到越狱手机,然后用iTools/PP助手等工具将ipa包备份到电脑即可,下图是使用PP助手:

如果只是为了获取图片素材,那么获取到ipa包解压后,显示包内容即可。但是如果想进一步进行逆向分析它的源代码,还需要使用Clutch等工具进行砸壳,因为从AppStore下载的程序都是加过密的,至于砸壳不再详述。
二、使用未越狱的手机
在iOS8之前使用iTools等可以直接导出ipa包,但是iOS9之后就不能。(我用的是MAC系统,如果大家可以的,还烦请告诉我一声,在次谢谢)。
三、使用电脑
此方法只是用来获取企业账号发布的APP。在一些情况下,公司可能发布一款违背苹果审核规则的APP,不能上架AppStore,那么可以使用企业账号发布在自己的网站上,然后通过微信、微博或者扫二维码的方式分发推广应用。
1 我们就可以直接将他们推广的网址输进电脑浏览器,这是会获得plist文件,或者浏览器提示无法打开并给出itms-services:///?action=download-manifest&url=...一大串提醒。
如果是plist文件,那么用Xcode打开plist文件,将下图中红色框住的部分即是ipa的下载路径,复制后直接用浏览器打开即可。

如果是一串itms-services:///?action=download-manifest&url=...这样的提醒,那么“url=“后面的链接直接就是plist文件的下载地址,同样是复制用浏览器打开即可,后续操作和上面一样。
2 现在程序的保护意识都加强了,可能服务器会判断你的设备如果不是手机则拒绝下载,直接返回失败,那么这种情况,可以将MAC下的浏览器通过修改userAgent伪装成手机的Safari浏览器。下面以火狐浏览器为例:
A)首先打开Firefox在地址栏输入:about:config,这时会有提醒,直接点击I promise!即可

B)在搜索里面搜索:general.useragent.override,第一次是搜索不到的,然后再空白区域右击->New->String

C)在弹出的框里面输入general.useragent.override->OK

D)再在弹出的框中输入具体的值,比如:iPhone6,iPhone5s,iPhone4s(目前我只有这三款手机,欢迎添加,获取方法见下面代码)。
iPhone6,iOS9.0.2:Mozilla/5.0 (iPhone; CPU iPhone OS 9_0_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13A452
iPhone5s,iOS9.0.2:Mozilla/5.0 (iPhone; CPU iPhone OS 9_0_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13A452
iPhone4s,iOS7.1.1:Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Mobile/11D201
如果上面三款不符合你的要求,下面贴上获取手机userAgent的代码,可以根据需要来获取自己需要的手机型号,注意:要真机调试:
- (void)viewDidLoad {
[super viewDidLoad];
UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectZero];
NSString *userAgent = [webView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];
NSLog(@"--%@--",userAgent);
}

最后,关闭浏览器再次打开进行1的操作。企业账号发布的应用都是没有加密的,直接使用class-dump,ida/Hopper Disassembler分析即可,当然图片素材也是可以获得的。
综上,通过越狱手机不仅可以获得AppStore上的APP,更可以获得企业账号发布的APP,如果是AppStore上的APP且想进行逆向分析,还需要使用clutch工具进行砸壳。如果没有越狱手机,可以通过浏览器获取企业账号发布的APP,有可能需要伪装成手机浏览器,其实如果对方服务器添加了签名验证,那么即便是伪装成手机浏览器也不能获取了,所以,如果自己在发布企业app时,如果不想被破解,最后使用签名验证的方式。
iOS程序破解——获取.ipa程序包的更多相关文章
- 支付宝小程序开发——H5跳转到小程序(获取小程序页面的链接)
前言: 这个问题支付宝小程序官方文档并没有专门说明,钉钉群的官方技术支持给了个开发者社区的帖子,详见:如何跳转小程序. 如果配置的页面没有参数还好,不会出问题,如果有参数,很可能配出来的链接无法正常获 ...
- 在苹果iOS平台中获取当前程序进程的进程名等信息
本文由EasyDarwin开源团队成员Penggy供稿: Objective-C 提供 NSProcessInfo 这个类来获取当前 APP 进程信息, 然而我们的静态库是 pure C++ 工程. ...
- ABAP 在被访问的程序中获取访问程序的全局变量
前些日子接到过一个看起来比较普通的需求: 存在一个系统标准函数组FG01,内含函数模块FM00,FM01……等等.在系统程序中,FM00会调用FM01,通过FM01获取获取某些数据. 需求要求,复制一 ...
- Linux下获取当前程序的绝对路径
在Linux开发应用时,我们常常需要在程序中获取当前程序绝对路径,我们可以通过readlink读取符号链接/proc/self/exe进行获取,这个符号链接代表当前程序,它的源路径就是当前程序的绝对路 ...
- iOS程序破解——class-dump获取头文件
原文在此:http://www.cnblogs.com/mddblog/p/4942894.html 一.简述 class-dump顾名思义,是用来dump目标对象class信息的工具.它根据oc的r ...
- Android中获取应用程序(包)的信息----PackageManager
本节内容是如何获取Android系统中应用程序的信息,主要包括packagename.label.icon.占用大小等.具体分为两个 部分,计划如下: 第一部分: 获取应用程序的packagena ...
- Android中获取应用程序(包)的大小-----PackageManager的使用(二)
通过第一部分<<Android中获取应用程序(包)的信息-----PackageManager的使用(一)>>的介绍,对PackageManager以及 AndroidMani ...
- Android中获取应用程序(包)的信息-----PackageManager的使用(一)
本节内容是如何获取Android系统中应用程序的信息,主要包括packagename.label.icon.占用大小等.具体分为两个 部分,计划如下: 第一部分: 获取应用程序的packagenam ...
- Android中获取应用程序(包)的信息-----PackageManager的使用
本节内容是如何获取Android系统中应用程序的信息,主要包括packagename.label.icon.占用大小等.具体分为两个 部分,计划如下: 第一部分: 获取应用程序的packagename ...
随机推荐
- .Net 转战 Android 4.4 日常笔记(2)--HelloWorld入门程序
我不知道人们为什么那么喜欢用HelloWorld来做为自己的第一个程序入门,为什么不是hello **其他的东西或者hi. 一.打开ADT 的Eclipse开发工具新建一个Android项目 New- ...
- 创建 VXLAN - 每天5分钟玩转 OpenStack(111)
前面我们讨论了 VXLAN 的理论知识,并且在 ML2 中完成了相关配置.今天将通过 Web UI 创建 vxlan100_net 并观察节点网络结构的变化. 打开菜单 Admin -> Net ...
- 浅谈web语义化
在前端的编程道路上,是否听过html的结构语义化? 是否觉得自己前端嘛,只要做出炫酷的效果,编写出牛逼的JavaScript代码就ok啦.div+css所向无敌,干嘛要用其他标签呢. 是啊,正如上面所 ...
- geotrellis使用(七)记录一次惨痛的bug调试经历以及求DEM坡度实践
眼看就要端午节了,屌丝还在写代码,话说过节也不给轻松,折腾了一天终于解决了一个BUG,并完成了老板安排的求DEM坡度的任务,那么就分两段来表. 一.BUG调试 首先记录一天的BUG调试,简单copy了 ...
- 一次发现underscore源码bug的经历以及对学术界『拿来主义』的思考
事情是如何发生的 最近干了件事情,发现了 underscore 源码的一个 bug.这件事本身并没有什么可说的,但是过程值得我们深思,记录如下,各位看官仁者见仁智者见智. 平时有浏览园区首页文章的习惯 ...
- 【JAVA】基于MVC架构Java技术荟萃案例演练
基于JAVA-MVC技术的顾客管理项目案例总结 作者 白宁超 2016年6月9日22:47:08 阅读前瞻:本文源于对javaweb相关技术和资料汇总,涉及大量javaweb基础技术诸如:Servle ...
- Linux入门
参考资料:http://www.92csz.com/study/linux/ [Linux系统目录结构] 登录系统后,在当前命令窗口下输入 ls / 你会看到 以下是对这些目录的解释: /bin bi ...
- JS打印对象的方法&将Object转换为String的函数
1.有时候需要把对象中的字段属性打印出来,下面用JS实现输出对象: function writeObj(obj) { var description = ""; for (var ...
- EFCore执行Sql语句的方法:FromSql与ExecuteSqlCommand
前言 在EFCore中执行Sql语句的方法为:FromSql与ExecuteSqlCommand:在EF6中的为SqlQuery与ExecuteSqlCommand,而FromSql和SqlQuery ...
- 一句jQuery代码返回顶部
一句jQuery代码返回顶部 效果体验: http://hovertree.com/texiao/yestop/ 使用方法: 只需引用jQuery库和YesTop插件,然后一句代码就可以实现返回顶部: ...