余额不足.

余额不足.

s

集成Hikari问题汇总
此文记录了编译Hikari混淆器所遇到的问题,希望对有同样问题的你有些帮助,也写给未来遇到问题的自己。 lldb_codesign no identity found准备在项目中引入Hikari混淆器,Xcode9编译成功后并且能正常运行,但最近苹果修复了Xcode10打包iOS9Crash的问题后我也就把macOS升级到了mojave,Xcode也升级到了10,问题也就来了,之前的Hikari ToolChain也没法用了,怎么办?重装呗! 重新执行 1git clone -b release_70 --recursive https://github.com/HikariObfusc...
解析__block
__block在什么情况下使用?前一篇文章中我们知道了block拥有捕获变量的能力,但是block却不能改变自动变量的值,每当我们尝试着在block中修改某个自动变量的时候编译器都会抛出一个错误Variable is not assignable (missing __block type specifier),表示该变量在block中不可被赋值,需要使用__block修饰。但是当我们尝试在block中去修改全局变量、静态变量、全局静态变量却是可以通过的,这是为什么? block捕获到的自动变量只是该变量的值,而全局变量、静态变量、全局静态变量的值为什么能修改?全局变量和静态全局变量是存...
从源码分析Block的内存管理
实际上我不知道怎么去起这个标题,文章大概讲述的是block的类型,block类型的转换以及block的释放,不管了先这样吧 block的结构123456789101112131415struct Block_layout { void *isa; int flags; int reserved; void (*invoke)(void *, ...); struct Block_descriptor *descriptor; /* Imported variables. */};struct Block_descriptor ...
weak到底做了些啥?
weak到底做了些啥?入行也好几年了,关于内存管理几乎是面试中必定会问到的问题,内存管理中问的最多的大概就是循环引用和weak的实现了,关于weak怎么将修饰的对象置为nil的,可能几年前的回答就是: 1runtime维护了一个weak表,用于存储指向某个对象的所有weak指针。weak表其实是一个hash(哈希)表,Key是所指对象的地址,Value是weak指针的地址(这个地址的值是所指对象指针的地址)数组。 再之后可能就是weak的三部曲: 1231、初始化时:runtime会调用objc_initWeak函数,初始化一个新的weak指针指向对象的地址。2、添加引用时:objc_i...
initialize使用不当造成的问题
事件由来之前项目中有个让用户一边签署协议,一边录制视频上传的功能,当时法务同学要求的是只能直接拍摄上传,不能让用户在相册里直接选取,然后就有了只能拍摄视频上传的第一个版本。而当用户使用之后表示不能从相册中选取很不方便,有时签署协议过程中出了些问题的话又得重新操作一遍。收到反馈之后,产品也迅速的给出了方案,在原来的的基础上添加一个本地上传的功能,于是我想到了个骚操作。 原本这个拍照按钮调用的是系统的拍摄视频,但我直接给替换成了之前同事写的直接拍摄上传了。考虑到之前做启动优化, +load 方法如果越多,app冷启动速度就会越慢,我就将搅拌方法放在了 +initialize中,然后,意想不...
一次逆向mac微信过程记录(自动添加群聊好友)
一次逆向mac微信过程记录最近产品搞事情,需要逆向mac微信来实现在群聊中自动添加客户的功能,用来爬取这些客户的朋友圈,刚听到这不靠谱的需求是嘴上笑嘻嘻心里mmp的,干些啥不好偏偏要在不是自己的app上搞事情,好在已有前辈给逆向微信铺了一条阳光大道,才能让这次开发顺利进行。 本文内容基于TK前辈的WeChatPlugin-MacOS OK,牢骚发完了,简单的说说这次逆向过程 寻找切入点WeChatPlugin-MacOS已经实现了消息自动回复的功能,看到有这个功能我是灰常嗨森的,等于说少了一大堆的分析过程,直接找到调用自动回复的消息同步方法[MessageService OnSyncBa...
记录一次APP启动优化
项目日渐庞大,代码越来越烦杂,性能问题也越来越多,准备搞一次系统性的优化。随着加载项的越来越多,app启动时感觉有很明显的卡顿现象。要做优化,先得分析APP是如何完成一次启动的 1t(App总启动时间) = t1(main()之前的加载时间) + t2(main()之后的加载时间)。 So,我们先分析下main()加载之前的过程。 在target中添加一个value为1的DYLD_PRINT_STATISTICS环境变量。 run一哈,控制台输出 12345678Total pre-main time: 532.27 milliseconds (100.0%) dylib...
Xcode集成O-LLVM
要在Xcode中使用O-LLVM,必须要编写一个Xcode插件。 首先 12345$ cd /Applications/Xcode.app/Contents/PlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer/Library/Xcode/Plug-ins/$ sudo cp -r Clang\ LLVM\ 1.0.xcplugin/ Obfuscator.xcplugin$ cd Obfuscator.xcplugin/Contents/$ sudo plutil -convert xml1 Info.plist$ ...
LLVM与Clang的一些事儿
在说这篇文章之前,首先我们带入一个问题,在Xcode中我们最常使用的一个组合键cmd+b按下之后都进行了哪一些工作?伟大的ARC内存管理方式又是如何实现内存管理的? 又或者我不了解编译过程代码照样撸得飞起,摸透这晦涩难理解的东西有什么用? 下面要开始啰嗦了LLVM简介-来自https://zh.wikipedia.org/wiki/LLVMLLVM项目的发展起源于2000年伊利诺伊大学厄巴纳-香槟分校维克拉姆·艾夫(Vikram Adve)与克里斯·拉特纳(Chris Lattner)的研究,他们想要为所有静态及动态语言创造出动态的编译技术。LLVM是以BSD授权来发展的开源软件。200...
avatar
余额不足
人必有所执,方能有所成。