Uncategorized

iOS 开发中的环境统一

关于 iOS 开发环境的问题,曾经遇到过融云SDK与美恰SDK在 Cocoapods 1.0.1 以上的版本安装的时候会发生冲突,因此在该项目中只能用 1.0.1 以下版本的 Cocoapods…… 又或者是团队中每个人本机的 Cocoapods 版本不一致,那么每次同步项目的时候都会提示需要 pod install,同时 git commit 中会出现许多 Podfile.lock 的修改记录,因此 iOS 团队开发中环境统一的小细节需要做好。 0x00 基本环境 Homebrew Homebrew 是开发者在 macOS 必装的环境之一。 Ruby Ruby 则为 iOS 开发中必备的环境之一,Cocoapods、fastlane 等会依赖 Ruby。 Ruby 的安装强烈建议通过 Homebrew 来安装并管理,因为使用系统自带的 Ruby 会有权限上的问题,一旦弄坏了环境不好处理,通过 Homebrew 安装的则可以有效隔离各种问题。 0x01 Bundler 简介 Bundler 统一项目中 gem 依赖的工具。通过命令 Read more…

By RSSBot, ago
Uncategorized

Windows 上简单但强大的截图工具 – Snipaste

在电脑上截图,是一个非常简单但又非常难做到令人满意的事情。如果只是单纯的截取屏幕上的内容,Windows 自带的工具就可以满足,但在对截图内容进行精确控制,或需要在截图后对内容进行标注的时候,往往需要启动一些重量得多的工具来完成——比如 QQ,又比如印象笔记。 Snipaste 是一个简单但强大的截图工具,也可以让你将截图贴回到屏幕上!下载并打开 Snipaste,按下 F1来开始截图,再按 F3,截图就在桌面置顶显示了。就这么简单! 你还可以将剪贴板里的文字或者颜色信息转化为图片窗口,并且将它们进行缩放、旋转、翻转、设为半透明,甚至让鼠标能穿透它们!如果你是程序员、设计师,或者是大部分工作时间都在电脑前,贴图功能将改变你的工作方式、提升工作效率。 Snipaste 使用很简单,但同时也有一些较高级的用法可以进一步提升你的工作效率。 Snipaste 是免费软件,它也很安全,没有广告、不会扫描你的硬盘、更不会上传用户数据,它只做它应该做的事。 强大的截图 自动检测界面元素区域 像素级的鼠标移动控制、截图范围控制 取色器 (试试 F1, C, F3) 历史记录回放 (,/.) 支持多屏 支持高分屏 把图片作为窗口置顶显示 支持将剪贴板中的以下内容转为图片 图像 纯文本 HTML 文本 颜色信息 图像文件:PNG, JPG, BMP, ICO, GIF 等 图片窗口支持的操作 缩放 (鼠标滚轮 或者 +/-) 对于 GIF 图片则是加速/减速 旋转 (1/2) 对于 GIF Read more…

By RSSBot, ago
Uncategorized

修复 macOS 应用去除签名后的沙盒路径

自从做了两个Tweak:WeChatTweak-macOS 和 QQTweak-macOS,发现了都存在一个共同问题:由于以上两个应用都采用了 macOS 的沙盒机制,同时插入动态库时签名被移除,导致了沙盒失效,拖延症的我终于在国庆期间修复,并记录一下过程。 0x00 举个例子 以下应用在安装完 Tweak 之后,会导致沙盒失效,因此会导致聊天记录等文件无法加载,同时文件路径会出现错乱。囧rz…… WeChat 无法加载历史聊天记录等 ~/Documents 目录下出现 MMappedKV 文件夹。参考 #19 ~/Documents 目录下出现 JietuSDKStat.plist。参考 #21 ~/Documents 目录下出现 .rdq 文件夹。 QQ 无法加载历史聊天记录等 ~/Documents 目录面目全非 0x01 沙盒 沙盒的大概意思: 有兴趣的可以查看 Apple 官方文档:About App Sandbox。 那么对于 QQ 原有的沙盒路径应该是这样的: 可见沙盒其实就是在 ~/Library/Containers/{bundleid}/Data 目录下拥有和 ~ 目录相同的目录结构的一个文件夹,其实就是为了限制应用的访问权限,同时可以看到有很多软链接的目录或文件。其中主要的就是 Documents 和 Library 目录了。 0x02 Read more…

By RSSBot, ago
Uncategorized

让微信 macOS 客户端支持 Alfred

Alfred 作为 macOS 平台上的效率神器,Dash、Evernote等应用配合 Alfred 能够有很好的效率提升与体验,然而还是有很多应用未能支持得,比如 Telegram、微信等经常使用的一些应用。既然原生未能支持,那么自己来动手搞一个了~ 0x00 相关回顾 GitHub: WeChatTweak-macOS 微信 macOS 客户端无限多开功能实践 微信 macOS 客户端拦截撤回功能实践 以上为微信 Tweak 增强的以往的一些文章资料,可供参考。 0x01 需求 通过 Alfred 模糊搜索联系人并快速跳转到对应聊天界面 还没想到 (:з」∠) 0x02 Cocoa App 与 Alfred 的通讯 通过 Google 粗略地搜索了一遍,发现 Cocoa App 适配 Alfred 的相关开发教程并没有很多,大概有如下两种方式进行通讯: 1. AppleScript 对于 AppleScript,在 macOS 平台上是随处可见的了,文档 ScriptableCocoaApplications 中也有详细的介绍与教程。但由于需要编写 sdef(Scripting Read more…

By RSSBot, ago
Uncategorized

微信 macOS 客户端无限多开功能实践

继上一次的 微信 macOS 客户端拦截撤回功能实践 之后,有热心网友给我提了个 issue :macOS微信客户端的多开问题,才发现原来在 macOS 上微信客户端是不能多开的,于是接受挑战~ 0x00 传统多开方法 在 macOS 平台上,大部分应用都是支持多开的,比如: ⌘ + N 大法:适用于 QQ open -n /Applications/xxx.app 大法:适用于大部分的应用 那么对于微信客户端来说,以上两种方法都是无效的。其中第一种只能新建新的聊天对象),第二种直接什么反应都没有。 但是也没有难倒机智的广大网民,网上流传的 macOS 平台微信客户端多开方法有: 微信客户端 + 网页客户端(最笨的做法) open /Applications/WeChat.app/Contents/MacOS/WeChat 直接通过命令行打开微信包里的二进制文件(会弹出一个 Terminal 窗口什么鬼,而且还不能关掉=。=) 0x01 准备工作 安装各种工具 Dump 出头文件 通过 Hopper Disassembler 导出静态分析文件 … 这里就不再赘述了,参考之前的实践文。 0x02 找出入口 由上文所说到的网传多开方法得知是通过 open Read more…

By RSSBot, ago
Uncategorized

微信 iOS 客户端任意地区修改实践

最近接触 iOS 逆向开发,看了各式各样的自动抢红包 Tweak之后,于是自己也来动手实践一下 Tweak:WeChatTweak-iOS~ 0x01 准备 越狱手机一台 – 主要用于脱壳(32Bit 最佳,Hopper Disassembler能直接看伪代码) Hopper Disassembler – 反编译工具,能够将二进制执行文件反编译出伪代码 ldid – 签名工具 chisel – LLDB 增强 class-dump – 导出可执行文件的 Header dumpdecrypted – 脱壳工具 Clutch – 高级脱壳工具 theos – 越狱开发工具包,安装与配置可参考Theos 安装与配置 0x02 debugserver 与 LLDB debugserver为LLDB服务端,接收LLDB所提供的命令,并且进行相应的执行。 获取 debugserver debugserver 存放于 iPhone 设备上 /Developer/usr/bin 目录,如果没有,打开 Read more…

By RSSBot, ago
Uncategorized

Theos 安装与配置

尝试 iOS 逆向开发,由于 iOSOpenDev 已停止维护且坑太多,于是使用 theos ,网上充斥各种老旧教程,还是自己按照官方文档配置并填坑靠谱。 0x01 安装依赖 首先你要安装有 Homebrew 执行命令:brew install ldid dpkg 0x02 安装 theos 安装非常简单,安装路径随个人喜好,只需要几行命令: git clone https://github.com/theos/theos.git ~/.theos cd ~/.theos git submodule update 0x03 配置环境 添加以下配置到bashprofile 或者zshrc ,这就要看你用的哪个了。 # theos export THEOS=~/.theos export PATH=~/.theos/bin/:$PATH 修改~/.theos/makefiles/package/deb.mk: _THEOS_PLATFORM_DPKG_DEB_COMPRESSION ?= lzma # 修改前 _THEOS_PLATFORM_DPKG_DEB_COMPRESSION ?= Zgzip # 修改后 Read more…

By RSSBot, ago
Uncategorized

从 Farbox 到 Bitcron

2014 入手的第一个域名,第一个基于 WordPress 的个人 Blog 。只有三年时间,不算长,虽然写的是「 从Farbox到Bitcron 」,但更多的是折腾历史。 折腾 第一次用 WordPress,没有服务器性能概念,也不 Care 访问速度,更不知道 HTTPS 等优化知识,只知道安装配置简单,主题华丽,于是买的廉价 PHP 服务器搭建一个 WordPress,就这么折腾了一段时间…… Jekyll ,是在 GitHub 中发现的一个静态 Blog ,好处不用多说,轻量级极客范 Markdown 语法……同时也是第一次接触 Markdown 语法,被这简洁容易上手的语法吸引,于是果断抛弃了 WordPress 折腾 Jekyll 的各种配置和主题,就这么又耗了一段时间…… Hexo ,与 Jekyll 同时接触的一个静态 Blog ,对比 Jekyll Hexo 的使用略复杂(比如 Generate 什么的),因此放弃了 Hexo 的使用。 Hexo 吸引人的大概是「 NexT 」这一款主题吧,在之后使用 Farbox Read more…

By RSSBot, ago
Uncategorized

实现 macOS 锁屏的两种方式

逛了一圈发现所有的远程锁定 App 都是基于蓝牙的,因此会有距离的问题=。=,并且蓝牙需要进行配对操作……于是自己写了个基于局域网 Socket 的远程锁定 LockMyMac ,再也不用担心想起忘记锁电脑却已走太远的情况了。 CGSession 大部分应用采用的方式,锁定时会有一个 3D 翻转的效果。 缺点:解锁只能使用密码登录,无法通过 Apple watch 自动登录 - (void)lockScreen { NSTask *task = [[NSTask alloc] init]; [task setLaunchPath:@"/System/Library/CoreServices/Menu Extras/User.menu/Contents/Resources/CGSession"]; [task setArguments:@[@"-suspend"]]; [task launch]; } Keychain 比较完美的一种锁屏方式,没有 3D 翻转效果,并可以通过 Apple watch 自动登录。 缺点:无法上架 Apple Store - (void)lockScreen { NSBundle *bundle = [NSBundle bundleWithPath:@"/Applications/Utilities/Keychain Read more…

By RSSBot, ago