mac OS与iOS的系统调用

系统调用在mac OS 操作系统上 x86_64 使用syscall,32位使用 int 0x80。
中断号定义在#import <sys/syscall.h>

syscall.h

#ifndef _SYS_SYSCALL_H_
#define	_SYS_SYSCALL_H_

#include <sys/appleapiopts.h>
#ifdef __APPLE_API_PRIVATE
#define	SYS_syscall        0
#define	SYS_exit           1
#define	SYS_fork           2
#define	SYS_read           3
#define	SYS_write          4
#define	SYS_open           5
#define	SYS_close          6
#define	SYS_wait4          7

调用分几种
syscall_sw.h的定义

#define SYSCALL_CLASS_NONE	0	/* Invalid */
#define SYSCALL_CLASS_MACH	1	/* Mach */	
#define SYSCALL_CLASS_UNIX	2	/* Unix/BSD */
#define SYSCALL_CLASS_MDEP	3	/* Machine-dependent */
#define SYSCALL_CLASS_DIAG	4	/* Diagnostics */
#define SYSCALL_CLASS_IPC	5	/* Mach IPC */

/* Macros to simpllfy constructing syscall numbers. */
#define SYSCALL_CONSTRUCT_MACH(syscall_number) \
			((SYSCALL_CLASS_MACH << SYSCALL_CLASS_SHIFT) | \
			 (SYSCALL_NUMBER_MASK & (syscall_number)))
#define SYSCALL_CONSTRUCT_UNIX(syscall_number) \
			((SYSCALL_CLASS_UNIX << SYSCALL_CLASS_SHIFT) | \
			 (SYSCALL_NUMBER_MASK & (syscall_number)))
#define SYSCALL_CONSTRUCT_MDEP(syscall_number) \
			((SYSCALL_CLASS_MDEP << SYSCALL_CLASS_SHIFT) | \
			 (SYSCALL_NUMBER_MASK & (syscall_number)))
#define SYSCALL_CONSTRUCT_DIAG(syscall_number) \
			((SYSCALL_CLASS_DIAG << SYSCALL_CLASS_SHIFT) | \
			 (SYSCALL_NUMBER_MASK & (syscall_number)))

对于Mach调用,调用的中断号是:中断号+ (1<<24)
对于Unix调用,调用的中断号是:中断号+ (2<<24)
exit的中断号是1,所以调用时的rax参数是0x2000001。
rdi是调用exit()的参数

libsystem_kernel.dylib`mach_msg_trap:
0x7fff6bf982b0 <+0>: movq %rcx, %r10
0x7fff6bf982b3 <+3>: movl $0x2000001f, %eax ; imm = 0x2000001F
0x7fff6bf982b8 <+8>: syscall
-> 0x7fff6bf982ba <+10>: retq
0x7fff6bf982bb <+11>: nop

   rax = 0x0000000002000001
   rbx = 0x0000000000000003
   rcx = 0x0000000000000000
   rdx = 0x0000000000000000
   rdi = 0x0000000000000003
   rsi = 0x0000000000000000

arm64上,x16保存调用号,svc #0x80表示系统调用,x0表示调用的参数

libsystem_kernel.dylib`mach_msg_trap:
0x1b967855c <+0>: mov x16, #-0x1f
0x1b9678560 <+4>: svc #0x80
-> 0x1b9678564 <+8>: ret

    x0 = 0x0000000000000003
    x1 = 0x0000000000000000
    x2 = 0x00000000000120a8
    x3 = 0x00000001dc14d440  __sF + 304
    x4 = 0x000000018d8e9a08  libsystem_c.dylib`_none_wcrtomb
    x5 = 0x000000016f502db0
    x6 = 0x000000016f503140
    x7 = 0x0000000000000f60
    x8 = 0x0000000000000000
    x9 = 0x00000000dc14d4b7
   x10 = 0x0000000000000000
   x11 = 0x0000000000000002
   x12 = 0x0000000000000002
   x13 = 0x0000000000000000
   x14 = 0x0000000000000001
   x15 = 0x0000000000000002
   x16 = 0x0000000000000001
   x17 = 0x000000018d8dcd98  libsystem_c.dylib`_cleanup
   x18 = 0x0000000000000000
   x19 = 0x0000000000000003
   x20 = 0x0000000100e043b0
   x21 = 0x00000001d94d5000  UIKitCore`UIUserNotificationAction._parameters
   x22 = 0x0000000000000001
   x23 = 0x0000000000000000
   x24 = 0x000000002b870064
   x25 = 0x0000000000000000
   x26 = 0x00000001cd97ff71  
   x27 = 0x0000000000000010
   x28 = 0x00000001d94c1000  (void *)0x00000001dc1be1e0: _UIVisualEffectSubview
    fp = 0x000000016f502f10
    lr = 0x000000018d8de280  libsystem_c.dylib`signal__
    sp = 0x000000016f502f00
    pc = 0x00000001b93d9dac  libsystem_kernel.dylib`__exit + 4
  cpsr = 0x60000000

https://github.com/apple/darwin-xnu/blob/main/osfmk/mach/syscall_sw.h
https://opensource.apple.com/source/xnu/xnu-1504.3.12/bsd/kern/syscalls.master
https://www.bilibili.com/read/cv9033324
https://opensource.apple.com/source/xnu/xnu-4570.1.46/osfmk/mach/i386/syscall_sw.h.auto.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
稀缺资源 iOS应用逆向工程: 分析与实战是iOS应用逆向工程方面的权威著作,三位作者都是iOS领域内的专家,拥有扎实的理论知识和丰富的实践经验。本书内容以工具+代码的形式全面、系统地展开知识点,由浅入深,图文并茂地带着读者一步步探索常规iOS App之外的世界。 《iOS应用逆向工程:分析与实战》分为四大部分,分别是概念、工具、理论和实战。前三部分介绍iOS逆向分析领域的背景、知识体系,以及相应的工具集、理论知识;第四部分则通过4个实际案例来将前面的知识以实战的方式展开。第一部分为概念篇,简单介绍iOS逆向分析的概念以及iOS平台系统架构。第二部分为工具篇,介绍一系列基于MaciOS平台的配套工具,并且重点讲解其中的class-dump、Theos、Reveal、IDA、GDB等5个工具的使用方法,前3个侧重于使用,后2个侧重于分析。第三部分为理论篇,主要讲述iOS逆向/越狱方向的进阶必备理论知识。第四部分为实战篇,通过对3个App Store App及1个系统App进行逆向分析的实战操作,让读者能够了解并同步实践已掌握的知识。 iOS应用逆向工程:分析与实战 目录: 推荐序一 推荐序二 自序 前言 第一部分 概念篇 第1 章  iOS 逆向工程简介 2 1.1  iOS 软件逆向工程的要求 2 1.2  iOS 软件逆向工程的作用 2 1.2.1  与安全相关的iOS 逆向工程 4 1.2.2  与开发相关的iOS 逆向工程 5 1.3  iOS 软件逆向工程的一般过程 6 1.3.1  系统分析 7 1.3.2  代码分析 7 1.4  iOS 软件逆向工程用到的工具 8 1.4.1  监测工具 8 1.4.2  开发工具 9 1.4.3  反编译器 9 1.4.4  调试器 10 1.5  小结 11 第2 章 越狱iOS 平台简介 12 2.1  iOS 系统架构 12 2.1.1  iOS 目录结构 13 2.1.2  iOS 文件权限 15 2.2  iOS 程序类型 16 2.2.1  Application 16 2.2.2  Dynamic Library 19 2.2.3  Daemon 19 2.3  小结 20 第二部分 工具篇 第3 章 Mac 工具集 22 3.1  class-dump 22 3.1.1  class-dump 介绍及下载 22 3.1.2  class-dump 使用演示 23 3.1.3  关于class-dump 的补充说明 25 3.2  Theos 25 3.2.1  Theos 简介 25 3.2.2  Theos 安装及编译 26 3.2.3  Theos 用法简介 28 3.2.4  Theos 开发tweak 示例 47 3.3  Reveal 49 3.3.1  Reveal 简介 49 3.3.2  Reveal 安装及功能扩展 50 3.4  IDA 55 3.4.1  IDA 简介 55 3.4.2  IDA 使用说明 56 3.4.3  IDA 分析示例 65 3.5  其他工具 68 3.5.1  iTools 68 3.5.2  dyld_decache 69 3.5.3  MesaSQLite 69 3.6  小结 70 第4 章 iOS 工具集 71 4.1  SBSettings 71 4.2  MobileSubstrate 72 4.3  OpenSSH 73 4.4  GDB 74 4.4.1  GDB 简介 74 4.4.2  GDB 的使用说明 74 4.5  Cycript 85 4.6  其他常用工具 88 4.6.1  BigBoss RecommendedTools 88 4.6.2  AppCrackr 88 4.6.3  iFile 89 4.6.4  MobileTerminal 89 4.6.5  Vi IMproved 90 4.6.6  SQLite 90 4.6.7  top 91 4.6.8  syslogd 92 4.7  小结 92 第三部分 理论篇 第5 章  Objective-C 相关的iOS逆向理论基础 94 5.1  tweak 的作用原理 94 5.1.1  Objective-C 语言的特性 94 5.1.2  MobileSubstrate 96 5.2  tweak 的编写套路 97 5.2.1  灵感的来源 98 5.2.2  分析文件,寻找切入点 99 5.2.3  定位目标函数 102 5.2.4  测试函数功
Mac OS X 是苹果公司开发的一款操作系统,它是基于Unix的。相比于Windows操作系统Mac OS X 具有许多独特的特性和功能。 首先,Mac OS X 有一个优雅和直观的用户界面,被认为是目前最美观的操作系统之一。其图标和风格具有一致性,给人一种整洁和高端的感觉。另外,Mac OS X 中的应用程序和窗口管理方式也十分灵活,用户可以通过多个桌面空间来组织和管理自己的工作区域。 其次,Mac OS X 是一个稳定且高效的操作系统。它采用了一种称为“内核级虚拟内存”的技术,可以将计算机的物理内存和硬盘空间结合起来使用,从而提供更高的性能和更好的系统稳定性。此外,Mac OS X 还针对图形和多媒体处理进行了优化,所以很适合专业人士和创意工作者使用。 另外,Mac OS X 还提供了许多方便的功能和工具。例如,Spotlight 搜索功能可以快速找到文件和应用程序,Time Machine 可以自动进行系统备份,Mission Control 可以方便地查看和切换不同应用程序和窗口等。这些功能使得用户在使用操作系统时更加高效和便捷。 此外,Mac OS X 还具有强大的安全性。它自带了防火墙和病毒扫描功能,而且在系统更新中定期修复已知的安全漏洞。这使得Mac OS X 成为一个非常可靠和安全的操作系统。 总而言之,Mac OS X 是一个功能强大、稳定且具有高端设计的操作系统。它提供了许多优秀的功能和工具,可以满足用户的个性化和专业化需求。无论是用于日常办公还是进行创意工作,Mac OS X 都可以为用户提供出色的使用体验。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值