block本质

1、写一个简单的mac命令行程序,包含block定义与使用

1
2
3
4
5
#import 
 
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        void (^block)(void) = ^{[......]<p class="read-more"><a href="https://www.yusian.com/blog/project/2018/11/13/0925191388.html">继续阅读</a></p>

2、在命令行下编译成c++源文件xcrun -sdk iphoneos clang -arch arm64 -rewrite[……]

继续阅读

KVO的本质

1、KVO也就是key-value-observing(键值观察),利用一个key来找到某个属性并监听其值得改变;
1.1、KVO的使用非常简单,调用实例对象的addObserver:forKeyPath:options:context:方法;
1.2、对象在相关属性发生值变化时,会调用观察者的observerValueForKeyPath:ofObject:change:context方法;
2、为什么同一个类创建出来的对象,KVO的对象在修改属性时会多调用一个观察方法?
2.1、从对象本质我们了解到,成员属性或成员方法内存中保存在类对象中,所有实例方法都一样;
2.2、既然同一个[……]

继续阅读

Objective-C中对象的分类与本质(isa&superclass)

1、OC中对象分为三种:实例对象(instance)、类对象(class)、元类对象(meta-class);
2、实例对象类型为创建该实例的类类型,类对象与元类对象均为Class类型;
3、每创建一个实例都会在内存中新创建一个实例对象,但类对象与元类对象只有一份;
4、类的成员变量值保存在实例对象中,对象方法、属性、属性类型等信息保存在类对象中,类方法保存在元类对象中;
5、所有对象都会有isa属性与superclass属性;
6、isa指针的指向为:isntance->class->meta-class;
6.1、实例对象的isa指向类对象;
6.2、类对象的isa指向元类对象;[……]

继续阅读

tweak项目ipa包重签名

1、参考链接:ipa包重签名
2、tweak项目修改部分是以插件的形式存在,因此需要将插件动态库与现在的ipa包重新打包签名;
3、找到tweak后生成的动态库,参考路径为:/Library/MobileSubstrate/DynamicLibarries/xxxTweak.dylib;
4、将该dylib文件放在现有包xx.app中,与二进文件同目录;
5、使用otool -L xxxxx查看Mach-O文件的动态库加载,这里面是没有tweak动态库的,需要将xxxTweak.dylib加进来;
6、工具来了,https://github.com/Tyilo/insert_dyli[……]

继续阅读

ipa包重签名

1、准备.mobileprovision文件,需要与当前App匹配的,如App ID、Certificates、Devices、Enabled Services等;
2、导出entitlements.plist文件:

2.1、security cms -D -i embedded.mobilep[......]<p class="read-more"><a href="https://www.yusian.com/blog/reverse/2018/11/09/0912501373.html">继续阅读</a></p>

3、使用codesign重签名
3.1、列出证书id列表

security[......]<p class="read-more"><a href="https://www.yusian.com/blog/reverse/2018/11/09/0912501373.html">继续阅读</a></p>