0%

iOS攻防——(一)ssh登陆与交叉编译

简介

iOS攻防系列大家耳熟能详的是我们iOS女神念茜的系列文章。博主在看了之后也进行了一系列的学习和尝试。念茜的文章写的比较早,有很多文章中提到的东西已经不再适合现在使用,写的也不算详细,很多地方一笔带过,却不是那么好探索。在中间也有很多摸索的过程。
所以本系列文章算是对念茜iOS攻防系列的一个补充,中间细节的地方也会写的更加详尽。

你需要一部越狱手机

首先要做的事,找一部越狱后的iPhone,攻防方面的探索很多需要借助越狱手机的帮助。作为平常的消遣和研究你也应该有一部越狱手机,我的越狱手机是iPhone4,比较古老,但是研究够用了。

前期准备

首先是手机(前面说过了)。其次,越狱手机大家都知道一个app——Cydia,在上面可以下载所有的越狱APP,相当于越狱后的app store。对于iOS攻防,首先需要以下软件:

  1. openSSH
  2. LLVM+Clang

可能还需要的软件:

  1. Cydia Translations
  2. Cydia Substrate
  3. Cydia Installer

这些软件都可以在Cydia下载到,如果你搜索不到,那么你需要添加一些源
在Cydia的软件源中点击『编辑』->『添加』,依次添加以下源

  1. http://yuan.duowan.com - 多玩源
  2. http://apt.thebigboss.org/repofiles/cydia/



hacking

1. ssh登陆手机

ssh登陆,大家应该不算陌生,如果你第一次听说,你可以简单理解成『远程登录』,可以通过一台设备远程登陆另一台设备。

  1. 保证你的Mac和iPhone在同一网段
  2. 确定iPhone的IP
  3. 远程登陆

在你mac的Terminal输入

1
ssh root@xxx.xxx.xxx.xxx

接着会提醒你是否连接,输入yes继续,输入密码,初始密码是alpine
建议你将改密码改掉,因为这样很不安全,在默认密码的情况下,任何人都可以尝试登陆你的设备。
在登录之后,你可以更改你的密码:

1
passwd root

ssh登陆后,可以试着看看手机的目录结构

2. 交叉编译

首先解释一下什么是交叉编译。交叉编译指在一个平台上生成另一个平台上的可执行代码。
我们将会在MAC上写代码,但要生成的可执行文件需要在iPhone上运行。
编译是由编译器完成的,所以我们首先要找到合适的编译器。

我们本次的任务就是写一个简单的C程序,能在iPhone上跑的C程序。

念茜所提到的arm-apple-darwin10-llvm-gcc-4.2我是没有找到的,因为这东西好像是在Xcode5的时候才有。

我用的是Clang,所以我们需要下载一下Clang。Clang是一个C语言、C++、Objective-C、C++语言的轻量级编译器。这里是传送门

1. 写经典HelloWorld

1
2
3
4
5
#include                                                                                               
int main(){
printf("Hello world !!!\n");
return 0;
}

2. 编译

命令台编译:

1
2
3
4
touch helloworld.c
open helloworld.c
...(写一下代码)
xcrun -sdk iphoneos clang -arch armv7 -o helloworld helloworld.c

用过自动打包ipa的同学都对xcrun和xcodebuild很熟悉。这与打包过程类似。

格式:xcrun -sdk iphoneos clang -arch armv7 -o [目标文件名] [源文件名]

生成可在iPhone平台运行的二进制可执行文件

3. 放到iPhone中

通过ssh文件传输将helloworld传到iPhone中

1
scp helloworld root@192.168.31.152:helloworld

再看一下iPhone文件目录,是不是已经有了helloworld

运行一下:

Bingo!

如果你继续玩,你会发现其实你的iPhone就是一个类Linux系统(本来就是Unix~~),你可以随便玩。

补充知识

1. 重置ssh登陆密码

如果你不幸忘记了ssh密码,可以在Cydia中下载ifile软件,通过ifile找到/private/etc/master.password文件,文件中会有以下一段:

root:xxxxxxxxxxxxx:0:0::0:0:System
Administrator:/var/root:/bin/sh
mobile:xxxxxxxxxxxxx:501:501::0:0:Mobile
User:/var/mobile:/bin/sh

将root:及mobile:后面的13个x字符处修改成/smx7MYTQIi2M,修改后保存此文件,你iphone的ssh密码就重新回到默认的alpine

下期内容

只是写个HelloWorld是不是很无聊,下一期内容将会教你如何非法窃取iTunesstore信息以及Cycript修改运行时


有什么问题都可以在博文后面留言,或者微博上私信我。

博主是 iOS 妹子一枚。

希望大家一起进步。

我的微博:Lotty周小鱼