摘要:
Xcode6 之前会在 Supporting Files 文件夹下自动生成一个“工程名-PrefixHeader.pch”的预编译头文件,pch 头文件的内容能被项目中的其他所有源文件共享和访问。Xcode 6.0之后则需要手动创建。一、作用①、定义全局性宏;②、引用全局性头文件;③、根据运行环境,自动打开或者关闭日志输出功能。二、优点①、PCH 文件的内容能被项目中的其他所有文件共享和访问,其它... 阅读全文
摘要:
一、常规文件操作 常规文件操作(read/write)有那几个重要步骤: 进程发起读文件请求 内核通过查找进程文件符表,定位到内核已打开文件集上的文件信息,从而找到此文件的 inode inode 在 address_space 上查找要请求的文件页是否已经缓存在内核页高速缓冲中。如果存在,则直接返 阅读全文
摘要:
一、前言1.1 程序和进程广义上的程序就是一个静态的可执行文件,是由一个已经编译好的指令和数据集合的一个文件。就像通过 Xcode 编译好的 Mach-O 文件。而进程则是一个动态的概念,是程序的运行时的一个过程。1.2 虚拟内存每个进程内部都是使用的逻辑地址空间,这个逻辑地址与物理 RAM 之间存在着映射关系,这个映射是以 page 为单位的。这种映射关系不一定是 1 对 1 的,有可能某个逻辑... 阅读全文
摘要:
如何重写 hash 方法一个合理的 hash 方法要尽量让 hash 表中的元素均匀分布,来保证较高的查询性能。如果两个对象可以被视为同一个对象,那么他们的 hash 值要一样。mattt 在文章 Equality 中给出了一个普遍的算法:- (NSUInteger)hash { // 假设对象有三个属性,那么对这三个属性分别算出 hash 值,然后进行异或运算 return [sel... 阅读全文
摘要:
HOOK 译为“钩子”或挂钩。在 iOS 逆向中指改变程序运行流程的一种技术。iOS 中 hook 技术的几种方式Method Swizzle利用 OC 的 Runtime 特性,动态改变 SEL(方法编号)和 IMP(方法实现)的对应关系,达到 OC 方法调用流程改变的目的。主要用于 OC 方法。fishhook它是 Facebook 提供的一个动态修改链接 mach-O 文件的工具。利用 Ma... 阅读全文
摘要:
一、Runtime 简介Runtime 又叫运行时,是一套底层的 C 语言 API,是 iOS 系统的核心之一。开发者在编码过程中,可以给任意一个对象发送消息,在编译阶段只是确定了要向接收者发送这条消息,而接受者将要如何响应和处理这条消息,那就要由运行时来决定了。C 语言中,函数的调用在编译期就会决定调用哪个函数。而 OC 的函数属于动态调用过程,在编译期并不能决定真正调用哪个函数,只有在真正运行... 阅读全文
摘要:
一、iOS hash下图列出 Hash 在 iOS 中的应用分析整理知乎上的一句话:算法、数据结构、通信协议、文件系统、驱动等,虽然自己不写那些东西,但是了解其原理对于排错、优化自己的代码有很大帮助,就好比虽然你不设计制造汽车,但如果你了解发动机、变速器、安全气囊等几项原理,对于你驾车如何省油、延长使用寿命、保证自身安全有很大好处,学而不思则罔、思而不学则殆,开发人员就是个随波而进的行业,无论何时... 阅读全文
摘要:
一、CoreGraphics这是一个 C 语言写就的库,来看看他的头文件:#ifndef COREGRAPHICS_H_#define COREGRAPHICS_H_#include #include #include #include #include #include #include #include #include #include #include #include #include ... 阅读全文
摘要:
一、mach-OExecutable 可执行文件Dylib 动态库Bundle 无法被连接的动态库,只能通过 dlopen() 加载Image 指的是 Executable,Dylib 或者 Bundle 的一种。Framework 动态库和对应的头文件和资源文件的集合Apple 出品的操作系统的可执行文件格式几乎都是 mach-O。mach-O 可以大致分为三部分:Header 头部,包含可以执... 阅读全文
摘要:
一、密码学简介1.1 base64Base64 是一种通过查表的编码方法,不能用于加密,即使使用自定义的编码表也不行。Base64 适用于小段内容的编码,比如数字证书签名、Cookie 的内容等。由于 = 字符也可能出现在 Base64 编码中,但 = 用在 URL、Cookie 里面会造成歧义,所以,很多Base64编码后会把 = 去掉,解码时,需要加上 = 把 Base64 字符串的长度变为 ... 阅读全文