iOS逆向-day1:逆向内容的简介与越狱环境搭建

2019 年 4 月 15 日 CocoaChina

总体内容

1、逆向课程简介

2、学习逆向的条件

3、iOS越狱(iOS Jailbreak)的优点和缺点

4、完美越狱和非完美越狱以及如何判断是否越狱成功?

5、Cydia(越狱后的App Store)

6、iphone/Mac必备软件安装以及安装包

7、代码判断设备是否越狱

8、提高工作效率的工具


一、逆向课程简介


1.1、逆向总体图

逆向课程简介


1.2、学习逆向的效果:初级开发 > 高级开发 > 底层开发


1.3、学习逆向的价值

  • 掌握编码的本质,编写高效代码

  • 修改已有APP的功能

  • 学习优秀APP的设计

  • 增强客户端的安全性

  • 通用性极强(越底层,通用性越强)


二、学习逆向的条件


2.1、至少有iOS开发经验:会写 UI界面、多线程网络、数据存储等等


2.2、调试设备:iPhone 6s plus,建议至少iPhone 5S(因为从5S开始支持arm64架构)或者至少是iPad Air、iPad mini2等支持arm64架构的设备


2.3、iOS 9.1完美越狱,建议至少iOS8完美越狱,版本也不能太高,要保证能够完美越狱,检查手机是否可以越狱


检查手机是否可以越狱


三、iOS越狱(iOS Jailbreak)的优点和缺点


2.1、iOS越狱的优点

  • 打造个性化、与众不同的iPhone:自由安装各种实用的插件、主题、APP;修改系统APP的一些默认行为

  • 自由安装非AppSore来源的APP:“付费APP”秒变“免费APP”;未越狱iPhone安装APP的途径(AppStore、真机调试、通过证书打包签名ipa安装)

  • 灵活管理文件系统,让iPhone可以像U盘那样灵活

  • 给开发者提供了逆向工程的环境


2.2、iOS越狱的缺点

  • 苹果不予保修

  • 费电,越狱后的iOS系统会常驻一些进程,耗电速度约提升10%~20%

  • 在新的iOS固件版本出来的时候,不能及时地进行更新:(1)、每个新版本的固件,都会修复上一个版本的越狱漏洞,使越狱失效;(2)、如果需要保持越狱状态,要等待新的越狱程序发布时,才能升级相应的固件版本

  • 不再受iOS系统默认的安全保护,容易被恶意软件攻击,个人隐私有被窃取的风险

  • 如果安装了不稳定的插件,容易让系统变得不稳定、变慢,甚至出现“白苹果”等问题



四、完美越狱和不完美越狱


4.1、完美越狱:越狱后的iPhone可以正常关机和重启


4.2、不完美越狱

  • iPhone一旦关机后再开机时,屏幕就会一直停留在启动画面,也就是“白苹果”状态

  • 能正常开机,但已经安装的破解软件都无法正常使用,需要将设备与PC连接后,使用软件进行引导才能使用


4.3、补充:一般说来,在苹果发布新的iOS固件后,针对该固件的不完美越狱会先发布,随后完美越狱才可能发布;一般较新的系统版本,均为不完美越狱


4.4、越狱方法推荐(我使用的是爱思助手越狱的)


PP助手


爱思助手


4.5、以及如何判断是否越狱成功?


手机桌面是否有 Cydia



提示:Cydia 出现无法加载网络的解决办法




工具判断(比如 PP助手 或者 ITools 越狱助手)



五、Cydia(越狱后的 App Store)


5.1、Cydia的简单介绍

  • Cydia(越狱后的 App Store),可以在Cydia中安装各种第三方的软件(插件、补丁、APP)

  • 作者:Jay Freeman (网名:saurik)


Jay Freeman` (网名:`saurik`)


  • 5.2、Cydia安装软件的步骤


步骤1、添加软件源(不同软件的软件源可能不同),下面以 pp助手源:http://apt.25pp.com 为例



步骤2、进入软件源找到对应的软件,开始安装



步骤3、如果软件源中的软件太多,可以搜索查找


5.3、SpringBoard


有时候通过Cydia安装完插件后,可能会出现以下界面


SpringBoard就是iOS的桌面



六、iphone/Mac必备软件安装以及安装包


6.1、建议安装顺序



6.2、Apple File Conduit "2"(iphone必备软件安装)


补丁的作用(可以访问整个iOS设备的文件系统;类似的补丁还有:afc2、afc2add),可以使用工具 iFunBox



软件源:http://apt.saurik.comhttp://apt.25pp.com


提示:先在 软件源 里面添加上面软件源的链接,再到pp助手源里面的全部软件包里面下载 Apple File Conduit "2"


6.3、AppSync Unified(iphone必备软件安装)


AppSync Unified补丁的作用:可以绕过系统验证,随意安装、运行破解的ipa安装包


软件源:http://apt.25pp.com




AppSync Unified


6.4、iFile(iphone必备软件安装)


iFile的作用:可以在iPhone上自由访问iOS文件系统;类似的还有Filza File Manager、File Browser


软件源:http://apt.thebigboss.org/repofiles/cydia



BigBoss



iFile


6.5、(Mac必备软件安装)



iFunBox与PP助手

  • iFunBox:管理文件系统

  • PP助手:自由安装海量APP;卸载APP;备份APP为ipa安装包(iOS9开始,不再支持备份APP)


6.6、安装包


通常情况下的安装方式

  • 通过Cydia安装的安装包是deb格式的(结合软件包管理工具apt)

  • 通过PP助手安装的安装包是ipa格式的


如果通过Cydia源安装deb失败

  • 通过可以先从网上下载deb格式的安装包

  • 数据线连上手机,通过 iFunBox 将deb安装包放到/var/root/Media/Cydia/AutoInstall



以iFile为例


重启手机,Cydia就会自动安装deb


七、代码判断设备是否越狱,参考博客一参考博客二,手机是否越狱判断的 demo


7.1、越狱带来的苹果安全支付机制

  • 苹果是非常重视安全性的,所以给用户设计了一套复杂的安全机制。但是很多用户喜好自由或者是被一些商家恶意的,对手机进行了越狱。这严重的破坏了手机的安全性能,给一些恶意的应用打开了方便之门。

  • 而在苹果支付中,苹果为了保护用户的隐私,支付凭证中不包含任何用户的Apple ID信息,所以我们的服务器在验证这个凭证的时候无法得知是谁的凭证,只能验证这个凭证的真伪。就像一些商家发行的不记名购物卡,只要卡是真的就可以使用,而不管你是否是这个卡的真正主人。

  • 苹果的这种支付机制保护了用户的隐私,但也为不良的黑客提供了作案的机会。黑客可以对越狱的手机添加一种恶意软件,软件会窃取你支付过程中的支付凭证,然后伪造一份假的凭证,让你的支付验证在商家的服务器上失败,但你的钱却已经支付,黑客再使用你真正的支付凭证在其他的账号中验证支付,而商家的服务器验证该支付凭证是真的,商家则认为是黑客的账号购买了商品。这样黑客就盗取了用户的资金。

    所以,为了保护用户的安全性,应该对越狱的手机,取消其支付功能。


7.2、判断设备是否越狱一:通过手机越狱后增加的越狱文件判断,判断这些文件是否存在,只要有存在的,就可以认为手机已经越狱了。


const char* jailbreak_tool_pathes[] = {
   "/Applications/Cydia.app",
   "/Applications/limera1n.app",
   "/Applications/greenpois0n.app",
   "/Applications/blackra1n.app",
   "/Applications/blacksn0w.app",
   "/Applications/redsn0w.app",
   "/Applications/Absinthe.app",
   "/Library/MobileSubstrate/MobileSubstrate.dylib",
   "/bin/bash",
   "/usr/sbin/sshd",
   "/etc/apt",
   "/private/var/lib/apt/",
   NULL,
 };

+(BOOL)isJailBreak1
{
     for (int i=0; i<array_size(jailbreak_tool_pathes); i++) {
         if ([[NSFileManager defaultManager] fileExistsAtPath:[NSString stringWithUTF8String:jailbreak_tool_pathes[i]]]) {
             NSLog(@"The device is jail broken!");
             return YES;
         }
      }
     NSLog(@"The device is NOT jail broken!");
     return NO;
}
</array_size(jailbreak_tool_pathes); i++) {


7.3、判断设备是否越狱二:根据是否能打开cydia判断(判断cydia的URL scheme


URL scheme是可以用来在应用中呼出另一个应用,这个方法也就是在判定是否存在cydia这个应用。)


+(BOOL)isJailBreak2{

    if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"cydia://"]]) {
          NSLog(@"The device is jail broken!");
          return YES;
    }
    NSLog(@"The device is NOT jail broken!");
    return NO;
}


7.4、判断设备是否越狱三:根据是否能获取所有应用的名称判断,没有越狱的设备是没有读取所有应用名称的权限的


+(BOOL)isJailBreak3{
    if ([[NSFileManager defaultManager] fileExistsAtPath:@"User/Applications/"]) {
        NSLog(@"The device is jail broken!");
        NSArray *appList = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:@"User/Applications/" error:nil];
        NSLog(@"appList = %@", appList);
        return YES;
     }
     NSLog(@"The device is NOT jail broken!");
     return NO;
}


7.5、判断设备是否越狱四:根据使用stat方法来判断cydia是否存在来判断,这个方法的思路还是通过判定cydia应用,但方法是使用stat函数,同时会判断是否有注入动态库。


#import   
+(BOOL)isJailBreak4
{
   struct stat stat_info;
   if (0 == stat("/Applications/Cydia.app", &stat_info)) {
      NSLog(@"Device is jailbroken");
      return YES;
   }

   return NO;
}


7.6、判断设备是否越狱五:攻击者可能会利用 Fishhook原理 hook了stat。那么,你可以看看stat是不是出自系统库,有没有被攻击者换掉:


#import   

+(BOOL)isJailBreak5
{
   int ret ;
   Dl_info dylib_info;
   int (*func_stat)(const char *, struct stat *) = stat;
   if ((ret = dladdr(func_stat, &dylib_info))) {
        NSLog(@"lib :%s", dylib_info.dli_fname);
        return YES;
   }
   return NO;
}


7.7、判断设备是否越狱六:读取环境变量这个DYLD_INSERT_LIBRARIES环境变量,在非越狱的机器上应该是空,越狱的机器上基本都会有Library/MobileSubstrate/MobileSubstrate.dylib


char* printEnv(void) {
   char *env = getenv("DYLD_INSERT_LIBRARIES");
   return env;
}
+(BOOL)isJailBreak6{
   if (printEnv()) {
      NSLog(@"The device is jail broken!");
      return YES;
   }
   NSLog(@"The device is NOT jail broken!");
   return NO;
}


八、提高工作效率的工具


8.1、Alfred(便捷搜索与工作流使用)   推荐博客,在博客里面有很多的使用方法介绍



8.2、XtraFinder(增强型Finder)


8.3、iTerm2博客1 与iTerm2博客2,里面有安装以及介绍, 配色方案OhMyZsh,安装,主题配置方法、 Mac OS 终端利器 iTerm2配置大全


8.4、Go2Shell下载地址:从Finder快速定位到命令行工具


作者:IIronMan

链接:https://www.jianshu.com/p/6cd12f559dcd

本公众号转载内容已尽可能注明出处,如未能核实来源或转发内容图片有权利瑕疵的,请及时联系本公众号进行修改或删除【联系方式QQ : 3442093904  邮箱:support@cocoachina.com】。文章内容为作者独立观点,不代表本公众号立场。版权归原作者所有,如申请授权请联系作者,因文章侵权本公众号不承担任何法律及连带责任。

---END---


登录查看更多
0

相关内容

Cydia - Wikipedia Cydia (pron.: /sɪˈdi.ə/) is a software application for iOS that enables a user to find and install software packages on jailbroken iOS Apple devices such as the iPhone. It also refers to digital distribution platform for software on iOS accessed through Cydia software Some of the software packages available through Cydia are free, and some require purchasing.
【2020新书】实战R语言4,323页pdf
专知会员服务
100+阅读 · 2020年7月1日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
234+阅读 · 2020年5月21日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
【斯坦福大学】Gradient Surgery for Multi-Task Learning
专知会员服务
46+阅读 · 2020年1月23日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
87+阅读 · 2019年11月25日
MIT新书《强化学习与最优控制》
专知会员服务
275+阅读 · 2019年10月9日
教程 | 从零开始搭建『深度学习』GPU开发环境
机器学习算法与Python学习
8+阅读 · 2019年10月28日
用 Python 开发 Excel 宏脚本的神器
私募工场
26+阅读 · 2019年9月8日
AWVS12 V12.0.190530102 windows正式版完美破解版
黑白之道
29+阅读 · 2019年8月24日
无人驾驶仿真软件
智能交通技术
21+阅读 · 2019年5月9日
7 款实用到哭的App,只说一遍
高效率工具搜罗
84+阅读 · 2019年4月30日
从webview到flutter:详解iOS中的Web开发
前端之巅
5+阅读 · 2019年3月24日
逆向 | C++ 加壳程序的编写思路
计算机与网络安全
9+阅读 · 2019年1月1日
iOS高级调试&逆向技术
CocoaChina
3+阅读 · 2017年7月30日
Learning to See Through Obstructions
Arxiv
7+阅读 · 2020年4月2日
Arxiv
3+阅读 · 2018年4月18日
VIP会员
相关VIP内容
【2020新书】实战R语言4,323页pdf
专知会员服务
100+阅读 · 2020年7月1日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
234+阅读 · 2020年5月21日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
【斯坦福大学】Gradient Surgery for Multi-Task Learning
专知会员服务
46+阅读 · 2020年1月23日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
87+阅读 · 2019年11月25日
MIT新书《强化学习与最优控制》
专知会员服务
275+阅读 · 2019年10月9日
相关资讯
教程 | 从零开始搭建『深度学习』GPU开发环境
机器学习算法与Python学习
8+阅读 · 2019年10月28日
用 Python 开发 Excel 宏脚本的神器
私募工场
26+阅读 · 2019年9月8日
AWVS12 V12.0.190530102 windows正式版完美破解版
黑白之道
29+阅读 · 2019年8月24日
无人驾驶仿真软件
智能交通技术
21+阅读 · 2019年5月9日
7 款实用到哭的App,只说一遍
高效率工具搜罗
84+阅读 · 2019年4月30日
从webview到flutter:详解iOS中的Web开发
前端之巅
5+阅读 · 2019年3月24日
逆向 | C++ 加壳程序的编写思路
计算机与网络安全
9+阅读 · 2019年1月1日
iOS高级调试&逆向技术
CocoaChina
3+阅读 · 2017年7月30日
Top
微信扫码咨询专知VIP会员