--------------------------------------------------------------------------------------
Index: 2
Time: 2020年10月30日 18:32:56
By : MemoryEr
Data: 原文链接: https://blog.youkuaiyun.com/ByteDanceTech/article/details/109302510
---------------------------------------------------------------------------------------
启动的种类
冷启动:系统里没有任何进程的缓存信息,典型的是重启手机后直接启动 App
热启动:如果把 App 进程杀了,然后立刻重新启动,这次启动就是热启动,因为进程缓存还在
回前台:大多数时候不会被定义为启动,因为此时 App 仍然活着,只不过处于 suspended 状态
标准的三个 Segment 是 TEXT,DATA,LINKEDIT,也支持自定义:
TEXT,代码段,只读可执行,存储函数的二进制代码(__text),常量字符串(__cstring),Objective C 的类/方法名等信息
DATA,数据段,读写,存储 Objective C 的字符串(__cfstring),以及运行时的元数据:class/protocol/method…
LINKEDIT,启动 App 需要的信息,如 bind & rebase 的地址,代码签名,符号表…
iOS 13 开始 Apple 对三方 App 启用了 dyld3,dyld3 的最重要的特性就是启动闭包,闭包里包含了启动所需要的缓存信息,从而提高启动速度。
因为 iTunes Connect 会对上传 Mach-O 的 TEXT 段进行加密,防止 IPA 下载下来就直接可以看到代码。
这也就是为什么逆向里会有个概念叫做“砸壳”,砸的就是这一层 TEXT 段加密。
C 语言家族的前端是 clang,swift 的前端是 swiftc,二者的后端都是 llvm。
--------------------------------------------------------------------------------------
Index: 1
Time: 2020年10月30日 16:38:11
By : MemoryEr
Data: 原文链接: https://blog.youkuaiyun.com/csdnnews/article/details/109348985
---------------------------------------------------------------------------------------
创业需要全身心投入,需要足够的体力支撑,也需要家庭的支持和经济的支撑,更需要持久的激情。
珍惜我们已有的,坚定信念去做正确的事情。真正给客户带来价值,就是我们的机会。
开源代表了开放;商业代表了利益诉求。
生态的建立要么有强大的硬件掌控能力,要么有足够的开放性。
基本功在于:
1 对于操作系统核心模块的理解和掌握,并且要连带着硬件基础,比如 CPU 内置的一些机制和指令。
2 软件的技能。一方面要有二进制代码的思考能力,又要有快速编写代码的能力。
肉眼就能看出代码中的 bug,而不要总是依赖编译器找 bug。
3 抽象的能力。两个层次,一是在明确描述出一个软件需求/问题的情况下,给出一个实现方案和思路。
这通常是设计模式可以解决的问题。有大量成熟的模式可以提供思路,但需要清楚地知道每一个模式的优势和不足。
二是,在无法清晰地描述出需求的情况下,只能看到一些案例或点上的需求,但是要做出一个可满足未来潜在需求
的软件系统,这考验的是抽象能力。
---------------------------------------------------------------------------------------