在前面的文章中,已经对引用计数以及其在开发中的使用做了初步了解。在本篇中,我们将会深入阐述苹果对引用计数这个技术的底层实现。

本文涉及到的objc源码,来自于objc源码,版本是723,文中涉及大量源码,均做删减,主要对加锁部分进行删减。

导读:

  1. 对源码解读部分,若觉得源码冗余,每一步解读最后都有总结,可直接看总结。
  2. 第五部分-图总结了引用计数相关的图。
阅读全文 »

本文主要研究Tagged Pointer技术,针对该技术需要解决的问题、以及在实际应用中的价值做一些简单的探讨。

如果你想要更进一步,去挖掘Tagged Pointer是如何实现的,可以参考Friday Q&A 2012-07-27: Let’s Build Tagged Pointersobjc源码

另外,本文中涉及到的示例代码,请在真机iOS设备上测试,因为Tagged Pointer技术针对不同的平台,具体实现细节是有差异的,否则无法得出和本文一致的测试结果。

阅读全文 »

本文将会先对iOS 内存管理涉及到一些基础的概念、技术,进行简单描述,我们将在后面系列篇章中对相关知识点进行更为深入的探讨。

一、iOS 内存管理

​ iOS 内存管理,或者说任何一门语言的内存管理,都是程序员必须深刻理解,也是各种面试中最常见的话题。

​ iOS 内存管理中,在iOS 5以前,需要手动管理内存,即MRC(Manual Reference Counting)。

​ 2011年,苹果推出了ARC(Automatic Reference Counting)技术,程序员不再需要手动管理内存,对开发效率的提升以及App的稳定性都有了显著提升。

​ 不管是MRC,还是ARC,苹果内存管理的本质保持不变——就是OC对象的引用计数的管理。引用计数的概念同C++的智能指针概念很类似,编译期以及运行时会帮助我们自动来维护一个对象的生与死

​ 所以说,引用计数是iOS 内存管理的根基所在,所有和内存管理相关的最后都是引用计数的问题。

阅读全文 »

阅读本文前,请确保具有加密和签名的基础,可以查阅iOS安全(二)加密与签名

一、iOS签名机制

iOS签名机制的作用,就是保证安装到用户手机上的App都是经过Apple官方审核、认证、允许部分权限的。

不管是真机调试,还是发布APP,开发者都需要经过一系列复杂的步骤

☞ 生成CertificateSigningRequest.certSigningRequest文件

☞ 生成并获取ios_development.cerios_distribution.cer证书文件

☞ 添加App ID、注册device

☞ 生成并获取*.mobileprovision文件

阅读全文 »

一、说明

本文收集相关命令用于方便查询。仅供参考。

二、命令

clang

1
2
3
4
5
//编译代码
$ clang -framework Foundation Calculator.m main.m -o prog
//编译
$ clang -fobjc-arc –framework Foundation filename.m -o output_filename

阅读全文 »

一、什么是动态调试

将运行起来的程序,通过断点、打印等方式,查看参数、返回值、函数调用流程等。

1.1 Xcode调试APP的原理

Xcode中内置LLDB调试器,通过与iPhone连接,在iPhone安装debugserver的程序,debugserver与LLDB互相通信,发送调试指令和接收结果,debugserver与App之间互相通信,发送指令和接受结果。

阅读全文 »

一、加壳

利用特殊的算法,对可执行文件的编码进行改变(比如压缩、加密),以达到保护程序代码的目的。

屏幕快照 2018-10-29 20.55.44

屏幕快照 2018-10-29 20.57.02

阅读全文 »

一、逆向流程

1.1 界面分析

  1. Cycript:界面分析语言,使用Objective-C 和 Javascript调试App。这部分已经在上一篇逆向(二)Cycript中作过论述。
  2. Reveal:界面分析工具,非常强大和方便。

1.2 代码分析

对Mach-O文件的静态分析,有以下工具:

  1. class-dump:脱壳工具,将在下一篇逆向(四)脱壳中讲述。

  2. MachOView:Mach-O查看工具

  3. Hopper Disassembler、ida是反汇编工具。能直接进行代码的改写。

阅读全文 »

一、越狱

iOS Jailbreak(iOS越狱),利用iOS系统的漏洞,获取iOS系统的最高权限(Root),解开之前的各种限制(合法行为)

  • 完美越狱

越狱后的iPhone可以正常关机和重启

  • 不完美越狱

iPhone一旦关机后再开机时,屏幕就会一直停留在启动画面,也就是“白苹果”状态,或者能正常开机,但已经安装的破解软件都无法正常使用,需要将设备与PC连接后,使用软件进行引导才能使用。

阅读全文 »