暂无个人介绍
Swift中的一些第三方库
在Swift中创建一个数组
介绍Swift各个历史版本
名称混淆
Auto Layout 是怎么进行自动布局的,性能如何?
ptrace (process trace 进程跟踪)
对未实现的参数进行猜测
用IDA分析MachO文件
逆向实战(26)
调试信息生成过程探究
基于POSIX BRE & ERE
Shell(Unix Shell)是一种命令行解释器,是Unix操作系统下最传统的人机接口。 Shell脚本是解释执行的,不需要编译,和大部分的编程语言很相似,也有基本的变量和流程控制语句。
Tweak原理DYLD_INSERT_LIBRARIES
越狱环境中Cycript的使用
USB取别名测试
OpenSSH设置
Crcript高级用法
LLDB高级调试 & 插件(18)
Module & Swift库 (6)
启动优化--二进制重排
动态库下(5)
动态库(4)
有关Xcode真机调试iOS14.2设备时候卡在启动页的问题, 网上写的大部分方法已经使用过了, 不行的
动态库与静态库上 (3)
MachO文件(12)
代码注入(11)
符号与链接 (2)
静态库冲突 & Git (20)
链接与Symbol (1)
应用重签名 (10)
OC的反汇编
1.runloop是什么? 2.runloop和线程的关系? 3.runloop是什么时候创建的?
自动释放池 -> 内存自动回收机制 -> 变量release的时机延迟 对象 -> 正常情况下,变量会在超出其作用域的时立即release -> 加入到了自动释放池中 -> 不会立即释放,会等到runloop休眠/超出autoreleasepool作用域{}之后才会被释放
强引用(强持有)
TaggedPointer/retain/release/dealloc/retainCount 分析
block-> 全局区;block -> 访问外界变量(copy) -> 强引用 -> 堆区;-> _weak可弱引用 -> 栈区
synchronized, NSLock, 递归锁, 条件锁
在上篇文章iOS 程序加载流程分析中分析dyld的过程中, 其中有一幅图来分析_objc_init符号断点图, 如下:
dyld简介;dyld共享缓存;dyld程序启动过程;_objc_init符号断点:
1. 先来看下动态方法决议的分析;2. 通过instrumentObjcMessageSends来辅助分析;3. 有关反汇编;
有关上篇文章分析了objc_msgSend快速查找流程, 当在类的方法缓存中查找不到的话, objc_msgSend就会进入慢速查找流程, 我们来分析一下: (注, 以下代码都是在arm64环境下的)
本文主要是对objc_msgSend的分析理解, 在分析cache_t的流程时, 我们只分析了写入流程, 其实还有一个cache读取流程, 有objc_msgSend和cache_getImp.
紧接着我们来分析类结构体中cache_t, 只从单词来看就能猜出来是与缓存有关. 下面我们先看cache_t的源码:
我们来分析类的结构: 先引入一个列子,(注意以下代码是在objc源码中调试的): 例子说明: CJLPerson继承于NSObject, CJLTeacher继承于CJLPerson
在对象调用alloc, 之后调用的最后一个方法是obj->initInstanceIsa, 它的作用是将isa指针与我们的对象关联起来, 我们来分析一下isa指针.
这里我们来分析结构体内存对齐方式, 从中我们可以间接的分析出在OC中内存的对齐方式大概什么样.
我们用GLSL来编写着色器代码时, 要了解他们的一些内建变量参数的含义. 本文就是对内建变量做一些介绍.
因为着色器里面没有编译器提示, 所以熟悉着色器代码语法是非常有必要的
在Mac开发的环境中.jpg .png结尾的图片都可以当做纹理数据源, 但是在使用的时候需要解压缩, 以下方法就是通过图片名来获取最终需要的
在用OpenGL ES绘制图片的时候, 我们发现所绘制的图片颠倒了, 以下我们来使用几种解析策略来解决这个问题, 通过探索找到最适合自己的方法.