一、fishhook能做什么事情?
c
函数的地址是在编译的时候就已经确定了,位于程序的TEXT
段,为只读区域:
mac版本
:Mac Mojave 10.14
objc版本
: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