BluesJiang


  • 首页

  • 分类

  • 归档

  • 标签

CMake 小计

发表于 2018-12-17 | 分类于 C 语言

CMake 是一个高效的 C/C++ Makefile 生成工具,具有很好的跨平台性。利用它可以让代码在各个平台上顺利的编译。

现在最愿意看到的编译流程就是:

1
2
3
4
mkdir build
cd build
cmake ..
make

这里可能不是详尽的解释,但是展示了我本人在编写中常用的命令。
利用 CMake 的契机主要是想要摆脱 XCode 以及使用 CLion。当然,也是为自己的一些小项目做管理。(主要是不想写 MakeFile)

CMakeLists.txt

CMakeList.txt 是 CMake 的核心文件,所有对 CMake 的编辑配置都集中于此。所以,使用 CMake 来管理你的项目核心就在如何编写 CMakeLists.txt。
具体参考教程可以查看参考资料的第一条进行练习。

阅读全文 »

Cydia 的 Hook 原理

发表于 2018-12-07 | 分类于 iOS逆向

CyidaSubstrate 的核心功能就是提供了一个强大的注入功能

Cydia Substrate - Powerful Code Insertion Platform
– Cydia Substrate 源代码注释

其中提供了两个核心的 Hook 函数

  • MSHookMessageEx – 用于 hook Objective-C 方法
  • MSHookFunction – 用于 hook C 语言函数

但是还有一个上次提到的 MSHookProcess,但是这个并不是属于公开的部分,但是也是做了 hook 工作。

MSHookProcess

这个是在上一篇说明启动原理时提到的一个注入 Cyida 就是利用了这个函数在系统启动时对 launchd 进行了注入。
这里先简单说一下结论:

函数利用了一些 mach 调用,在宿主进程的空间中分配了一些内存,然后将蹦床注入。
然后开启一个新的线程,执行蹦床的相应函数,引导目标动态库的加载,完成注入。

阅读全文 »

CydiaSubstrate 引导过程

发表于 2018-12-07 | 分类于 iOS逆向

这里是基于老版本开源的 CydiaSubstrate 源码进行分析,一定程度上可以印证现版本的 CydiaSubstrate 注入流程。
为了解答下面的问题:

CyidaSubstrate 是什么时候被加载的?
CydiaSubstrate 是怎么注入到每一个 APP 中的?

Cydia 结构

在越狱手机的 /Library/Frameworks/CydiaSubstrate.framework,可以看到CyidaSubstrate 主要分为以下几个部分:

  • CydiaSubstrate(libsubstrate.dylib) 提供核心 MSHookFunction, MSHookMessageEx 等 hook 功能
  • SubstrateBootstrap.dylib 提供 CydiaSubstrate 的引导
  • SubstrateLauncher.dylib 用于启动引导
  • SubstrateLoader.dylib 负责加载 /Library/MobileSubsrate/ 目录下的对应动态库
阅读全文 »

ARM 汇编笔记

发表于 2018-12-03

ARM 寄存器

R0~R30 x访问64位 w访问32位

r29 = fp (frame pointer)
r30 = lr (link register)

x31 = sp (用 sp/wsp 访问)
pc (program conter)

v0~v31 向量寄存器(浮点型寄存器) 128 位,可以通过 Bn(8) Hn(16) Sn(32) Dn(64) Qn(128) 访问

SPRs 状态寄存器 The Current Program Status Register (CPSR) The Saved Program Status Registers (SPSRs) FPSR浮点状态

阅读全文 »

SnapKit 源码阅读

发表于 2018-09-20 | 分类于 iOS开发

SnapKit

SnapKit 是一个针对 iOS AutoLayout 的 Swift 版的 Domain Specific Language (DSL),它提供了一个 Swift 版的,对 AutoLayout 的良好封装,让 AutoLayout 更加平易近人。

阅读全文 »

PromiseKit 源码初探(一)

发表于 2018-08-02 | 分类于 iOS开发

规范

Promise/A+

PromiseKit - Swift 实现

Box and Result

Promise 最终的结果一定反映出两个状态,所以 PromisKit 定义了以下的 Result 枚举

1
2
3
4
public enum Result<T> {
case fulfilled(T)
case rejected(Error)
}

Result 类型一定要把它看作最终的结果。

阅读全文 »

算法上机实验----单源+点对最短距离

发表于 2017-12-16 | 分类于 算法
Berman-Ford算法以及动态规划法求解
阅读全文 »

算法上机实验----最近点对

发表于 2017-12-04 | 分类于 算法
分治法求最近点对问题
阅读全文 »

算法上机实验----矩阵乘法

发表于 2017-12-04 | 分类于 算法
分治的矩阵乘法
阅读全文 »

算法上机实验----各种排序算法

发表于 2017-12-03 | 分类于 算法
算法上机实验的代码
阅读全文 »
12
BluesJiang

BluesJiang

A little iOS new bee

15 日志
5 分类
7 标签
GitHub
© 2018 BluesJiang
由 Hexo 强力驱动
|
主题 — NexT.Muse v5.1.3