订阅本站
详细阅读

自己动手实现 Pokemon Go 锁区破解 —— 记一次重签名

本文只用作技术交流,切莫干出格的事情,请使用者不忘初心。 事情的起因还是昨天虾神放出了这篇文章,外加上对 Pokemon 的强烈热爱,让我第一次有动力实现一次逆向。准确地说,只是第一次重签名。因为虾神把大部分事情都做完了,留给我们动手的只剩重签名这一步了。然而虽然仅仅只有一步,也让我这个逆向新人整整折腾了 5 个小时。不过收获嘛也不小,补了之前漏下的证书的那些事而且也入门一点逆向。 一. 重签名 .dylib 首先,我们 clone 好虾神的项目。你会看到这样的目录结构: 解压缩 pokemon_unsigned.zip 文件,多出一个 Payload 文件夹: 右键 pokemongo 显示包内容: 得到如下文件: 这时候,很多人会看到网上的教程就直接开始重签 ...
详细阅读

吾月一省吾身

你还记得当初的梦想吗? 三天前,我突然这么问自己。缘于我去了一次学校,进行毕设答辩。 我突然才意识到,原来我还是个理论意义上的学生。九个月前的今天,我还在这里上学、下课、教室宿舍两点一线;如今,我竟然已经成了工作了九个月满脑子只有工作和代码的准毕业生了。 时间真是个可怕的东西。它让人麻木,磨平人的棱角,让人变成一模一样的工业品。仅仅是搬离学校这九个多月,我就已经变得这么世俗。我已经忘了当初在寝室许下的踏遍五大洲的誓言,我甚至发现和室友的微信对话也已经滑到了列表最下方。以前嘲笑工作了的人失去了年轻时的理想和抱负。现在看看自己,真是讽刺。 今早一睁眼,我发现手机上有一条未读消息,是高野君发来的微信,约我今天去滨江公园滑板。高野君是我的同校学长,读的是植物学专业。这真的是个很尴尬的专业。我和高野君在大学时期有过一段合租时光,睡一张床。他是我见过的极为少见的待人真诚做事又努力的上海人。隔着朦胧的睡眼,我艰难而又爽快地回复了一个「OK」。 时间真是个可怕的东西。不联系的这一年时间,曾经的小伙伴竟然发生了这么多事情。 ...
详细阅读

一些提高开发效率的 Category

最近工作陆续生产了一些方便开发的工具类,尽管最终没被收入使用,但不妨碍个人使用,故特此开一篇博文,也记录一些自己踩的坑。 UIGestureRecognizer+Block 简单来说,你可以这样使用 UIGestureRecognizer: [self.view addGestureRecognizer:[UITapGestureRecognizer gestureRecognizerWithActionBlock:^(id gestureRecognizer) { //... }]]; 不再需要繁琐地使用 selector 反射,也解决了代码分离的问题。 实现代码如下: static const int target_key; @implementation UIGestureRecognizer (Block) +(instancetype)nvm_gestureRecognizerWithActionBlock:(NVMGestureBlock)block { return [[self alloc]initWithActionBlock:block] ...
详细阅读

Swift 翻转二叉树

已经被玩烂的题目,纯粹好玩,直接上代码吧。 定义树: class Tree { var key: Int var leftTree: Tree? var rightTree: Tree? init(key: Int) { self.key = key } } 非递归实现 思路:广度优先。从上往下,从左往右。到达一层,从左到右翻完这一层的节点,再翻下一层。通过数组的方式实现节点的保存。O(n)。 这里一开始我踩了个坑,忘记每次把根节点移除了,切记。 func invertNonRecursive(root: Tree) { var ...
详细阅读

在 OC 中实现消息的一箭双雕

很惭愧,标题很浮夸,其实就是消息转发啦。想这个标题想了很久,本想着取个形象生动有意思的标题,不想水平不够,于是就搞了这么个奇怪的名字出来。但今天这篇博客的确有那么点一箭双雕的意思。 摆事实,讲道理。我们先看这么一个场景。我正在写一个自定义的 TableView 滚动条,可以实时显示当前 Cell 的编号,比原生的黑条更具可视性。 实现原理也很简单,KVO 监听 contentOffset 然后根据 public func indexPathForRowAtPoint(point: CGPoint) -> NSIndexPath? 返回的 indexPath 显示编号。contentOffset , contentSize 倒是可以用 KVO,可是否正在滚动、是否正在减速、 ...
详细阅读

论互联网时代的个体突围

最近这段日子,我在北京,见了好多好多的人,有新朋友,有老朋友,听了形形色色的故事。一个晚上,我约了 leon 在车库咖啡叙旧,leon 是我大学时期认识的一个创业小伙伴,就读清华。酒过三巡,leon 突然抛出一个问题:"你认为作为一个个体如何才能在竞争中突围?"我当时没有给出满意的答案,不是我说不上来,而是有太多想说以至于我不满足于只通过廉价的口头表达,我更希望用文字的形式系统性地呈现出来。回到酒店,我总觉得心里塞着好多东西驱使着我写点什么却又不知从何下笔。我冲了个澡,理了理思绪,才写出了第一段话。 每个人都想着如何突围,如何在各自的圈子里脱颖而出。我脑海中一直挥之不去的一个画面就是,一个用肉体堆积起来的人山,不断有人往上爬,不断有人掉下去,有成功登顶的人,也有迷路的人。我今天这篇文章,绝不是什么成功学或者心灵鸡汤,仅仅是基于这几天见闻的一些尝试性的思考与探索。 我们最终目的都是为了挣钱。这不是什么低级趣味,什么铜臭味的事儿。 ...
详细阅读

我的职业规划 ...1.0 版

一直以来,我都很讨厌「职业规划」这几个字。我认为人的一生不是靠规划出来的,都是走出来的。我前二十几年的人生经历深刻地教育了我一句话:「计划赶不上变化」。然而话虽如此,我们也不能一点不去计划,至少大方向还是要有的。二十多年了,你也应该知道自己擅长哪方面、喜欢哪方面了。以及一些人生观价值观的建立,你也应该知道自己未来想要成为一个什么样的人。所以我就试着给自己拟了个「职业规划」。 1.0 版。 一想到一辈子做个安逸的工程师,老了回想起来的只有整天坐在办公椅上的背影,我就感觉害怕,我觉得这不够 exciting。 来英语流利说实习,除了来学习 iOS 之外,我的另一个目的是想了解王羿(流利说CEO)的一些创业想法以及他是如何运作这家初创公司的。 当我第一次看到王羿的人生经历,我跪了。杭州理科状元——清华大学电子工程硕士——普林斯顿大学计算机博士——Google产品经理——易传媒产品总监, ...
详细阅读

YYDispatchQueuePool 源码阅读笔记

首先明确几个函数: 输入一个 NSQualityOfService qos ,输出一个 YYDispatchContext 输入当前的 context,输出一个队列 dispatch_queue_t 输入 NSQualityOfService,输出 qos_class_t 输入 NSQualityOfService,输出 dispatch_queue_priority_t 输入原始信息 const char *name,uint32_t queueCount,NSQualityOfService qos),创建一个 YYDispatchContext NSQualityOfService 有五个可选值: NSQualityOfServiceUserInteractive NSQualityOfServiceUserInitiated ...
详细阅读

《贝壳集》

之所以取名《贝壳集》,是因为我一直有很多人生感悟。这些零散的思绪就像我沿着长长的海岸线漫步时捡起的贝壳。我不知道是好事还是坏事。我也不知道这些感悟是对是错。我一直想利用我理性之外的其他天赋,证明我还可以做很多事。 2015.1.13 过度谦虚就是装逼。 2015.12.13 最近我像是变了个人,我开始研究做饭,开始洗床单,学了车,学会了修马桶,查了买房政策,了解了第一次那啥的注意事项等等等等。我开始意识到我不再是个男生了,我要开始像个男人了。 2015.12.11 如果你的生活很痛,说明你在进步。 2015.11.30 以后我的孩子一定要自己带, 人们总是搞不清楚做事的顺序。 父母若这么喜欢带小孩,可以自己再生一个。 很多人反驳我说,你要有钱才可以! 人们总是分不清做事的顺序。 我知道我辞职饿不死, ...
详细阅读

吾月一省吾身

你还记得当初的梦想吗? 三天前,我突然这么问自己。缘于我去了一次学校,进行毕设答辩。 我突然才意识到,原来我还是个理论意义上的学生。九个月前的今天,我还在这里上学、下课、教室宿舍两点一线;如今,我竟然已经成了工作了九个月满脑子只有工作和代码的准毕业生了。 时间真是个可怕的东西。它让人麻木,磨平人的棱角,让人变成一模一样的工业品。仅仅是搬离学校这九个多月,我就已经变得这么世俗。我已经忘了当初在寝室许下的踏遍五大洲的誓言,我甚至发现和室友的微信对话也已经滑到了列表最下方。以前嘲笑工作了的人失去了年轻时的理想和抱负。现在看看自己,真是讽刺。 今早一睁眼,我发现手机上有一条未读消息,是高野君发来的微信,约我今天去滨江公园滑板。高野君是我的同校学长,读的是植物学专业。这真的是个很尴尬的专业。我和高野君在大学时期有过一段合租时光,睡一张床。他是我见过的极为少见的待人真诚做事又努力的上海人。隔着朦胧的睡眼,我艰难而又爽快地回复了一个「OK」。 时间真是个可怕的东西。不联系的这一年时间,曾经的小伙伴竟然发生了这么多事情。 ...
详细阅读

Swift 翻转二叉树

已经被玩烂的题目,纯粹好玩,直接上代码吧。 定义树: class Tree { var key: Int var leftTree: Tree? var rightTree: Tree? init(key: Int) { self.key = key } } 非递归实现 思路:广度优先。从上往下,从左往右。到达一层,从左到右翻完这一层的节点,再翻下一层。通过数组的方式实现节点的保存。O(n)。 这里一开始我踩了个坑,忘记每次把根节点移除了,切记。 func invertNonRecursive(root: Tree) { var ...
详细阅读

我的职业规划 ...1.0 版

一直以来,我都很讨厌「职业规划」这几个字。我认为人的一生不是靠规划出来的,都是走出来的。我前二十几年的人生经历深刻地教育了我一句话:「计划赶不上变化」。然而话虽如此,我们也不能一点不去计划,至少大方向还是要有的。二十多年了,你也应该知道自己擅长哪方面、喜欢哪方面了。以及一些人生观价值观的建立,你也应该知道自己未来想要成为一个什么样的人。所以我就试着给自己拟了个「职业规划」。 1.0 版。 一想到一辈子做个安逸的工程师,老了回想起来的只有整天坐在办公椅上的背影,我就感觉害怕,我觉得这不够 exciting。 来英语流利说实习,除了来学习 iOS 之外,我的另一个目的是想了解王羿(流利说CEO)的一些创业想法以及他是如何运作这家初创公司的。 当我第一次看到王羿的人生经历,我跪了。杭州理科状元——清华大学电子工程硕士——普林斯顿大学计算机博士——Google产品经理——易传媒产品总监, ...
详细阅读

《贝壳集》

之所以取名《贝壳集》,是因为我一直有很多人生感悟。这些零散的思绪就像我沿着长长的海岸线漫步时捡起的贝壳。我不知道是好事还是坏事。我也不知道这些感悟是对是错。我一直想利用我理性之外的其他天赋,证明我还可以做很多事。 2015.1.13 过度谦虚就是装逼。 2015.12.13 最近我像是变了个人,我开始研究做饭,开始洗床单,学了车,学会了修马桶,查了买房政策,了解了第一次那啥的注意事项等等等等。我开始意识到我不再是个男生了,我要开始像个男人了。 2015.12.11 如果你的生活很痛,说明你在进步。 2015.11.30 以后我的孩子一定要自己带, 人们总是搞不清楚做事的顺序。 父母若这么喜欢带小孩,可以自己再生一个。 很多人反驳我说,你要有钱才可以! 人们总是分不清做事的顺序。 我知道我辞职饿不死, ...