李扬
李扬
 上图展示的是通过对编译链接完成生成的可执行文件分别查看Mach-O文件结构和反编译代码的结果 BeeHive的原理简单来说分为三步: 1、为了避免无用数据在编译阶段被优化删掉,就通过 `used` 来修饰 并告诉编译器把数据存到Mach-O文件的Segment Data 中,就是宏定义那段 2、hook动态链接库加载,在main函数执行之前把数据从Segment Data读取出来,做好class和protocol的字典对应准备,就是注册main函数执行之前__attribute__((constructor))那段 3、当程序启动完成后,就可以从字典的中根据protocol取出对应的类,达到解耦合的目的 再附上有关文章: https://lowlevelbits.org/parsing-mach-o-files/ http://liumh.com/2018/08/18/ios-attribute-section/#section
##### 偏好设置 * 可以设置是否替换id字段 * 是否忽略Null字段 ---- _**支持生成时带有泛型**_ [AC4AJTool](https://github.com/lyandy/AC4AJTool)
sentry crash stacks: https://app-sentry.taou.com/share/issue/8c4977e7073c4e0996b1248f93025c37 ref: https://github.com/qiniu/objc-sdk/issues/423
崩溃sentry堆栈:https://app-sentry.taou.com/share/issue/8c4977e7073c4e0996b1248f93025c37/ 通过分析发现是 `QNServerConfigSynchronizer`赋值`Token`崩溃 进一步分析发现,`Token`全局静态变量,全局静态变量赋值,如果不加锁多线程下一样会出现野指针 `over-release`崩溃 其实这里的 `Hosts` 变量也一样,需要加锁,做多线程安全