iOS-底层原理 01:源码探索的三种方式

简介: iOS-底层原理 01:源码探索的三种方式

本文主要介绍下源码探索的三种方法



  • 1、符号断点直接跟流程
  • 2、通过按住control+step into
  • 3、汇编跟流程


下面详细讲下这三种方法是如何查找到函数所在的源码库,以alloc为例


1、符号断点直接跟流程


  • 通过下alloc的符号断点
  • 选择断点Symbolic Breakpoint

image.png


  • 符号断点中输入 alloc

image.png


  • main中的CJLPerson处 加一个断点
    在走到这部分断点之前,需要关闭上面新增的符号断点,原因是因为alloc的调用有很多,如果开启了就不能准确的定位到CJLPersonalloc方法

image.png

以下为符号断点的关闭状态

image.png

运行程序, 断在CJLPerson部分


  • 打开 alloc符号断点 ,断点状态为

image.png


  • 继续执行

image.png

以下为alloc符号断点断住的堆栈调用情况,从下图可以看出 alloc 的源码位于libobjc.A.dylib库(需要去Apple 相应的开源网址下载 objc源码进行更深入的探索)


image.png


2、通过按住control+step into


  • main中的CJLPerson处 加一个断点,运行程序,会断在CJLPerson位置

image.png

  • 按住 control键,选择 step into ⬇️键

image.png


  • 进去后,显示为以下内容

image.png


  • 再下一个objc_alloc符号断点,符号断点后显示了 objc_alloc所在的源码库
    (需要去Apple 相应的开源网址下载 objc源码进行更深入的探索)

image.png


3、汇编跟流程


  • main中的CJLPerson处 加一个断点,运行程序,会断在CJLPerson位置
    image.png


  • xcode 工具栏 选择 Debug --> Debug Workflow --> Always Show Disassembly,这个 选项表示 始终显示反汇编 ,即 通过汇编 跟流程

image.png

image


  • 按住control,点击 step into ⬇️键,执行到下图的callq ,对应 objc_alloc

image.png


  • 按住control,点击 step into ⬇️键进入,看到断点断在objc_alloc部分

image.png

样通过objc_alloc的符号断点,得知源码所在库

(需要去Apple 相应的开源网址下载 objc源码进行更深入的探索)

image.png

注意(以下是Apple 提供的源码下载地址):

1、Apple 所有开源源码汇总地址,根据相应的版本查找对应的源码,以mac 10.15为例: macOS --> 10.15 --> 选择10.15 --> 搜索 objc

2、Apple 比较直接的源码下载地址,直接搜索想要下载的源码名称即可,例如objc直接搜索 objc --> objc4/ --> 选择相应的objc的版本


相关文章
|
1月前
|
存储 运维 安全
iOS加固原理与常见措施:保护移动应用程序安全的利器
iOS加固原理与常见措施:保护移动应用程序安全的利器
47 0
|
1月前
|
移动开发 前端开发 数据安全/隐私保护
【工具】iOS代码混淆工具-iOS源码混淆
【工具】iOS代码混淆工具-iOS源码混淆
48 1
|
1月前
|
移动开发 前端开发 安全
最强大的 iOS 应用源码保护工具:Ipa Guard,保护你的商业机密代码
最强大的 iOS 应用源码保护工具:Ipa Guard,保护你的商业机密代码
|
1月前
|
存储 运维 安全
iOS加固原理与常见措施:保护移动应用程序安全的利器
iOS加固原理与常见措施:保护移动应用程序安全的利器
56 0
|
9月前
|
移动开发 安全 前端开发
最强大的iOS应用源码保护工具:Ipa Guard,保护你的商业机密代码
iOS加固保护是直接针对ios ipa二进制文件的保护技术,可以对iOS APP中的可执行文件进行深度混淆、加密。使用任何工具都无法逆向、破解还原源文件。对APP进行完整性保护,防止应用程序中的代码及资源文件被恶意篡改。Ipa Guard通过修改 ipa 文件中的 macho 文件中二进制数据(代码模块配置)进行操作,无需源码。不限定开发技术平台。支持oc,swift,cocos2d-x、unity3d、quick-cocos,html5 ,react native等等各种开发技术。Ipa Guard主要包含代码混淆全面、资源文件处理、不需要源代码更安全、调试信息清理、即时测试运行。
|
10月前
|
监控 Android开发 iOS开发
盘点一对一直播源码iOS系统维持平台稳定功能(一):弹性扩缩容
参考代码:弹性扩缩容如何实现?System.out.println("扩容:增加直播平台实例"); currentCapacity++; } private void scaleDown() { System.out.println("缩容:减少直播平台实例");
盘点一对一直播源码iOS系统维持平台稳定功能(一):弹性扩缩容
|
9月前
|
C语言 索引
09-iOS之load和initialize底层调用原理分析
09-iOS之load和initialize底层调用原理分析
66 0
|
15天前
|
Linux 数据库 iOS开发
超级签名源码/超级签/ios分发/签名端本地linux服务器完成签名
该系统完全在linux下运行,不存在使用第三方收费工具,市面上很多系统都是使用的是第三方收费系统,例如:某心签名工具,某测侠等,不开源而且需要每年交费,这种系统只是在这些工具的基础上套了一层壳。请需要系统的放大你们的眼睛。
15 0
|
1月前
|
安全 前端开发 数据安全/隐私保护
【教程】 iOS混淆加固原理篇
本文介绍了iOS应用程序混淆加固的缘由,编译过程以及常见的加固类型和逆向工具。详细讨论了字符串混淆、类名、方法名混淆、程序结构混淆加密等加固类型,并介绍了常见的逆向工具和代码虚拟化技术。
|
1月前
|
安全 算法 前端开发
【完整版教程】iOS混淆加固原理篇
在iOS开发中,应用程序的安全性和保护显得尤为重要。由于iOS系统的开放性,一些逆向工具可以轻松地对应用程序进行反编译和分析,从而导致应用程序源代码、算法和敏感信息的泄露。为了保护应用程序的安全性,我们需要对应用程序进行混淆加固。本文将介绍iOS混淆加固的原理和常见的加固类型。