首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
波儿菜
掘友等级
客户端开发
|
Tencent
Github : https://github.com/indulgeIn
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
60
文章 49
沸点 11
赞
60
返回
|
搜索文章
赞
文章( 49 )
沸点( 11 )
iOS Jailbreak Principles - Undecimus 分析(二)通过 String XREF 定位内核数据
在内核中有许多关键变量和校验,为获得这些变量和绕过校验就要求我们在内存中定位这些地址。本文将介绍 Undecimus 中基于 String XREF 定位关键内存地址的方法,通过该方法不仅可以准确定位内核中的特定元素,也能为自行设计二进制分析工具带来很好的启发。 为了获取内核信…
iOS 底层拾遗:autorelease 优化
听闻 ARC 下 autorelease 操作有一些优化,总感觉云里雾里的,笔者初略的探究了一番,记录下来变成这篇水文。 由于 ARC 下 retain/release/autorelease 的调用都是编译器代劳,所以需要使用编译后的代码进行分析,通常笔者选择 Xcode 自…
一文领略链接与装载
链接与装载是一个比较晦涩的话题,大家往往容易陷入复杂的细节中而难以看清问题的本来面目。从本质上讲各个系统的编译、链接、装载过程都是大同小异的,或许可以用一种更抽象的形式来理解这些过程,梳理清楚宏观的来龙去脉有利于对特定系统进行深入学习。 本文主要根据《程序员的自我修养 —— 链…
获取任意线程调用栈的那些事
BSBacktraceLogger 是一个轻量级的框架,可以获取任意线程的调用栈,开源在我的 GitHub,建议下载下来结合本文阅读。 我们知道 NSThread 有一个类方法 callstackSymbols 可以获取调用栈,但是它输出的是当前线程的调用栈。在利用 Runlo…
APM-卡顿监控
主要是主线程阻塞。在开发过程中,遇到的造成主线程阻塞的原因可能是: 主线程在等锁:主线程需要获得锁A,但是当前某个子线程持有这个锁A,导致主线程不得不等待子线程完成任务。 ...... Matrix 卡顿监控在 RunLoop 的起始最开始和结束最末尾位置添加 Observer…
为什么我们要使用 RVM / Bundler ?
作为一名 iOS 工程师,CocoaPods 是我们所不会陌生的。然而在我们的日常开发中,编写 CocoaPods 的 Ruby 语言我们可能不甚了解,更不要说 Bundler 以及 RVM 了。因此,当我们遇到一些 Ruby 环境相关的问题时,可能完全不知道发生了什么。如果恰…
弱符号实现 iOS 组件化解耦
今天在重温《程序员的自我修养》中关于符号表的章节时,突然脑子灵光一现,想到了这个知识的一个应用场景,所以便有了这篇文章。 若对 iOS 组件化不太了解,可以看笔者的另一篇文章:解读 iOS 组件化与路由的本质,本文主要是谈一下如何利用弱符号来实现 iOS 组件化解耦。 函数和全…
iOS 底层拾遗:objc_msgSend 与方法缓存
行文过程中会涉及到一些汇编代码,不过不影响理解核心逻辑。 源码基于 Runtime 750,arm64 架构。 注意: arm64 汇编代码会出现很多p字母,实际上是一个宏,64 位下是x,32 位下是w,p就是寄存器。 $0获取宏的第一个参数,调用时传的p13,即是isa。这…
iOS中的内嵌汇编
写一篇在iOS上使用汇编的文章的想法在脑袋里面停留了很久了,但是迟迟没有动手。虽然早前在做启动耗时优化的工作中,也做过通过拦截objc_msgSend并插入汇编指令来统计方法调用耗时的工作,但也只仅此而已。刚好最近的时间项目在做安全加固,需要写更多的汇编来提高安全性(文章内汇编…
iOS 底层拾遗:AutoreleasePool
在阳神的 黑幕背后的Autorelease 文章中已经把 AutoreleasePool 核心逻辑讲明白了,不过多是结论性的东西,笔者通读源码以探究更多的细节,验证一下老生常谈的一些结论。 源码基于 Runtime 750。 可以猜测 push 和 pop 操作是实现自动释放的…
下一页
个人成就
文章被点赞
496
文章被阅读
107,537
掘力值
3,146
关注了
12
关注者
3,208
收藏集
1
关注标签
3
加入于
2018-03-17