一、fishhook能做什么事情?
c函数的地址是在编译的时候就已经确定了,位于程序的TEXT段,为只读区域:

mac版本:Mac Mojave 10.14objc版本:objc runtime 750以前我们初始化一个对象(64位为例),开发的代码如下
1 | NSNumber *number2 = [NSNumber numberWithInteger:2]; |
此时的内存图如下

可以看到我就想存一个2用掉了24个字节,由于我们的NSNumber和NSDate对象的值一般不需要8个字节,4个字节的长度2^31=2147483648可以表达的数量已经达到了20多亿了,为了不造成内存的浪费,想到将指针的值(8个字节)进行拆分,一部分表示数据,一部分用来表示是一个特殊的指针,他不执行任何对象,这就是TaggedPointer技术,这样指针 = Data + Tag,那么我们的存一个数字只需要8个字节就够了。
当多线程访问共享资源的时候,会出现资源竞争的情况,导致数据错乱的问题,OC中要想实现线程间的同步的话,有以下手段:
more >>平时开发中当我们给代码打断点,调试程序(lldb),这一切都离不开一个媒介debugserver,它负责将lldb指令给到app,然后app将结果通过debugserver传给lldb
debugserver一开始是在Xcode中的,一旦手机连接Xcode信任后,debugserver便会安装到手机上
Xcode目录: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/9.1/DeveloperDiskImage.dmg/usr/bin/debugserver;
iPhone目录:/Developer/usr/bin/debugserver
但是缺少task_for_pid权限,通过Xcode安装的debugserver,只能调试自己的app,要想逆向别人的app,这种肯定是行不通的。前面说到,不能调试别人app的原因是权限不够,要想在没有源码的情况下调试别人的app,就需要修改debugserver权限。
[TOC]
more >>Theos是一个越狱开发工具包,由iOS越狱界知名 人士Dustin Howett(@DHowett)开发并分享到
GitHub上。Theos与其他越狱开发工具相比,最大的 特点就是简单:下载安装简单、Logos语法简单、编译发布简单,可以让使用者把精力都放在开发工作上 去。
MachO文件是mac平台上一类文件的简称,它的类型有以下种类,可以在#import <mach-o/loader.h>文件中找到
1 | #define MH_OBJECT 0x1 /* relocatable object file */ |
列举一些常见的类型
more >>tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent:
meta: false
pages: false
posts:
title: true
date: true
path: true
text: false
raw: false
content: false
slug: false
updated: false
comments: false
link: false
permalink: false
excerpt: false
categories: false
tags: true