【iOS越狱开发】iOS越狱步骤2之SSH连接

5 篇文章 0 订阅
3 篇文章 0 订阅

我们需要通过Mac终端上,然后敲一下命令行来完成一些操作,从而操控越狱的iPhone,所以需要Mac和iPhone建立连接。建议使用iTerm

在这里插入图片描述
示意图:
在这里插入图片描述

一、OpenSSH安装

  • 在iPhone上通过Cydia安装OpenSSH工具(软件源:http://apt.saurik.com)
    在这里插入图片描述

二、使用OpenSSH远程登录 - 使用步骤 wifi连接

  • SSH是通过TCP协议通信,所以要确保Mac和iPhone在同一局域网下,比如连接着同一个WiFi

  • 步骤:

    1. 确保Mac和iPhone连接同一个WiFi
    2. 在Mac终端输入:ssh root@128.1.1.168(这里的ip是手机上的,可自行查看)
    3. 初始密码alpine
  • 登录成功后就可以使用命令操控越狱手机了

  • 登录后可修改用户的登录密码,在命令行输入:passwd

  • 退出登录命令:exit

三、服务器身份信息变更

  • 在建立连接的时候,可能会遇到连接错误,提示服务器的身份信息发生了变更,如下图:
    在这里插入图片描述

  • 如果确认要连接此服务器,删除之前服务器的公钥信息就行
    ssh-keygen -R 服务器IP地址

  • 或者直接打开known_hosts文件删除服务器的公钥信息就行
    vim ~/.ssh/known_hosts

四、使用usb登录iPhone

  • 一般我们都是通过usb去连接越狱手机来调试的,因为这样调试速度会相对快
  • iPhone默认是使用22端口进行SSH通信,采用的是TCP协议,wifi连接
    在这里插入图片描述
  • 然后我们需要通过Mac上的usbmuxd(它是mac上自带的,开机自动启动),可以将Mac的数据通过USB传输到iPhone:

在这里插入图片描述

  • 将iPhone的22端口(SSH端口)映射到Mac本地的10010端口
    阿尔法

    1. cd ~/Documents/usbmuxd
    2. python tcprelay.py -t 22:10010
  • 注意:要想保持端口映射状态,不能终止此命令行(如果要执行其他终端命令行,请新开一个终端界面)

  • 不一定非要10010端口,只要不是保留端口就行

  • 新开一个终端界面,SSH登录到Mac本地的10010端口(以下方式2选1)

    1. ssh root@localhost -p 10010
    2. ssh root@127.0.0.1 -p 10010

    localhost是一个域名,指向的IP地址是127.0.0.1,本机虚拟网卡的IP地址

  • usbmuxd会将Mac本地10010端口的TCP协议数据,通过USB连接转发到iPhone的22端口

  • 这些执行命令,大家可以弄成sh脚本,然后直接执行,方便快捷,不用每次都敲一大丢东西。

后续继续更新~请关注!!

邮箱2596631084@qq.com
v:Jun_Yeong-Huang

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
iOS越狱开发中,常用的Hook检测包括以下几种: 1. 检测当前进程是否被其他进程注入 ``` void anti_injection() { char path[1024]; int ret = proc_pidpath(getpid(), path, sizeof(path)); if (ret <= 0) { NSLog(@"anti_injection: proc_pidpath failed"); exit(1); } if (strstr(path, "/Library/MobileSubstrate") != NULL) { NSLog(@"anti_injection: MobileSubstrate detected"); exit(1); } if (strstr(path, "/Library/Frameworks/CydiaSubstrate.framework") != NULL) { NSLog(@"anti_injection: CydiaSubstrate detected"); exit(1); } } ``` 2. 检测是否被调试 ``` void anti_debugging() { int name[4]; struct kinfo_proc info; size_t info_size = sizeof(info); name[0] = CTL_KERN; name[1] = KERN_PROC; name[2] = KERN_PROC_PID; name[3] = getpid(); if (sysctl(name, 4, &info, &info_size, NULL, 0) == -1) { NSLog(@"anti_debugging: sysctl failed"); exit(1); } if (info.kp_proc.p_flag & P_TRACED) { NSLog(@"anti_debugging: traced"); exit(1); } } ``` 3. 检测是否被hook ``` void anti_hooking() { const char *functionName = "ptrace"; void *handle = dlopen("/usr/lib/libc.dylib", RTLD_GLOBAL | RTLD_NOW); if (handle == NULL) { NSLog(@"anti_hooking: dlopen failed"); exit(1); } void *ptrace_func = dlsym(handle, functionName); if (ptrace_func == NULL) { NSLog(@"anti_hooking: dlsym failed"); exit(1); } if (ptrace_func != (void *)&ptrace) { NSLog(@"anti_hooking: hook detected"); exit(1); } } ``` 4. 检测是否被注入Cycript等调试工具 ``` void anti_cycript() { char *cycript = strstr(getenv("DYLD_INSERT_LIBRARIES"), "cycript"); if (cycript != NULL) { NSLog(@"anti_cycript: cycript detected"); exit(1); } } ``` 此外,还可以在代码中添加闪退检测断点,当程序发生闪退时就可以打断点进行调试,例如: ``` void crash_handler(int signal) { signal(SIGTRAP, NULL); NSLog(@"crash_handler: signal=%d", signal); exit(1); } void set_crash_handler() { signal(SIGTRAP, crash_handler); } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值