在逆向工程中往往需要针对想要做的功能 Hook 到相应的方法和属性,小白面对 class-dump 后的大量头文件表示只能靠『猜』。这里我分享下逆向微信实现屏蔽群消息和好友消息的实战经验,适用于非越狱机,项目 GitHub 地址: FishChat。为了能读懂此文,建议先阅读我的上一篇文章:Make WeChat Great Again

Read More

关闭朋友圈有一年多了,突然有一天微信的策略变了,在关闭朋友圈的同时也不让别人查看自己的朋友圈了。有妹子表示看不到我朋友圈很不爽,于是我决定对微信进行一番改造!初步实现效果:

  1. 关闭『发现』页面的『朋友圈』、『购物』和『游戏』入口
  2. 修改微信运动步数
  3. 去除各种小红点提示
  4. 设置夜间模式
  5. 阻止撤回消息
  6. 屏蔽群&好友消息

手机无需越狱,项目 GitHub 地址: FishChat,Make WeChat Great Again!

Read More

本文主要讲了下我在工作时对项目中多媒体编辑模块的架构设计心得,并剖析了一部分原理。目前框架主流程已经验证跑通,所以把一些关键的思想和概念记录下来。涉及到公司机密的已经略去,只说说思想,代码也就不公开了。

Read More

pbxprojHelper 可以帮你快速配置 Xcode 工程文件,省去麻烦的人工手动操作。项目开源,使用 Swift 开发,详细介绍请见使用说明。除了 Mac App 外还提供了命令行工具 pbxproj,它集成了 pbxprojHelper 的核心功能,同样简易实用。

因为 README_ZH 中对使用方法已经讲得很详细了,这里重点说的是产品方案和技术实现。

Read More

project.pbxproj 文件被包含于 Xcode 工程文件 *.xcodeproj 之中,存储着 Xcode 工程的各项配置参数。它本质上是一种旧风格的 Property List 文件,历史可追溯到 NeXT 的 OpenStep。其可读性不如 xml 和 json,苹果却一直沿用至今,作为一家以创新闻名的公司可能这里剩下的就是情怀吧。

本文谈了下 project.pbxproj 的知识,并总结了一些操作工程文件的优秀轮子,并在最后给出了自己的解决方案 pbxprojHelper

Read More

iOS 系统自带的 UIActionSheet 无法满足开发中高度个性化的 UI 风格和代码风格,所以我决定自己动手丰衣足食,于是 TBActionSheet 诞生了:

Github:https://github.com/yulingtianxia/TBActionSheet

TBActionSheet 不仅还原了 UIActionSheet 的几乎所有功能和 API,还在此基础上支持如下功能:

  1. block 语法
  2. 插入自定义的 Header 视图
  3. 自定义字体、颜色、尺寸、圆角等
  4. 将毛玻璃效果支持到了 iOS7,且可以定义颜色
  5. 支持 Cocoapods 和 Carthage
  6. 支持在 Title 下面设置 Message
  7. 支持点击背景关闭
  8. 可以在显示后动态更新 UI

Read More

消息发送和转发流程可以概括为:消息发送(Messaging)是 Runtime 通过 selector 快速查找 IMP 的过程,有了函数指针就可以执行对应的方法实现;消息转发(Message Forwarding)是在查找 IMP 失败后执行一系列转发流程的慢速通道,如果不作转发处理,则会打日志和抛出异常。

本文不讲述开发者在消息发送和转发流程中需要做的事,而是讲述原理。能够很好地阅读本文的前提是你对 Objective-C Runtime 已经有一定的了解,关于什么是消息,Class 的结构,selector、IMP、元类等概念将不再赘述。本文用到的源码为 objc4-680 和 CF-1153.18,逆向 CoreFoundation.framework 的系统版本为 macOS 10.11.5,汇编语言架构为 x86_64。

Read More